Dubbo高级篇_05_Dubbo服务集群

原创 2016年04月12日 22:03:54

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

一、环境准备

edu-provider-01(192.168.1.121)

edu-provider-02(192.168.1.122)

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


Last login: Sat Apr  9 04:28:07 2016 from 192.168.1.51
[root@edu-provider-01 ~]# 


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


Last login: Sat Apr  9 04:28:07 2016 from 192.168.1.51
[root@edu-provider-02 ~]# 


二、Dubbo服务集群

用户服务:pay-service-user

交易服务:pay-service-trade


我在121,122服务器同时启动这两个服务

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


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

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


这里我可以查询交易信息


我先关掉121的交易服务

[root@edu-provider-01 trade]# ./service-trade.sh stop
=== stop pay-service-trade

[root@edu-provider-01 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@edu-provider-01 trade]# 

这里我依旧可以查询交易信息

我再关掉122的交易服务

[root@edu-provider-02 trade]# ./service-trade.sh stop
=== stop pay-service-trade

[root@edu-provider-02 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@edu-provider-02 trade]# 

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


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

[root@edu-provider-01 trade]# ./service-trade.sh start
=== start pay-service-trade
[root@edu-provider-01 trade]# 


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

标签:

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

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


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

<!-- 提供服务接口 -->
<dubbo:service retries="0" interface="edu.pay.facade.trade.service.PaymentFacade" ref="paymentFacade" />


<dubbo:consumer>消费端标签,应用单个消费端配置,粒度粗

例:<dubbo:consumer timeout="8000" retries="0" />


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

<dubbo:reference >

<!-- 调用账户服务 -->
<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"来设置重试次数(不含第一次)。
<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

标签

标签



版权声明:本文为博主原创文章,未经博主允许不得转载。

Dubbo集群示例

1.   概述   Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案 Dubbo是阿里巴巴SOA服务化治理方案的核心框...

dubbo工作原理,集群容错,负载均衡

dubbo的构架,调用关系,集群容错,负载均衡
  • hll814
  • hll814
  • 2016年03月15日 00:59
  • 5449

dubbo—集群和访问方式

dubbo如何集群,同一个服务部署多台机或者同一台机不同端口在注册中心注册。客户端就通过访问规则访问集群内的不同节点的服务。 集群策略 Failover Cluster :失败自动切换,当...
  • lius007
  • lius007
  • 2016年07月18日 12:24
  • 1096

dubbo服务端集群

dubbo如何集群,同一个服务部署多台机或者同一台机不同端口在注册中心注册。客户端就通过访问规则访问集群内的不同节点的服务。 集群策略 Failover Cluster :失败自动...

14. Dubbo原理解析-集群&容错之Cluster

Dubbo作为一个分布式的服务治理框架,提供了集群部署,路由,软负载均衡及容错机制   下图描述了dubbo调用过程中的对于集群,负载等的调用关系。   Cluster 将Directory中的多个...

Windows下实现Dubbo的Zookeeper集群

简介          Zookeeper作为Dubbo服务的注册中心,在生产环境如果单节点将会降低系统负载,因为Dubbo所有消费者服务都是通过Zookeeper发现服务并调用,一旦单节点Zooke...

Java集群优化——dubbo+zookeeper构建高可用分布式集群

互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的。现在核心业务抽取出来,作为独立的服务,使...
  • xvshu
  • xvshu
  • 2015年08月14日 21:28
  • 32877

dubbo 学习(4) 集群容错模式和负载均衡模式

一、集群模式 调用服务提供者的时候,dubbo提供了各种容错模式。保证获取到可用的服务。 各节点关系: 这里的Invoker是Provider的一个可调用Service的...

Dubbo入门---搭建一个最简单的Demo框架

Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起。 单一应用框架(ORM)  当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,...

[dubbo实战] dubbo+zookeeper伪集群搭建

zookeeper作为注册中心,服务器和客户端都要访问,如果有大量的并发,肯定会有等待。所以可以通过zookeeper集群解决。 一、为什么需要zookeeper呢?    大部分分布式应用需要一个主...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Dubbo高级篇_05_Dubbo服务集群
举报原因:
原因补充:

(最多只允许输入30个字)