當前位置:
首頁 > 知識 > Dubbo消費者提供者簡單例子

Dubbo消費者提供者簡單例子

Dubbo消費者提供者簡單例子

阿里巴巴

原來的架構是傳統的SSM,通過Nginx+Tomcat進行負載和高可用,相關技術大家可以看我之前的文章:

Keepalived+Nginx高可用安裝部署(含Nginx+Tomcat負載均衡),這裡其實還缺Nginx監測Tomcat、Tomcat的Session用Redis存儲,以後我慢慢補。

現在準備轉成基於Dubbo的分布式架構,相關技術可參看我之前的文章:ZooKeeper單機版安裝配置——集群版後面再發、ZooKeeper集群安裝配置使用、Dubbo管理控制台安裝

SSM框架的搭建現在文章也很多,大家應該都會。

為了舉例子,我就用了一張用戶表,展示列表,能新增用戶這兩個功能。

我之前在項目過程中,沒有用JSP,用的是HTML的靜態頁面,使用JQuery的Ajax與後端進行HTTP通信,數據格式是JSON。

使用Dubbo框架,除了一些公共的common工程,共有:

controller-user,http介面,構建成war,放在Tomcat下,在Dubbo中是消費者。

service-user,邏輯處理、與DB交互,構建成jar包,在Dubbo中是提供者。

interface-user,介面工程,供controller-user、service-user工程調用和實現。

這三個工程其實就是一個SSM工程拆成3個,具體的pom、spring配置文件就先不羅列了,大家手頭上有現成的代碼可以自己拆一拆。有機會再弄上吧。

關鍵說說與Dubbo相關的配置:

controller-user:在spring的配置文件引入dubbo-consumer.xml,內容如下:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://code.alibabatech.com/schema/dubbo

http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

id="userService" check="false" />

id="userCUDService" check="false" />

先注意${dubbo.registry.address},如果Zookeeper是單機版,就是ip:port,如果是集群,格式應該是ip1:port,ip2:port,ip3:port

接著要注意下面的兩個用戶服務介面,其中UserService是用來查詢的,UserCUDService是用了增刪改的。

主要是給兩種操作配置不同的容錯機制,相關配置在提供者那。

service-user:在spring的配置文件中,引入dubbo-provider.xml,內容如下:


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://code.alibabatech.com/schema/dubbo

http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

ref="userService" />

interface="org.leo.ssm.service.UserCUDService" ref="userCUDService" />

注意兩個用戶服務介面,為了使用不同的容錯機制。

UserService使用是默認的failover,再加上retries,代表消費者調用提供者出現異常時,自動切換,試兩次。

UserCUDService使用的是failfast,失敗了就報異常,主要是用於非等冪性的寫操作。當然這個也等價於failover,retres=0。

除此之外還有:failsafe,失敗就失敗了,也不報異常,用於一些不重要的操作,比如寫個不重要的日誌什麼的,錯個1、2條的不影響。

failback,失敗了重發,比如推送。

forking,調用所有提供者,誰最先返回結果就用誰的,這個太耗資源了。

broadcast,調用所有提供者,一個報錯就報錯,這個主要是用於通知提供者更新緩存啊,本地資源之類的操作。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Java個人學習心得 的精彩文章:

Java單例模式的學習筆記
虛擬機VBox安裝CentOS6.8,內外網訪問
CentOS6.8安裝MySQL5.7
ZooKeeper單機版安裝配置——集群版後面再發

TAG:Java個人學習心得 |

您可能感興趣

Facebook全球消費者洞察報告
蘋果Q1銷量:消費者仍沉迷於老款iPhone 無視iPhone X
榮耀MagicBook輕薄本消費者報告
iPhone8性能強悍,為何消費者都買iPhone7?原因其實很簡單!
iPhone6s免費換iPhoneXR?中國消費者無緣
iPhone6s免費更換iPhoneXR 可惜中國消費者無緣
Alienware 13遊戲本消費者報告
Salesforce推出Customer 360,為B2C提供單一消費者視圖
「消費者報告」New Macbook 12inch with Retina 研究性報告
微軟上線Surface Pro LTE消費者版本
Chrome OS殺手?Windows Lite難贏得消費者的青睞
歐盟:Facebook修改服務條款,澄清如何使用消費者數據
Adobe、Microsoft、SAP為提升消費者體驗提出開放數據倡議
Greenlight深入分析Oculus Go的消費者認知
「消費者報告」Bose QuietComfort35 II 無線耳機使用體驗
消費者報告:蘋果HomePod音質不如Sonos One和Home Max
Facebook看好印度智能手機消費者的未來
微軟Surface Laptop重獲《消費者報告》推薦評級
PConline消費數據中心出品:投影消費者報告
「消費者報告」iPhone 8 Plus 與 iPhone X(下篇)