京淘项目学习14

1. Zookeeper集群搭建

说明: Zookeeper集群中leader负责监控集群状态,follower主要负责客户端链接获取服务列表信息.同时参与投票.

1.1 测试Zookeeper高可用

选举原则: myid最大值优先

2. Dubbo

Dubbo是阿里巴巴公司开源的一款高性能轻量级的开源Java 微服务(SOA思想)框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。
Dubbo提供了六大核心能力:面向接口代理的高性能RPC调用,智能容错和负载均衡,服务自动注册和发现,高度可扩展能力,运行期流量调度,可视化的服务治理与运维。

2.1 入门测试案例

2.1.1 导入项目包,并加入Maven project

在这里插入图片描述

2.2 关于Dubbo框架环境配置

2.2.1 定义中立接口

在这里插入图片描述

2.2.2 定义两个服务生产者

在这里插入图片描述
在这里插入图片描述

2.2.3 关键yml配置文件

#关于Dubbo配置   
dubbo:
  scan:
    basePackages: com.jt    #指定dubbo的包路径
  application:              #应用名称
    name: provider-user     #一个接口对应一个服务名称
  registry:
    address: zookeeper://192.168.126.129:2181?backup=192.168.126.129:2182,192.168.126.129:2183
  protocol:  #指定协议
    name: dubbo  #使用dubbo协议(tcp-ip)  web-controller直接调用sso-Service
    port: 20880  #每一个服务都有自己特定的端口 不能重复.

2.2.4 定义服务消费者

在这里插入图片描述

2.2.5 定义服务生产者yml配置文件

server:
  port: 9001
dubbo:
  scan:
    basePackages: com.jt
  application:
    name: consumer-user   #定义消费者名称
  registry:               #注册中心地址
    address: zookeeper://192.168.126.129:2181?backup=192.168.126.129:2182,192.168.126.129:2183

2.3 案例测试

在这里插入图片描述

3. 关于Dubbo负载均衡说明

3.1 集中式负载均衡

用户不清楚自己应该访问哪台服务器,只有经过负载均衡处理之后才能被转向
典例: nginx
目的: 主要用于访问首页

3.2 客户端负载均衡

由客户端自己进行负载均衡,客户端根据负载均衡结果自行访问服务器
目的: 主要用于访问业务服务器
典例: Dubbo

3.3 Dubbo负载均衡种类

由于Dubbo框架是客户端负载均衡机制,所以具体配置在客户端.

3.3.1 一致性hash算法

类名: ConsistentHashLoadBalance
作用: 将客户端与服务器绑定,通过一致性hash算法绑定具体服务器
在这里插入图片描述

3.3.2 最少访问

类名: LeastactiveLoadBalance
作用: 对服务器筛选,寻找最少访问压力的服务器进行访问
在这里插入图片描述

3.3.3 随机算法

类名: RandomLoadBalance
作用: 随机实现负载均衡
在这里插入图片描述

3.3.4 轮询机制

类名: RoundRobinLoadBalance
作用: 按照服务器顺序依次访问
在这里插入图片描述

4. 整合到京淘项目

4.1 创建接口类

在这里插入图片描述

4.3 定义服务接口

在这里插入图片描述

4.4 编辑yml文件

server:
  port: 8091
  servlet:
    context-path: /
spring:
  datasource:
    #url: jdbc:mysql://192.168.126.129:8066/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: root

  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp
  main:
    banner-mode: off

#mybatis-plush配置
mybatis-plus:
  type-aliases-package: com.jt.pojo
  mapper-locations: classpath:/mybatis/mappers/*.xml
  configuration:
    map-underscore-to-camel-case: true

logging:
  level: 
    com.jt.mapper: debug

#关于Dubbo配置
dubbo:
  scan:
    basePackages: com.jt    #指定dubbo的包路径
  application:              #应用名称
    name: provider-item     #一个接口对应一个服务名称
  registry:
    address: zookeeper://192.168.126.129:2181?backup=192.168.126.129:2182,192.168.126.129:2183
  protocol:  #指定协议
    name: dubbo  #使用dubbo协议(tcp-ip)  web-controller直接调用sso-Service
    port: 20880  #每一个服务都有自己特定的端口 不能重复.

4.4 定义消费者

4.4.1 编辑ItemController

在这里插入图片描述

4.4.2 编辑yml配置文件

server:
  port: 8092    
spring:     #定义springmvc视图解析器
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp

dubbo:
  scan:
    basePackages: com.jt
  application:
    name: consumer-web   #定义消费者名称
  registry:               #注册中心地址
    address: zookeeper://192.168.126.129:2181?backup=192.168.126.129:2182,192.168.126.129:2183

5. 实现商品数据的展现

5.1 实现商品页面的跳转

5.1.2 编辑ItemController

@Controller //跳转商品页面
public class ItemController {

    //使用rcp接口
    @Reference(check = false)//check = false,表示当先启动消费者时暂时不去校验生产者是否启动
    private DubboItemService itemService;

    /**
     *  实现商品页面跳转
     *  url: http://www.jt.com/items/562379.html
     *  参数: 562379  商品id
     *  返回值:    String: item
     *  页面取值:   ${item.title}
     *             ${itemDesc.itemDesc}
     */
    @RequestMapping("/items/{itemId}")
    public String findItemById(@PathVariable Long itemId, Model model){
        Item item = itemService.findItemById(itemId);
        ItemDesc itemDesc = itemService.findItemDescById(itemId);
        model.addAttribute("item", item);
        model.addAttribute("itemDesc", itemDesc);
        return "item";
    }


}

5.1.3 编辑ItemService

@Service(timeout = 3000)
public class DubboItemServiceImpl implements DubboItemService {
    @Autowired
    private ItemMapper itemMapper;

    @Autowired
    private ItemDescMapper itemDescMapper;

    @Override
    public Item findItemById(Long itemId) {

        return itemMapper.selectById(itemId);
    }

    @Override
    public ItemDesc findItemDescById(Long itemId) {
        return itemDescMapper.selectById(itemId);
    }
}

5.1.4 商品页面展现

在这里插入图片描述

6. 实现用户注册

6.1 JT-SSO项目改造

6.1.1 编辑业务接口

在这里插入图片描述

6.1.2 编辑yml配置文件

在这里插入图片描述

6.2 注册页面实现

6.2.1 页面分析

在这里插入图片描述

6.2.2 页面JS分析

在这里插入图片描述

6.2.3 编辑UserController

在这里插入图片描述

6.2.4 编辑UserService

在这里插入图片描述

6.2.5 测试

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Solider

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值