1. 程式人生 > >Dubbo之——Dubbo服務叢集

Dubbo之——Dubbo服務叢集

 叢集的目的:實現高可用,容錯功能,叢集的伺服器不要放在一臺物理機,要分散節點,才能實現高可用,高容錯效能,一臺提供者掛了,還有其他提供者,保證系統正常、穩定執行。
一、環境準備
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: Tue May 16 13:41:09 2017 from 192.168.1.100
[
[email protected]
~]# 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 [[email protected] ~]#
二、Dubbo服務叢集
使用者服務:pay-service-user
交易服務:pay-service-trade
我在121,122伺服器同時啟動這兩個服務
[[email protected]
ovider-01 user]# ./service-user.sh start === start pay-service-user [[email protected] user]# cd .. [[email protected] service]# cd trade/ [[email protected] trade]# ./service-trade.sh start === start pay-service-trade [[email protected] user]# ./service-user.sh start === start pay-service-user [
[email protected]
user]# cd .. [[email protected] service]# cd trade/ [[email protected] trade]# ./service-trade.sh start === start pay-service-trade
在DubboAdmin管理控制檯中可以檢視到兩臺機器的服務都註冊成功

這裡我可以查詢交易資訊


我先關掉121的交易服務

[[email protected] trade]# ./service-trade.sh stop
=== stop pay-service-trade
[[email protected] 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
[[email protected] trade]# 
這裡我依舊可以查詢交易資訊
我再關掉122的交易服務
[[email protected] trade]# ./service-trade.sh stop
=== stop pay-service-trade
[[email protected] 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
[[email protected] trade]# 
這裡我查詢交易資訊就會出現異常

我在121服務上再開啟交易服務,又可以查詢交易資訊了

[[email protected] trade]# ./service-trade.sh start
=== start pay-service-trade
[[email protected] 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——Dubbo服務叢集

 叢集的目的:實現高可用,容錯功能,叢集的伺服器不要放在一臺物理機,要分散節點,才能實現高可用,高容錯效能,一臺提供者掛了,還有其他提供者,保證系統正常、穩定執行。 一、環境準備 edu-provider-01(192.168.1.121) edu-provider-02

技術與dubbodubbo多協議(解決了舊系統架構和舊微服務架構向新微服務架構過度)

前言 進行服務改造,使用dubbo作為soa解決方案。現有的服務使用dubbo,而以前的服務有直接用http或者spring c

dubbodubbo協議使用

dubbo普通接口及實現類public interface DemoService{ String sayHello(String msg);}public class DemoServiceImpl implements DemoService{ public String sayHello(S

dubbo服務容器

jetty 命令 classpath spring cto 日誌級別 web nts 靜態 服務容器是一個standalone的啟動程序,因為後臺服務不需要Tomcat或JBoss等Web容器的功能,如果硬要用Web容器去加載服務提供方,增加復雜性,也浪費資源。 服務

Java學習Dubbo+ZooKeeper分布式服務Demo

SM 簡單 download 生產 wrap load ssm tps TP 背景:在之前的一個《Java學習之SpringBoot整合SSM Demo》分享中說到搭建ZooKeeper和Dubbo分布式框架中遇到了一些技術問題沒能成功,只分享了其中的一個中間產物,那就是大

服務Dubbo,Zookeeper

RPC: RPC(Remote Procedure Call)—遠端過程呼叫,它是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通訊程式之間攜帶資訊資料。在OSI網路通訊模型中,RPC跨越了傳輸層和應用層。R

Dubbo原始碼分析(三):Dubbo服務端(Service)

         如上圖所示的Dubbo的暴露服務的過程,不難看出它也和消費者端很像,也需要一個像reference的物件來維護service關聯的所有物件及其屬性,這裡的reference就是provider。由於ServiceBean實現了  Initializ

dubbo服務叢集方式講解

叢集方式,可選:failover/failfast/failsafe/failback/forking 1.failover cluster   失敗自動切換,當出現失敗,重試其他伺服器(預設),通常用於讀操作,但重試會帶來更長的延時,可通過retries=“2”來設

Dubbo旅--叢集容錯和負載均衡

當我們的系統中用到Dubbo的叢集環境,因為各種原因在叢集呼叫失敗時,Dubbo提供了多種容錯方案,預設為failover重試。        Dubbo的叢集容錯在這裡想說說他是因為我們實際的專案中出現了此類的問題,因為依賴的第三方專案出現異常,導致dubbo呼叫超時,此時使用的是預設的叢集容錯方式

dubbo學習dubbo管理控制檯裝配及整合zookeeper叢集部署(1)

dubbo管理控制檯開源部分主要包含:路由規則,動態配置,服務降級,訪問控制,權重調整,負載均衡,等管理功能。 1、下載dubbo 地址:http://code.alibabatech.com/mvn/releases/com/alibaba/dubbo-admin/2.4.1/dubbo-admin

Dubbo服務叢集,常見容錯機制:failover ,failsafe,failfase ,failback,forking

http://blog.csdn.net/hongweigg/article/details/52925920 http://m.blog.csdn.net/article/details?id=51137364 <dubbo:reference cluster="

Dubbo服務叢集容錯配置(四)

官網使用者指南:http://dubbo.io/User+Guide-zh.htm 1.Dubbo服務叢集部署 以簡易版支付系統中的部分服務為例: 使用者服務:pay-service-user 交易服務:pay-service-trade 2.Dubbo服務叢集容錯配置--

本地虛擬機器偽叢集dubbo-zookeeper+dubbo demo案例單機叢集服務搭建

<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM

springboot+dubbo多埠注入服務

前面介紹了,springboot+dubbo基礎整合,這篇介紹多埠注入服務。   springboot使用@Bean注入dubbo服務,當你是單一的ProviderConfig例項,dubbo的@Service會自動索引到你注入的例項。但實際使用情況下,dubbo服務提

原始碼分析Dubbo Invoker概述----服務發現、叢集、負載均衡、路由體系

Invoker,負載網路呼叫元件,底層依懶與網路通訊,Invoker主要負責服務呼叫,自然與路由(比如叢集)等功能息息相關,本節先從整體上把控一下Dubbo服務呼叫體系,服務發現、叢集、負載均衡、路由機制等整個知識體系,梳理整理Dubbo Invoker整個類圖

分散式架構學習:024--Dubbo直連服務提供者

直連提供者 (+) (#) 在開發及測試環境下,經常需要繞過註冊中心,只測試指定服務提供者,這時候可能需要點對點直連, 點對點直聯方式,將以服務介面為單位,忽略註冊中心的提供者列表, A介面配置點對點,不影響B介面從註冊中心獲取列表。 (1) 如果是線上需求需

深入理解dubbo服務引用

在之前說了一下dubbo的服務釋出過程,其實嚴格意義上只說了一半吧,只把dubbo如何經過ProxyFactory的代理成一個Invoker,等待客戶端呼叫的過程講了一遍,而重要的Protocol.export方法略過去了,今天我將連帶dubbo的comsume

Dubbo——將Dubbo服務打包成Jar包

伺服器:192.168.1.121(mydubbo-server) 一、Dubbo服務的執行方式 1、使用Servlet容器執行(Tomcat、Jetty等)—-不可取 缺點:增加複雜性(埠、管理) tomcat/jetty等佔用埠,dubbo服務也需

Dubbo——消費端直連服務提供者(開發除錯)

在生產環境使用情況是,服務消費端只消費指定Provider提供者的服務 開發除錯 我們啟動遠端服務提供者 我啟動web-boss,這裡呼叫是遠端提供者服務 檢視user-service,provider方的配置  配置consumer方呼叫本地dubbo服務,進行

20. Dubbo原理解析-通訊層引用服務

二:消費方引用服務 服務呼叫方在引用服務refer時候建立對服務提供者的連結:構建DubboInvoker時候需要獲取ExchangeClient作為構造器引數傳入 Exchangers.connect(url, requestHanler)à HeaderExchange