1.Dubbo框架介绍
1.1 Dubbo框架通讯的方式
说明:只要使用Dubbo框架 ,在内部使用了dubbo协议进行通讯,其中的IP地址是动态生成的.并且端口号是访问服务的唯一标识信息.
1.2 ZK存储数据的结构
说明:zk中的数据的存储的方式是树形结构的.一般三级.
1.3 关于负载均衡的说明
1.3.1 集中式的负载均衡
说明:由于nginx处于负载均衡的中心,所以什么样的服务都会经过nginx之后转向到不同的服务器中. 所以会造成nginx的负载压力很大.
nginx的主要的作用是反向代理.
1.3.2 客户端的负载均衡
说明:在微服务调用过程中每个服务的消费者都可以在客户端实现负载均衡的操作,在每次请求之前通过服务列表获取将要访问的服务信息.实现了压力私有化.
1.3.3 Dubbo负载均衡的方式
名称都是类名的前半部分都小写即可.
1.RandomLoadBalance 随机负载均衡 语法: random 默认的
2.RoundRobinLoadBalance 轮询策略 语法: roundrobin
3.ConsistentHashLoadBalance 一致性hash算法 将消费者与服务提供者绑定 语法: consistenthash
4.LeastActiveLoadBalance 挑选负载压力小的服务器进行访问 语法: leastactive
2 京淘项目Dubbo改造
2.1 改造计划
1.jt-common充当接口项目
2.jt-sso 充当用户的提供者 服务端口号20880 服务名称 provider-sso 接口DubboUserService
3.jt-web 充当用户的消费者
2.2 导入Dobbu jar包
2.3 编辑Dubbo接口
说明:在jt-common中添加Dubbo的业务接口
2.4 编辑jt-sso的服务提供者
2.4.1 编辑Service实现类
2.4.2 编辑YML配置文件
2.5 编辑服务消费者
2.5.1 编辑UserController
注入UserService注解
2.5.2 编辑YML配置文件
3 用户模块实现
3.1 用户注册
3.1.1 页面分析
3.1.2 页面JS分析
说明:根据页面url地址 查找页面JS的位置
3.1.3 编辑UserController
3.1.4 编辑UserService
3.1.4 关于POJO转化异常说明
报错说明: 由于SpringBoot配置了热部署的工具,当代码进行修改之后,程序就会重新启动. 在重启的过程中程序又会再次链接zookeeper注册中心.由于zk的心跳检测机制存在超时时间,可能在zk中会出现2条一模一样的服务的提供者的信息.
解决方案: 需要手动的重启服务器即可.
3.2 单点登录实现策略
3.2.1 需求说明
要求用户只需要登录一次,那么就可以访问其他的认证系统,无需用户再次登录.
如果采用如下的配置,则必然会出现用户频繁登录的现象.
3.2.2 SSO介绍
单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统。这种方式减少了由登录产生的时间消耗,辅助了用户管理,是目前比较流行的 一种登录方式
3.2.3 单点登录实现策略
步骤:
1.当用户输入用户名和密码时需要将数据传递给jt-web服务器进行登录操作.
2.jt-web服务器需要将数据传到jt-sso服务器中进行数据的校验.
3.jt-sso根据username/password查询数据库校验数据是否有效.
4.如果用户名和密码正确则将数据经过处理之后保存到redis中 KEY=UUID(每次生成的都不一样) VALUE=“userJSON”
5.如果用户写入redis成功,之后需要将用户的登录的凭证返回给客户端.
6.JT-WEB服务器将获取的TICKET信息保存到客户端的Cookie中,方便下次使用. 并且要求cookie共享的.
3.3 用户登录具体实现
3.3.1 用户登录页面分析
1.url分析
2.参数分析
3.页面JS分析
3.3.2 编辑UserController
3.3.3 编辑UserServiceImpl
3.3.4 数据校验
3.4 用户登录回显
3.4.1 用户信息回显说明
当用户登录成功之后会生成COOKIE信息.根据cookie获取TICKET信息,之后根据ticket获取user信息,.之后在首页展现用户名称即可.
3.4.2 页面分析
1).页面url分析
2).页面JS分析