打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
dubbo配置负载均衡、集群环境

再用dubbo作为项目架构的时候,给consumer消费者用nginx提供了负载均衡策略和集群的实现,

但是想了下,consumer再多,但是提供者还是一个,最后还不都是落到了这一个provider上面?

举个列子:

  一个饭店有1个后厨在做饭,

  前台有100个点菜的服务员,

  100个顾客来点餐,每个服务员都来告诉后厨做饭的,那么后厨...

 


Dubbo实现负载均衡,一般是对服务的提供者来实现我们的集群管理,也就是负载均衡,然后服务的消费者在请求消费的时候,通过一定的算法进行寻址(权重),可以参考下Nginx

 

Dubbo提供了四种负载均衡策略

  随机 Random LoadBalance  按照权重设置的大小,随机

  轮询 RoundRobin LoadBalance 例如:a b c  a执行完b执行然后c,然后在到a...   

  最少活跃调用数(权重)LeastActive LoadBalance
    活跃数指调用前后计数差,优先调用高的,相同活跃数的随机。使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。

  一致性Hash ConsistentHash LoadBalance
    相同参数总是发送到同一个提供者,如果这个提供者挂掉了,它会根据它的虚拟节点,平摊到其它服务者,不会引起巨大的变动

 

注意*:缺省为random 随机 (也就是说,不配置负载均衡策略的时候,默认为random)

配置负载均衡级别的方法:

可以给服务配置级别也可精确到每个方法的级别

服务端服务级别配置:

<dubbo:service interface="接口名" loadbalance="roundrobin"/>

服务端方法级别配置:

<dubbo:service interface="接口名">
  <dubbo:method name="方法名" loadbalance="均衡策略名"/>
</dubbo:service>

客户端服务级别配置:

<dubbo:reference interface="" loadbalance="roundrobin" />

客户端方法级别配置:

<dubbo:reference interface="" loadbalance="roundrobin">    <dubbo:method name="方法名" loadbalance="均衡策略明"/></dubbo:reference>

 

 

我们也可以通过可视化界面管理平台来操作

 

配置完负载均衡下面,就要来配置我们的dubbo集群了

 


 

Dubbo 集群配合

具体的做法是对服务提供者的配置文件进行修改 ,配置文件里面的application name相同,dubbo则会认为是同一集群。

部署多个集群只需要步骤:

  application name相同

<dubbo:application name="服务名"/>

  协议端口需要修改不同

<dubbo:protocol name="dubbo" port="端口需要修改,不能重复"/>

 

下面是我配置服务的案例:

需求:配置一个集群环境,两个服务提供者

 

provider01

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"       xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://code.alibabatech.com/schema/dubbo        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">    <!--  配置应用名     注意:配置集群的情况下需要同一集群的name值相同     -->    <dubbo:application name="dubbo-provider"/>    <!--  配置注册中心:        address:注册中心的ip:port        注意:如果注册中心为ZooKeeper且为集群,那就要讲集群中所有的IP:PORT添加到该属性当中-        protocol:注册中心类型      -->    <dubbo:registry address="169.254.18.25:2181,169.254.18.25:2182,169.254.18.25:2183" protocol="zookeeper"/>    <!--  配置协议与端口  -->    <dubbo:protocol name="dubbo" port="20880"/>    <dubbo:protocol name="hessian" port="20881"/>    <!--  配置注册接口        ref:引用实现类,因为我们在实现类里面加了@Service扫描注解     -->    <dubbo:service protocol="dubbo" interface="cn.arebirth.dubbo.service.UserDubboService" ref="userDubboServiceImpl" loadbalance="roundrobin"/>
<dubbo:service protocol="hessian" interface="cn.arebirth.dubbo.service.CarDubboService" ref="carDubboServiceImpl" loadbalance="roundrobin"/>
</beans>

这个服务配置完后,打包发布到服务器运行,我们会在dubbo-admin的控制台上发现这样的内容

 

 

provider02

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"       xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://code.alibabatech.com/schema/dubbo        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">    <!--  配置应用名     注意:配置集群的情况下需要同一集群的name值相同     -->    <dubbo:application name="dubbo-provider"/>    <!--  配置注册中心:        address:注册中心的ip:port        注意:如果注册中心为ZooKeeper且为集群,那就要讲集群中所有的IP:PORT添加到该属性当中-        protocol:注册中心类型      -->    <dubbo:registry address="169.254.18.25:2181,169.254.18.25:2182,169.254.18.25:2183" protocol="zookeeper"/>    <!--  配置协议与端口  -->    <dubbo:protocol name="dubbo" port="20881"/>    <dubbo:protocol name="hessian" port="20991"/>    <!--  配置注册接口        ref:引用实现类,因为我们在实现类里面加了@Service扫描注解     -->    <dubbo:service protocol="dubbo" interface="cn.arebirth.dubbo.service.UserDubboService" ref="userDubboServiceImpl" loadbalance="roundrobin"/>
<dubbo:service protocol="hessian" interface="cn.arebirth.dubbo.service.CarDubboService" ref="carDubboServiceImpl" loadbalance="roundrobin"/>
</beans>

我们在把provider02打包发布到服务器上运行,我们会看到我们的服务均已注册成功完毕,

此时也意味着集群搭建完毕了

 

 

 

仔细观察我们上边的配置文件不难发现,其实就是一个端口不同,其余都是相同的,

 

ps:

  搭建集群环境注意:

    同一集群环境中应用名必须一致

    端口必须不同

 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
零基础都秒懂:手把手教你搭建一套微服务框架!
【JAVA秒会技术之Dubbo入门】Dubbo在电商开发中的应用
『高级篇』docker之课程管理dubbo入门操练(14) – IT人故事会
Dubbo基本用法
Dubbo_RPC_Features
dubbo 配置文件详解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服