Dubbo的负载均衡

springboot+dubbo+zookeeper时,

如果有两个服务提供者,想要实现负载均衡时:

provider1的application.properties配置:

 1 server.port=8081
 2 server.context-path=/
 3 
 4 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
 5 spring.datasource.url=jdbc:mysql://localhost:3306/teach?useSSL=false
 6 spring.datasource.username=root
 7 spring.datasource.password=root
 8 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
 9 
10 mybatis.type-aliases-package=com.aaa.lee.dubbo.model
11 mybatis.mapper-locations=classpath:mapper/*Mapper.xml
12 
13 # dubbo的配置
14 # 配置dubbo的应用名(在dubbo的admin项目,可以非常直观的看出来该项目是一个什么项目)
15 # dubbo-admin--->生产者/消费者-->application name-->需要根据当前项目所提供的功能进行命名
16 dubbo.application.name=user-provider
17 # protocol:协议
18 # 配置该项目远程调用的时候所使用的协议-->dubbo(tcp,udp....)
19 # 在之前所有的项目使用的协议都是http
20 dubbo.protocol.name=dubbo
21 # 配置dubbo所必须使用的通讯端口号(21881,21880,20881,20880....)
22 # 在dubbo的官网中所提供的项目demo,就使用的是以上端口号
23 dubbo.protocol.port=20881
24 # zookeeper的通讯地址
25 # dubbo配置zookeeper是因为dubbo框架集成zookeeper
26 # provider最终需要向zookeeper注册服务,也就是说必须要让provider项目知道zookeeper是哪一个!
27 dubbo.registry.address=zookeeper://192.168.23.160:2181
28 # provider项目必须要让zookeeper知道具体是哪一个类/哪一些类需要注册进zookeeper中
29 # 也就是说必须要让zookeeper知道所注册进注册中心的实现类是谁
30 # dubbo中也提供了包的扫描
31 # dubbo.扫描.基础包(该包以及所有的子包中的所有类都会注册进zookeeper)
32 dubbo.scan.base-packages=com.aaa.lee.dubbo.service.impl

provider2的application.properties配置:

 1 server.port=8083
 2 server.context-path=/
 3 
 4 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
 5 spring.datasource.url=jdbc:mysql://localhost:3306/teach?useSSL=false
 6 spring.datasource.username=root
 7 spring.datasource.password=root
 8 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
 9 
10 mybatis.type-aliases-package=com.aaa.lee.dubbo.model
11 mybatis.mapper-locations=classpath:mapper/*Mapper.xml
12 
13 # dubbo的配置
14 # 配置dubbo的应用名(在dubbo的admin项目,可以非常直观的看出来该项目是一个什么项目)
15 # dubbo-admin--->生产者/消费者-->application name-->需要根据当前项目所提供的功能进行命名
16 dubbo.application.name=user-provider
17 # protocol:协议
18 # 配置该项目远程调用的时候所使用的协议-->dubbo(tcp,udp....)
19 # 在之前所有的项目使用的协议都是http
20 dubbo.protocol.name=dubbo
21 # 配置dubbo所必须使用的通讯端口号(21881,21880,20881,20880....)
22 # 在dubbo的官网中所提供的项目demo,就使用的是以上端口号
23 dubbo.protocol.port=20882
24 # zookeeper的通讯地址
25 # dubbo配置zookeeper是因为dubbo框架集成zookeeper
26 # provider最终需要向zookeeper注册服务,也就是说必须要让provider项目知道zookeeper是哪一个!
27 dubbo.registry.address=zookeeper://192.168.23.160:2181
28 # provider项目必须要让zookeeper知道具体是哪一个类/哪一些类需要注册进zookeeper中
29 # 也就是说必须要让zookeeper知道所注册进注册中心的实现类是谁
30 # dubbo中也提供了包的扫描
31 # dubbo.扫描.基础包(该包以及所有的子包中的所有类都会注册进zookeeper)
32 dubbo.scan.base-packages=com.aaa.lee.dubbo.service.impl

1、当使用dubbo的负载均衡时,两个provider的dubbo的端口号绝对不能一样;

2、把所有属于同一类型的dubbo-provider项目标识给zookeeper,使用的是dubbo.application.name来进行标识,

也就是说所有同一类型的provider的application.name必须要保持一致,如果provider的name不保持一致,那么不会形成负载均衡。

乾坤未定,你我皆是黑马
原文地址:https://www.cnblogs.com/liuqijia/p/11493879.html