dubbo與zookeeper的關系
1. Zookeeper的作用:
2. dubbo:
3. zookeeper和dubbo的關系:
節點角色說明:
· Provider: 暴露服務的服務提供方。
· Consumer: 調用遠程服務的服務消費方。
· Registry: 服務注冊與發現的注冊中心。
· Monitor: 統計服務的調用次調和調用時間的監控中心。
· Container: 服務運行容器。
調用關系說明:
· 0. 服務容器負責啟動,加載,運行服務提供者。
· 1. 服務提供者在啟動時,向注冊中心注冊自己提供的服務。
· 2. 服務消費者在啟動時,向注冊中心訂閱自己所需的服務。
· 3. 注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基於長連接推
送變更數據給消費者。
· 4. 服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一台提供者進行調用,
如果調用失敗,再選另一台調用。
· 5. 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鍾發送一次統計
數據到監控中心。
相似框架SpringCloud:
springcloud是基於springboot的,另外springcloud的更新也要比dubbo更新快的多,相比較dubbo:開發簡潔 支持restful開發 。
而現如今國內還是使用dubbo的比較多、有中文文檔、技術比較成熟了,國外使用springcloud比較多
springcloud整合了大量的第三方組件、但是優點在於springboot的自動化配置
dubbo提供的rpc調用,springcloud支持restful調用:
兩種的區別:
dubbo服務提供方與調用方接口依賴方式太強:我們為每個微服務定義了各自的service抽象接口,並通過持續集成發布到私有倉庫中,調用方應用對微服務提供的抽象接口存在強依賴關系,因此不論開發、測試、集成環境都需要嚴格的管理版本依賴,才不會出現服務方與調用方的不一致導致應用無法編譯成功等一系列問題,以及這也會直接影響本地開發的環境要求,往往一個依賴很多服務的上層應用,每天都要更新很多代碼並install之后才能進行后續的開發。若沒有嚴格的版本管理制度或開發一些自動化工具,這樣的依賴關系會成為開發團隊的一大噩夢。而springcloud REST調用方式相比RPC更為輕量化,服務提供方和調用方的依賴只是依靠一紙契約,不存在代碼級別的強依賴,當然REST接口也有痛點,因為接口定義過輕,很容易導致定義文檔與實際實現不一致導致服務集成時的問題,但是該問題很好解決,只需要通過每個服務整合swagger,讓每個服務的代碼與文檔一體化,就能解決。所以在分布式環境下,REST方式的服務依賴要比RPC方式的依賴更為靈活。
dubbo服務對平台敏感,難以簡單復用:通常我們在提供對外服務時,都會以REST的方式提供出去,這樣可以實現跨平台的特點,任何一個語言的調用方都可以根據接口定義來實現。那么在Dubbo中我們要提供REST接口時,不得不實現一層代理,用來將RPC接口轉換成REST接口進行對外發布。若我們每個服務本身就以REST接口方式存在,當要對外提供服務時,主要在API網關中配置映射關系和權限控制就可實現服務的復用了。
相信這些痛點也是為什么當當網在dubbox(基於Dubbo的開源擴展)中增加了對REST支持的原因之一。