高性能优秀的服务框架-dubbo介绍
先來了解一下這些年架構的變化,下面的故事是我編的。。。。
“傳統架構”:很多年前,剛學完JavaWeb開發的我憑借一人之力就開發了一個網站,網站 所有的功能和應用都集中在一起,方便了我的開發同時也節省了成本。但是后來我的網站訪問流量突然加大,我通過不斷增加服務器來提高并發量,但是我發現隨著服務器的增加服務能力先增加后下降。
不能通過硬件的方式解決問題的我,思考如何通過軟件解決這個問題。
“分布式架構”:后來我按照功能點把系統拆分,拆分成獨立的功能。單獨為某一個節點添加服務器。通過系統之間配合完成整個業務邏輯。但是隨著我的網站功能的日益完善,我發現各個模塊有一些通用的業務邏輯無法共用,這樣可不好,這時候我就在考慮為啥部直接來個面向服務呢???
“面向服務架構”:我把工程拆分成服務層、表現層兩個工程。服務層中包含業務邏輯,只需要對外提供服務即可。表現層只需要處理和頁面的交互,業務邏輯都是調用服務層的服務來實現。這樣我的網站不光開發效率快,而且在擴展和升級相關服務的時候更加靈活。
說了這么多“廢話”,那么什么是dubbo?為什么要用dubbo呢?
什么是dubbo?
Dubbo是 阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和 Spring框架無縫集成。
上面我們提到了RPC,現在我們來理解一下RPC的一些相關概念。之前學習過操作系統的同學在進程那一章也會接觸到這個東西。
RPC(Remote Procedure Call)—遠程過程調用,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通信程序之間攜帶信息數據。在OSI網絡通信模型中,RPC跨越了傳輸層和應用層。RPC使得開發包括網絡分布式多程序在內的應用程序更加容易。
RPC采用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。首先,客戶機調用進程發送一個有進程參數的調用信息到服務進程,然后等待應答信息。在服務器端,進程保持睡眠狀態直到調用信息到達為止。當一個調用信息到達,服務器獲得進程參數,計算結果,發送答復信息,然后等待下一個調用信息,最后,客戶端調用進程接收答復信息,獲得進程結果,然后調用執行繼續進行。
既然有http請求為什么還要用rpc調用呢???
良好的rpc調用是面向服務的封裝,針對服務的可用性和效率等都做了優化。單純使用http調用則缺少了這些特性。
dubbo的一些相關資源
相信你看了dubbo的用戶手冊可能會明白dubbo被企業所喜愛的一部分原因,官方文檔介紹的真的詳細,很容易就可以學會如何簡單的去使用dubbo到自己的項目中。
dubbo官網:http://dubbo.incubator.apache.org/
Dubbo Github地址:https://github.com/apache/incubator-dubbo
Dubbo用戶手冊(中文) :這篇文檔詳細講解了dubbo的使用,基本涵蓋dubbo的所有功能特性。如果你正依賴dubbo作為你業務工程的RPC通信框架,這里可以作為你的參考手冊
Dubbo開發手冊(中文):這篇文檔的目標讀者是對 dubbo 源碼、設計有興趣的,或者有意愿加入 dubbo 開發的人群。主要涵蓋了 dubbo 的框架設計、擴展機制、編碼規范、版本管理、構建等話題。
為什么要用dubbo呢???
先來看一張普通電商的簡易架構圖
當服務越來越多后,服務之間的依賴關系越來越復雜,服務 URL 配置管理變得非常困難另外還需要統計服務的調用量來進行分析,這些需求都可以使用dubbo來滿足。
dubbo架構
上述節點簡單說明:
- Provider 暴露服務的服務提供方
- Consumer 調用遠程服務的服務消費方
- Registry 服務注冊與發現的注冊中心
- Monitor 統計服務的調用次數和調用時間的監控中心
- Container 服務運行容器
調用關系說明:
1. 服務容器負責啟動,加載,運行服務提供者。
2. 服務提供者在啟動時,向注冊中心注冊自己提供的服務。
3. 服務消費者在啟動時,向注冊中心訂閱自己所需的服務。
4. 注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數據給消費者。
5. 服務消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
6. 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。
注冊中心
一個完整的dubbo應該是包括注冊中心的。
注冊中心用來注冊服務和進行負載均衡,哪一個服務由哪一個機器來提供必需讓調用者知道,簡單來說就是IP地址和服務名稱的對應關系。
dubbo官方提供了幾種實現注冊中心的方式:
1. Multicast 注冊中心
2. Zookeeper 注冊中心
3. Redis 注冊中心
4. Simple 注冊中心
另外官方明確推薦使用Zookeeper 注冊中心的方式。
裝zookeeper的話,建議裝在Linux機器上,我這里就不做講解了。想要了解的可以去官網看看文檔,因為dubbo的官方文檔很詳細了,建議看官方文檔,大多數博客文章還是照著文檔寫的。
dubbo的使用
Dubbo用戶手冊(中文) 已經介紹的很詳細了,所以這里我就不去班門弄斧了,想要了解的可以去看一下。
不說了,我要去吃飯了。。。想起來再補充。。。
歡迎關注我的微信公眾號:“”Java面試通關手冊(堅持原創,分享美文,分享各種Java學習資源,面試題,以及企業級Java實戰項目回復關鍵字免費領取):
轉載于:https://www.cnblogs.com/snailclimb/p/9086363.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的高性能优秀的服务框架-dubbo介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 传参-参数关联
- 下一篇: 网络协议入门(OSI七层和TCP/IC四