一,dubbo是什么
dubbo簡介
輕量級,高性能的RPC框架
并不是要稱為一個微服務的全面解決方案
以java語言出名,目前還包含其他語言
dobbo現狀:
全稱是apache dubbo
微店,網易云音樂,考拉,滴滴,中國電信,人壽都在用
star有30k+個,fork有20k+個
二,RPC和http
RPC介紹
RPC--遠程過程調用
早期單機時代:IPC(單個電腦運行的進程間相互通信,比如a有畫圖功能,b只需要去調用a的功能即可,但是只局限在自己的電腦上)
網絡時代:把IPC擴展到網絡上,這就是RPC(想要調用其他電腦上的功能,通過網絡來傳輸,有了這個之后,多臺電腦之間就可以相互通信了)
實現RPC很頭疼,于是就有了RPC框架
實現效果:調用其他機器上的程序和調用本地的程序一樣方便
常見的RPC框架
阿里的dubbo:性能好
新浪的montan:輕量級,便于理解
facebook的thrift:支持的語言多
各個框架都有各自的優缺點
http和RPC對比
它們就像普通話與方言,http是普通話,rpc是方言,http通用,沒有很大的溝通和學習成本,給一個接口地址,調用傳參大家都懂,但是它規定了比如請求頭怎么寫,傳輸有哪些要求,這樣一來效率相對降低。如果是企業內部,使用RPC更加高效,傳輸和運行效率會更高。
-
普通話本質上也是一種方言,只不過它是官方方言,http和rpc在本質上并沒有區別,只不過http有些優勢被選為官方而已。
具體區別如下:
傳輸效率:rpc可以自己定制請求,可以讓整體傳輸內容更少,這樣效率更高。http會包含一些無用內容,使用傳輸效率相對較低
性能消耗,主要在于序列化和反序列化的耗時。RPC可以實現高效二進制傳輸,http大部分需要用json格式傳遞信息,需要把json格式轉換為其他對象,這樣相對來說比較耗時
負載均衡:PRC自帶負載均衡策略,http需要借助其他組件,比如eginx
選型建議:
看看公司內部的技術棧是否統一,如果是java,php,可以選擇http,因為學習成本低,通信起來也沒用任何障礙。
技術棧非常統一,都是java工程師,而且希望程序性能好,用戶對延遲非常敏感,這個時候可以選擇RPC框架。
三,dubbo工作原理
服務容器負責啟動,加載,運行服務提供者
服務提供者在啟動時,向注冊中心注冊自己提供的服務
服務消費者在啟動時,向注冊中心訂閱自己所需的服務
注冊中心返回服務提供者地址列表給消費者
從提供者地址列表中,選一臺提供者進行調用
-
提供者和消費者定期發送一次統計數據到監控中心
在這里插入圖片描述