Dubbo之——Dubbo服务集群

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/72354649

 集群的目的:实现高可用,容错功能,集群的服务器不要放在一台物理机,要分散节点,才能实现高可用,高容错性能,一台提供者挂了,还有其他提供者,保证系统正常、稳定运行。
一、环境准备
edu-provider-01(192.168.1.121)
edu-provider-02(192.168.1.122)

[plain]  view plain  copy
  1. Connecting to 192.168.1.121:22...  
  2. Connection established.  
  3. To escape to local shell, press 'Ctrl+Alt+]'.  
  4. Last login: Tue May 16 13:41:09 2017 from 192.168.1.100  
  5. [root@edu-provider-01 ~]#   
  6.   
  7. Connecting to 192.168.1.122:22...  
  8. Connection established.  
  9. To escape to local shell, press 'Ctrl+Alt+]'.  
  10.   
  11. Last login: Tue May 16 23:42:54 2017 from 192.168.1.100  
  12. [root@edu-provider-02 ~]#   
二、Dubbo服务集群
用户服务:pay-service-user
交易服务:pay-service-trade
我在121,122服务器同时启动这两个服务
[plain]  view plain  copy
  1. [root@edu-provider-01 user]# ./service-user.sh start  
  2. === start pay-service-user  
  3. [root@edu-provider-01 user]# cd ..  
  4. [root@edu-provider-01 service]# cd trade/  
  5. [root@edu-provider-01 trade]# ./service-trade.sh start  
  6. === start pay-service-trade  
  7.   
  8. [root@edu-provider-02 user]# ./service-user.sh start  
  9. === start pay-service-user  
  10. [root@edu-provider-02 user]# cd ..  
  11. [root@edu-provider-02 service]# cd trade/  
  12. [root@edu-provider-02 trade]# ./service-trade.sh start  
  13. === start pay-service-trade  
在DubboAdmin管理控制台中可以查看到两台机器的服务都注册成功

这里我可以查询交易信息


我先关掉121的交易服务

[plain]  view plain  copy
  1. [root@edu-provider-01 trade]# ./service-trade.sh stop  
  2. === stop pay-service-trade  
  3. [root@edu-provider-01 trade]# ps -ef | grep pay  
  4. root       2803      1  8 06:33 pts/0    00:00:50 /usr/jdk/jre/bin/Java -Xms128m -Xmx512m -jar pay-service-user.jar  
  5. root       2980   2705  0 06:43 pts/0    00:00:00 grep pay  
  6. [root@edu-provider-01 trade]#   
这里我依旧可以查询交易信息
我再关掉122的交易服务
[plain]  view plain  copy
  1. [root@edu-provider-02 trade]# ./service-trade.sh stop  
  2. === stop pay-service-trade  
  3. [root@edu-provider-02 trade]# ps -ef | grep pay  
  4. root       2639      1  7 06:34 pts/1    00:00:51 /usr/jdk/jre/bin/java -Xms128m -Xmx512m -jar pay-service-user.jar  
  5. root       2816   2592  0 06:46 pts/1    00:00:00 grep pay  
  6. [root@edu-provider-02 trade]#   
这里我查询交易信息就会出现异常

我在121服务上再开启交易服务,又可以查询交易信息了

[plain]  view plain  copy
  1. [root@edu-provider-01 trade]# ./service-trade.sh start  
  2. === start pay-service-trade  
  3. [root@edu-provider-01 trade]#   
三、Dubbo服务容错配置-集群容错模式
标签:
<dubbo:service>提供方配置标签,粒度粗

[html]  view plain  copy
  1. 例:<!-- 当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值 -->  
  2. <dubbo:provider timeout="30000" threadpool="fixed" threads="100" accepts="1000" />  
<dubbo:service>:服务发布标签,例,在这个上配置容错,粒度细
[plain]  view plain  copy
  1. <!-- 提供服务接口 -->  
  2. <dubbo:service retries="0" interface="edu.pay.facade.trade.service.PaymentFacade" ref="paymentFacade" />  
  3. <dubbo:consumer>消费端标签,应用单个消费端配置,粒度粗  
  4. 例:<dubbo:consumer timeout="8000" retries="0" />  
在这个上配置容错,粒度细
[plain]  view plain  copy
  1. <dubbo:reference >  
  2. <!-- 调用账户服务 -->  
  3. <dubbo:reference interface="edu.pay.facade.account.service.AccountTransactionFacade" id="accountTransactionFacade" check="false" />  
属性:cluster 类型:string
是否必填:可选 缺省值:failover
作用:性能调优 集群方式:可选:failover/failfast/failsafe/failback/forking
1、Failover Cluster
失败自动切换,当出现失败,重试其它服务器。(缺省) 通常用于读操作,但重试会带来更长延迟。 可通过retries="2"来设置重试次数(不含第一次)。

[plain]  view plain  copy
  1. <dubbo:service retries="2" />  
  2. 或:  
  3. <dubbo:reference retries="2" />  
  4. 或:  
  5. <dubbo:reference>  
  6. <dubbo:method name="findFoo" retries="2" /> </dubbo:reference>  
2、Failfast Cluster
快速失败,只发起一次调用,失败立即报错。 通常用于非幂等性的写操作,比如新增记录。
[plain]  view plain  copy
  1. <dubbo:service cluster="failfast" />  
  2. 或:  
  3. <dubbo:reference cluster="failfast" />  
3.Failsafe Cluster
失败安全,出现异常时,直接忽略,通常 用于写入审计日志等操作
[plain]  view plain  copy
  1. <dubbo:service cluster="failsafe"/>或者  
  2. <dubbo:reference cluster="failsafe"/>  
4.Failback Cluster
失败自动恢复,后台记录失败请求,定时重发,通常用于消息通知操作。
[plain]  view plain  copy
  1. <dubbo:service cluster="failback"/>  
  2. 或  
  3. <dubbo:reference cluster="failback"/>  
5.Forking Cluster
并行调用多个服务,只要一个成功即返回,通常用于实时要求较高的读操作,但需要浪费更多的服务器资源。可通过forks="2"来设置最大并发数。
[plain]  view plain  copy
  1. <dubbo:service cluster="forking">  
  2. 或  
  3. <dubbo:reference cluster="forking"/>  
在实际项目中,生产环境中,我们用failover模式时可以这样设计服务接口,遵循接口隔离原则 ,查询服务与写操作服务隔离,
查询接口我们可以配置retries="2" 
在写操作接口我们配置retries="0" ,如果不设置为0, 超时,会重新连接,会出现重复写的情况,所以使用failover模式时,我们要进行读写操作接口隔离,且写操作接口retries=0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值