前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dubbo服务治理篇——如何实现Dubbo服务的集群

Dubbo服务治理篇——如何实现Dubbo服务的集群

作者头像
冰河
发布2020-10-29 15:34:14
3970
发布2020-10-29 15:34:14
举报
文章被收录于专栏:冰河技术

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

一、环境准备

binghe01(192.168.1.121)

binghe02(192.168.1.122)

代码语言:javascript
复制
Connecting to 192.168.1.121:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Last login: Tue May 16 13:41:09 2017 from 192.168.1.100
[root@binghe01 ~]#

Connecting to 192.168.1.122:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Tue May 16 23:42:54 2017 from 192.168.1.100
[root@binghe02 ~]# 

二、Dubbo服务集群

用户服务:pay-service-user 交易服务:pay-service-trade 我在121,122服务器同时启动这两个服务

代码语言:javascript
复制
[root@binghe01 user]# ./service-user.sh start
=== start pay-service-user
[root@binghe01 user]# cd ..
[root@binghe01 service]# cd trade/
[root@binghe01 trade]# ./service-trade.sh start
=== start pay-service-trade

[root@binghe02 user]# ./service-user.sh start
=== start pay-service-user
[root@binghe02 user]# cd ..
[root@binghe02 service]# cd trade/
[root@binghe02 trade]# ./service-trade.sh start
=== start pay-service-trade

在DubboAdmin管理控制台中可以查看到两台机器的服务都注册成功

这里我可以查询交易信息

我先关掉121的交易服务

代码语言:javascript
复制
[root@binghe01 trade]# ./service-trade.sh stop
=== stop pay-service-trade
[root@binghe01 trade]# ps -ef | grep pay
root       2803      1  8 06:33 pts/0    00:00:50 /usr/jdk/jre/bin/Java -Xms128m -Xmx512m -jar pay-service-user.jar
root       2980   2705  0 06:43 pts/0    00:00:00 grep pay
[root@binghe01 trade]#

这里我依旧可以查询交易信息 我再关掉122的交易服务

代码语言:javascript
复制
[root@binghe02 trade]# ./service-trade.sh stop
=== stop pay-service-trade
[root@binghe02 trade]# ps -ef | grep pay
root       2639      1  7 06:34 pts/1    00:00:51 /usr/jdk/jre/bin/java -Xms128m -Xmx512m -jar pay-service-user.jar
root       2816   2592  0 06:46 pts/1    00:00:00 grep pay
[root@binghe02 trade]# 

这里我查询交易信息就会出现异常

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

代码语言:javascript
复制
[root@binghe01 trade]# ./service-trade.sh start
=== start pay-service-trade
[root@binghe01 trade]#

三、Dubbo服务容错配置-集群容错模式

标签: <dubbo:service>提供方配置标签,粒度粗

代码语言:javascript
复制
例:<!-- 当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值 -->
<dubbo:provider timeout="30000" threadpool="fixed" threads="100" accepts="1000" />

<dubbo:service>:服务发布标签,例,在这个上配置容错,粒度细

代码语言:javascript
复制
<!-- 提供服务接口 -->
<dubbo:service retries="0" interface="io.binghe.pay.facade.trade.service.PaymentFacade" ref="paymentFacade" />
<dubbo:consumer>消费端标签,应用单个消费端配置,粒度粗
例:<dubbo:consumer timeout="8000" retries="0" />

在这个上配置容错,粒度细

代码语言:javascript
复制
<dubbo:reference >
<!-- 调用账户服务 -->
<dubbo:reference interface="io.binghe.account.service.AccountTransactionFacade" id="accountTransactionFacade" check="false" />

属性:cluster 类型:string

是否必填:可选 缺省值:failover

作用:性能调优 集群方式:可选:failover/failfast/failsafe/failback/forking

1、Failover Cluster

代码语言:javascript
复制
<dubbo:service retries="2" />
或:
<dubbo:reference retries="2" />
或:
<dubbo:reference>
<dubbo:method name="findFoo" retries="2" /> </dubbo:reference>

2、Failfast Cluster

快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。

代码语言:javascript
复制
<dubbo:service cluster="failfast" />
或:
<dubbo:reference cluster="failfast" />

3.Failsafe Cluster

失败安全,出现异常时,直接忽略,通常 用于写入审计日志等操作

代码语言:javascript
复制
<dubbo:service cluster="failsafe"/>或者
<dubbo:reference cluster="failsafe"/>

4.Failback Cluster

失败自动恢复,后台记录失败请求,定时重发,通常用于消息通知操作。

代码语言:javascript
复制
<dubbo:service cluster="failback"/>
或
<dubbo:reference cluster="failback"/>

5.Forking Cluster

并行调用多个服务,只要一个成功即返回,通常用于实时要求较高的读操作,但需要浪费更多的服务器资源。可通过forks="2"来设置最大并发数。

代码语言:javascript
复制
<dubbo:service cluster="forking">
或
<dubbo:reference cluster="forking"/>

在实际项目中,生产环境中,我们用failover模式时可以这样设计服务接口,遵循接口隔离原则 ,查询服务与写操作服务隔离,查询接口我们可以配置retries="2"。在写操作接口我们配置retries="0" ,如果不设置为0, 超时,会重新连接,会出现重复写的情况,所以使用failover模式时,我们要进行读写操作接口隔离,且写操作接口retries=0

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 冰河技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档