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不保持一致,那么不會形成負載均衡。