最簡單的Dubbo框架 SOA服務入門教程 附源碼
如果你是伺服器端程序員,如果你厭倦了業務邏輯CRUD的開發,如果看膩了Spring、Mybais等框架整合,那麼就說明是時候需要一些突破了。本篇文章拋磚引玉,分享如何使用Dubbo框架、如何做一個SOA服務。
理論篇
一、Dubbo框架
Dubbo框架是阿里巴巴SOA服務化治理方案的核心框架。具體一些概念可以直接戳官網 網頁鏈接
這裡簡要說明一下(摘自官網):
1,為什麼用Dubbo?
在大規模服務化之前,應用可能只是通過RMI或Hessian等工具,簡單的暴露和引用遠程服務,通過配置服務的URL地址進行調用,通過F5等硬體進行負載均衡。
但是當服務越來越多的時候,缺點就會暴露出來:
1)服務URL配置管理變得非常困難,F5硬體負載均衡器的單點壓力也越來越大。
2) 當進一步發展,服務間依賴關係變得錯蹤複雜,甚至分不清哪個應用要在哪個應用之前啟動,架構師都不能完整的描述應用的架構關係。
3)接著,服務的調用量越來越大,服務的容量問題就暴露出來,這個服務需要多少機器支撐?什麼時候該加機器?
於是Dubbo框架就應運而生,可以解決以上問題:
1)服務註冊中心,動態的註冊和發現服務,使服務透明,避免了大量的URL
2)消費方通過服務方提供的地址列表,實現負載均衡和Failover
3)統計服務的調用量、響應時間會做統計作為權重調整、機器數量規劃的參考指標
2,所以,Dubbo必備的元素包括:
運營容器(Container)
伺服器註冊中心(Register)
服務提供方(Provider)
服務消費方(Consumer)
統計監控中心(Monitor)
二、SOA
SOA(service-oriented architecture) 面向服務的體系結構。
推薦書籍 《Enterprise SOA中文版:面向服務架構的最佳實戰》
下載鏈接:網頁鏈接 密碼:f0mf
SOA並不是一種架構技術,是一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的介面和契約聯繫起來。介面是採用中立的方式進行定義的,它應該獨立於實現服務的硬體平台、操作系統和編程語言。這使得構建在各種這樣的系統中的服務可以以一種統一和通用的方式進行交互。
在Dubbo中的Provider和Consumer都是一個個的Service(服務),當然Dubbo框架自身中的Monitor也是服務。
SOA常見的結構如下:
應用程序前端:業務流程的所有者,應用層:APP、WEB等
服務庫:管理多個SOA服務(Dubbo的Provider和Consumer)
服務匯流排:SOA服務的調度(Dubbo的Register和Container)
合約:服務實現功能的協議和約束
實現:服務業務的基礎結構,包括業務邏輯和數據邏輯,對介面功能的實現
介面:對外公開的功能
業務篇
上篇簡單介紹了Dubbo和SOA的理論知識,可能大家理解的不是很深刻。
業務篇用某電商平台業務架構做個簡單說明。
電商平台服務包括:
商品服務
訂單服務
價格中心服務
...
應用程序前端可以有:PC站、M站、APP等
Dubbo+SOA的體現
1)Dubbo框架將這些服務需要進行註冊,進行統一的暴露和監控;
2)而每個服務的結構都是SOA的模型;
3)由應用程序前端的服務進行消費;
以訂單服務為例:
如,訂單服務提供 下單介面(如createOrder)、參數(合約),和實現;
服務啟動的時候,Dubbo框架會載入服務並註冊,並將createOrder暴露給消費者;
應用程序前端服務(比如App、PC站)下單的時候,都可以消費(調用)createOrder介面,從而實現下單業務流程。
Dubbo可以監控不同時間段 App、PC站並發下單量,響應時間等等,及時調整機器數量和權重,實現利益最大化。
實戰篇
開發工具:Eclipse、Maven、zookeeper
鏈接:網頁鏈接 密碼:fmfd
鏈接:網頁鏈接 密碼:51yk
1、源碼下載
鏈接:網頁鏈接 密碼:xa6m
2、說明
項目是maven構建,使用了 maven的繼承、組合等技能。
通過Eclipse導入即可(import 選擇 Existing Maven Project):
1),dubboProject是整個項目的一級項目,其中包含了dubbo-common、dubboDemo和dubboSoa
2),dubbo-common是所有項目依賴的底層java包,輸出的是jar
3),dubboDemo是一個web應用,可以理解為應用程序前端
4),dubboSoa是其中一個服務,是二級項目;上文提到一個SOA服務是由介面(_api)、協議、客戶端應用(_client)、服務實現(數據)組成(其中service使用了2種方式:_service 純java服務,_service_server web應用);
5),dubbo的簡單學習說明:dubbo-學習.xml;對於一些provider.xml 和 consumer.xml 的配置,可以參考此項目的源碼;
6),dubboSoa_service的使用參考:readme.txt;
3,如何使用
1)方式1:在同一個項目中使用。在dubboDemo中依次運行provider.java和consumer.java。(直接在eclipse中打開java文件,右鍵 run as application 即可;前提需要啟動zookeeper)
2)方式2:可以先運行 _service_server ,因為是web項目所以在tomcat中啟動;
然後通過 _client去調用;
3)方式3:啟動 dubboSoa_service (參考readme.txt),然後通過 _client 去調用
完結篇
本篇文章對dubbo和soa做了簡單的實戰介紹,源碼也比較簡單,相信一般的程序員都是可以掌握的(閱讀、運行demo是程序員最基本的技能咯)。
現在環境很好,開發技能的學習途徑也比較多,所以對於程序員來說是個很好的機會。so,更多的技能就需要自己去鑽研了!
轉發分享是一種美德
※JAVA零基礎應該從哪裡入手
※10分鐘讀懂html5 多了啥?
※程序員晉陞之路五職場榜樣
※程序員晉陞之路三初入職場的上升空間在哪裡
※新手程序員上崗需要做些什麼?
TAG:java吧 |
※《ZooKeeper分散式專題與Dubbo微服務入門》
※Coinbase推出託管服務,更多的機構入手ETC
※VMware擴展VMware Cloud on AWS服務 引入RDS資料庫
※Befund提出「道斯服務DAOS Service:一種全新的商業服務形態」
※炙手可熱的微服務框架SpringBoot-入門及資料庫操作
※NVIDIA重啟主機SHIELD訂閱服務 GeForceNow將可獲取Steam遊戲
※鎖定汽修服務,Atheer為HoloLens客戶帶來AR協作平台
※三星計劃推出AR雲服務Whare Cloud
※微軟收購雲端遊戲服務平台PlayFab 併入Azure遊戲團隊
※蘋果出台MacBook Pro固態硬碟及iPhone X屏幕免費檢修/換新服務
※Oracle MySQL雲服務入門系列1:創建MySQL實例
※微軟收購雲端遊戲服務平台PlayFab,併入Azure遊戲團隊
※微軟開源Azure雲服務AI引擎Infer.NET
※ARM Linux的中斷服務程序工作在ARM的IRQ模式嗎?
※Azure虛擬網路整合MySQL、PostgreSQL服務
※Facebook正推出視頻服務,與谷歌YouTube分一杯羹
※CADEX推出CAD Exchanger Cloud軟體服務的測試版
※Google決定擱置Allo 將資源集中在RCS服務
※PrintMyRoute公司推出將運動路線轉化為3D列印模型的服務
※YouTube推出遊戲和電子競技流媒體服務 Halo Online在線射擊遊戲