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

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

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


一、环境准备


binghe01(192.168.1.121)

binghe02(192.168.1.122)


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服务器同时启动这两个服务


[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管理控制台中可以查看到两台机器的服务都注册成功


m.jpg


这里我可以查询交易信息


p.jpg


我先关掉121的交易服务


[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的交易服务


[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]# 


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


00.jpg


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


[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]# 


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

标签:

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


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


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


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


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


<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


<dubbo:service retries="2" />
或:
<dubbo:reference retries="2" />
或:
<dubbo:reference>
<dubbo:method name="findFoo" retries="2" /> </dubbo:reference>


2、Failfast Cluster

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


<dubbo:service cluster="failfast" />
或:
<dubbo:reference cluster="failfast" />


3.Failsafe Cluster

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



dubbo:service cluster="failsafe"/>或者
<dubbo:reference cluster="failsafe"/>


4.Failback Cluster

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


<dubbo:service cluster="failback"/>
<dubbo:reference cluster="failback"/>


5.Forking Cluster

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


<dubbo:service cluster="forking">
<dubbo:reference cluster="forking"/>


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


hhhh.jpg

相关文章
|
29天前
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
69 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
|
3月前
|
JSON Dubbo Java
【Dubbo协议指南】揭秘高性能服务通信,选择最佳协议的终极攻略!
【8月更文挑战第24天】在分布式服务架构中,Apache Dubbo作为一款高性能的Java RPC框架,支持多种通信协议,包括Dubbo协议、HTTP协议及Hessian协议等。Dubbo协议是默认选择,采用NIO异步通讯,适用于高要求的内部服务通信。HTTP协议通用性强,利于跨语言调用;Hessian协议则在数据传输效率上有优势。选择合适协议需综合考虑性能需求、序列化方式、网络环境及安全性等因素。通过合理配置,可实现服务性能最优化及系统可靠性提升。
53 3
|
3月前
|
缓存 Dubbo Java
Dubbo服务消费者启动与订阅原理
该文章主要介绍了Dubbo服务消费者启动与订阅的原理,包括服务消费者的启动时机、启动过程以及订阅和感知最新提供者信息的方式。
Dubbo服务消费者启动与订阅原理
|
3月前
|
Dubbo 网络协议 Java
深入掌握Dubbo服务提供者发布与注册原理
该文章主要介绍了Dubbo服务提供者发布与注册的原理,包括服务发布的流程、多协议发布、构建Invoker、注册到注册中心等过程。
深入掌握Dubbo服务提供者发布与注册原理
|
3月前
|
负载均衡 Dubbo Java
Dubbo服务Spi机制和原理
该文章主要介绍了Dubbo中的SPI(Service Provider Interface)机制和原理,包括SPI的基本概念、Dubbo中的SPI分类以及SPI机制的实现细节。
Dubbo服务Spi机制和原理
|
3月前
|
C# 开发者 Windows
勇敢迈出第一步:手把手教你如何在WPF开源项目中贡献你的第一行代码,从选择项目到提交PR的全过程解析与实战技巧分享
【8月更文挑战第31天】本文指导您如何在Windows Presentation Foundation(WPF)相关的开源项目中贡献代码。无论您是初学者还是有经验的开发者,参与这类项目都能加深对WPF框架的理解并拓展职业履历。文章推荐了一些适合入门的项目如MvvmLight和MahApps.Metro,并详细介绍了从选择项目、设置开发环境到提交代码的全过程。通过具体示例,如添加按钮点击事件处理程序,帮助您迈出第一步。此外,还强调了提交Pull Request时保持专业沟通的重要性。参与开源不仅能提升技能,还能促进社区交流。
44 0
|
3月前
|
缓存 负载均衡 Dubbo
Dubbo服务集群容错原理(重要)
该文章主要介绍了Dubbo服务集群容错的原理,包括集群容错技术的概念、Dubbo中使用的集群容错技术种类及其原理。
|
6月前
|
Dubbo Java 应用服务中间件
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
|
21天前
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo:微服务通信的高效解决方案
【10月更文挑战第15天】随着信息技术的发展,微服务架构成为企业应用开发的主流。Spring Cloud Dubbo结合了Dubbo的高性能RPC和Spring Cloud的生态系统,提供高效、稳定的微服务通信解决方案。它支持多种通信协议,具备服务注册与发现、负载均衡及容错机制,简化了服务调用的复杂性,使开发者能更专注于业务逻辑的实现。
45 2
|
3月前
|
Dubbo Java 应用服务中间件
💥Spring Cloud Dubbo火爆来袭!微服务通信的终极利器,你知道它有多强大吗?🔥
【8月更文挑战第29天】随着信息技术的发展,微服务架构成为企业应用开发的主流模式,而高效的微服务通信至关重要。Spring Cloud Dubbo通过整合Dubbo与Spring Cloud的优势,提供高性能RPC通信及丰富的生态支持,包括服务注册与发现、负载均衡和容错机制等,简化了服务调用管理并支持多种通信协议,提升了系统的可伸缩性和稳定性,成为微服务通信领域的优选方案。开发者仅需关注业务逻辑,而无需过多关心底层通信细节,使得Spring Cloud Dubbo在未来微服务开发中将更加受到青睐。
82 0
下一篇
无影云桌面