Dubbo專案實戰 (一)服務劃分粒度

2022-05-07 01:42:07 字數 2201 閱讀 4995

dubbo是阿里公司推出解決分布式服務問題的框架,是乙個基於soa面向服務體系結構的基礎設施,提供了諸如服務發布註冊、容錯呼叫、部署、呼叫次數監控、每個服務的效能監控等很多功能。

一看覺得非常不錯可以將我們各種服務做成遠端服務呼叫,雖然看起來不錯,如果要具體實施將乙個或多個系統抽象成乙個合理、穩定的soa系統卻不是一翠兒就,它需要遵循一些經驗和原則,否則會曹成費力不討好,事倍功半的效果。

服務越來越多時,不需要我們手工配置每乙個服務的url呼叫位址,也不需要手工查詢乙個服務,新增或刪除服務對我們來說是透明的、動態的,服務配置更加方便。

實現了軟負載,可以通過配置dubbo集群策略為failover,預設也是這個策略,失敗自動切換。

由於服務變多,服務呼叫服務、依賴另乙個服務成為常態,dubbo可以幫我們管理服務之間的依賴。

ps:服務雖然可以相互依賴但是不建議層次過多,一般不應超過三層,即a依賴b,b依賴c,則c不應該再依賴於d,如果真需要依賴,應該重新考慮是否服務劃分粒度過細、過小,服務劃分不易過小或過大,應盡量避開分布式事務帶來的問題。

服務既然已經抽取出來,那麼對每個服務的最大呼叫量、每次呼叫的響應時間、多少臺機器可以支撐多大訪問量等等問題,需要時刻來動態監測,來保證伺服器資源的既不浪費又合理利用,依賴於dubbo監控中心完成。
在這個階段我們只是開發單個的應用程式或許應用很大或者很小,都是開發部署在乙個應用程式裡面這個時候典型的是型別於struts+spring+orm框架,常常見於中小型企業使用非常廣泛,以至於大部分的培訓機構都是培訓ssh框架,這一框架在這時成為了主流,受到了很多程式設計師的追捧。
在一些電商**隨著訪問數量逐漸增大,尤其是到過年過節時下單使用者量會暴增,單一應用無法解決訪問量暴增的需求,於是把關鍵瓶頸節點垂直抽取出來做成單獨應用來跑,在一定程度上解決了高訪問量的問題。
為了適用不斷變化的市場需求,以及多個垂直應用之間資料互動方便,我們把公共的業務抽取出來作為獨立的模組,為其他的應用提供服務,系統逐漸依賴於抽象和rpc遠端服務呼叫。
隨著服務也越來越多,如果單靠程式設計師手工來管理折磨多的服務變的不肯能,需要乙個管理、監控、排程服務介面的中心應用,基於soa思想管理服務的框架營運而生。

用一幅圖來概括dubbo的演化過程顯著非常形象,如下:

![dubbo架構演變](

個人感覺dubbo何時使用都可以,小的**專案未必不可以使用dubbo框架,只是小的專案使用dubbo可能會拖延開發周期,並且對開發人員的素質要求比較高,後台伺服器也需要比普通專案消耗資源多,如果公司捨得出錢就可以,況且,公司也在發展為以後的擴充套件業務做好準備。
即實現服務介面的一方,服務說的通俗一些即我們常用的介面,把需要讓別人呼叫的介面發布出去,以供其他應用使用但我們也要為介面實現方法,服務提供者即提供服務的一方。

根據專案開發,即我們專案裡面service介面以及實現層以下部分,將此實現的呼叫位址發布到註冊中心即完成了服務提供端的開發。

這個更好理解就是使用服務的一端,常常為web專案的controller層,對於服務提供方與消費方不僅僅是寫好介面和實現就萬事大吉,dubbo不僅僅可以將乙個介面和實現發布為遠端服務,還可以為該介面提供效能、安全等保障。

配置cluster集群屬性,預設為failover失敗自動切換;失敗重試次數 retries="2",表示發三次請求不包括第一次;timeout="10000",超時;check="false",安全檢查,預設true,但一般需配置為false,很可能會導致服務啟動不起來;等等,還有很多效能引數來保證服務正常執行,對於引數的優先順序服務消費者要高於服務提供者,如果兩者都有配置,那麼以消費端配置為準,服務端配置會被覆蓋。

乙個用來管理和協調服務軟體系統,可以管理後台很多的服務,避免出現服務死鎖、服務當機、服務不夠用等情況發生,即時對服務進行註冊和發現,如果乙個服務位址有變更,註冊中心會即時將變更位址推送給服務消費者。
公司也在使用dubbo開發專案,在使用過程中逐漸加深了對dubbo框架的理解,對架構呼叫流程更加清晰,不過,感覺對於框架只會用還是遠不夠的需要研究和理解框架的設計原理,要多學習框架裡面的東西,設計思路和框架裡面的**,多看優秀的然後多去思考,學著使用才會和優秀的人框架逐漸靠近。

Dubbo專案實戰初探(一)

公司專案使用duboo技術架構也有一段時間,做下簡單的經驗總結,不喜勿噴。擁有的阿里背景的dubbo,給使用者帶來的絲絲安慰,畢竟阿里那麼大的平台都在使用,相對小型一些的平台使用應該也是沒有問題。那麼在設計過程中,應該注意哪些呢?一,模組劃分。二,服務抽離。這裡的服務抽離,是針對每個模組裡面的服務進...

Dubbo框架應用之(一) 服務體系

dubbo 是阿里巴巴公司開源的乙個高效能優秀的服務框架,使得應用可通過高效能的 rpc 實現服務的輸出和輸入功能,可以和 spring 框架無縫整合,也是乙個非常全面的soa基礎框架。其是阿里巴巴soa服務化治理方案的核心框架,每天為2,000 個服務提供3,000,000,000 次訪問量支援,...

記錄一次dubbo專案實戰

存在2個系統,a系統和b系統,a系統呼叫b系統的介面獲取資料,用於查詢使用者列表。安裝zookeeper,解壓 zookeeper 3.4.8.tar.gz 得到如下 該目錄為存放資料的目錄。然後啟動,在bin目錄下 1.匯入依賴 org.springframework spring webmvc ...