Dubbo:
Dubbo是阿里巴巴開源的基於 Java 的高性能 RPC 分布式服務框架,推薦使用 Zookeeper 作為注冊中心Registry,還有 Redis、Multicast、Simple,但不推薦。Dubbo 默認使用 Netty 框架,也是推薦
三個主要功能:基於接口的遠程調用,容錯與負載均衡,服務自動注冊與發現。
遠程調用:Dubbo使得調用遠程服務就像調用本地java服務一樣簡單
容錯(重試機制):缺省為 Failover 重試,失敗自動切換,當出現失敗,重試其它服務器 。通常用於讀操作,但重試會帶來更長延遲。可通過 retries="2" 來設置重試次數(不含第一次)。
負載均衡:默認隨機
自動注冊與發現:
1.服務提供者在啟動時,向注冊中心注冊自己提供的服務。
2. 服務消費者在啟動時,向注冊中心訂閱自己所需的服務。
3. 注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基於長連接推送變更數據給消費者。(實際操作客戶端不用關心)
默認是同步等待結果阻塞的,支持異步調用。
Dubbo 是基於 NIO 的非阻塞實現並行調用,客戶端不需要啟動多線程即可完成並行調用多個遠程服務,相對多線程開銷較小,Dubbo 的設計目的是為了滿足高並發小數據量的 rpc 調用,在大數據量下的性能表現並不好,建議使用 rmi 或 http 協議。
Monitor:服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鍾發送一次統計數據到監控中心
在 Provider 上可以配置的 Consumer 端的屬性:
1.loadbalance:負載均衡算法,默認隨機
2.timeout:方法調用超時
3.retries:失敗重試次數,默認重試 2 次
4.actives 消費者端,最大並發調用限制
注冊中心對等集群,任意一台宕掉后,會自動切換到另一台
注冊中心全部宕掉,服務提供者和消費者仍可以通過本地緩存通訊
服務提供者無狀態,任一台宕機后,不影響使用
服務提供者全部宕機,服務消費者會無法使用,並無限次重連等待服務者恢復
HttpClient: