url: http://dubbo.apache.org/zh-cn/docs/user/maturity.htmlhtml
Dubbo成熟度策略java
Feature | Maturity | Strength | Problem | Advise | User |
---|---|---|---|---|---|
Zookeeper註冊中心 | Stable | 支持基於網絡的集羣方式,有普遍周邊開源產品,建議使用dubbo-2.3.3以上版本(推薦使用) | 依賴於Zookeeper的穩定性 | 可用於生產環境 | |
Redis註冊中心 | Stable | 支持基於客戶端雙寫的集羣方式,性能高 | 要求服務器時間同步,用於檢查心跳過時髒數據 | 可用於生產環境 | |
Multicast註冊中心 | Tested | 去中心化,不須要安裝註冊中心 | 依賴於網絡拓撲和路由,跨機房有風險 | 小規模應用或開發測試環境 | |
Simple註冊中心 | Tested | Dogfooding,註冊中心自己也是一個標準的RPC服務 | 沒有集羣支持,可能單點故障 | 試用 |
Feature | Maturity | Strength | Problem | Advise | User |
---|---|---|---|---|---|
Dubbo協議 | Stable | 採用NIO複用單一長鏈接,並使用線程池併發處理請求,減小握手和加大併發效率,性能較好(推薦使用) | 在大文件傳輸時,單一鏈接會成爲瓶頸 | 可用於生產環境 | Alibaba |
Rmi協議 | Stable | 可與原生RMI互操做,基於TCP協議 | 偶爾會鏈接失敗,需重建Stub | 可用於生產環境 | Alibaba |
Hessian協議 | Stable | 可與原生Hessian互操做,基於HTTP協議 | 需hessian.jar支持,http短鏈接的開銷大 | 可用於生產環境 |
Feature | Maturity | Strength | Problem | Advise | User |
---|---|---|---|---|---|
Netty Transporter | Stable | JBoss的NIO框架,性能較好(推薦使用) | 一次請求派發兩種事件,需屏蔽無用事件 | 可用於生產環境 | Alibaba |
Mina Transporter | Stable | 老牌NIO框架,穩定 | 待發送消息隊列派發不及時,大壓力下,會出現FullGC | 可用於生產環境 | Alibaba |
Grizzly Transporter | Tested | Sun的NIO框架,應用於GlassFish服務器中 | 線程池不可擴展,Filter不能攔截下一Filter | 試用 |
Feature | Maturity | Strength | Problem | Advise | User |
---|---|---|---|---|---|
Hessian Serialization | Stable | 性能較好,多語言支持(推薦使用) | Hessian的各版本兼容性很差,可能和應用使用的Hessian衝突,Dubbo內嵌了hessian3.2.1的源碼 | 可用於生產環境 | Alibaba |
Dubbo Serialization | Tested | 經過不傳送POJO的類元信息,在大量POJO傳輸時,性能較好 | 當參數對象增長字段時,需外部文件聲明 | 試用 | |
Json Serialization | Tested | 純文本,可跨語言解析,缺省採用FastJson解析 | 性能較差 | 試用 | |
Java Serialization | Stable | Java原生支持 | 性能較差 | 可用於生產環境 |
Feature | Maturity | Strength | Problem | Advise | User |
---|---|---|---|---|---|
Javassist ProxyFactory | Stable | 經過字節碼生成代替反射,性能比較好(推薦使用) | 依賴於javassist.jar包,佔用JVM的Perm內存,Perm可能要設大一些:java -XX:PermSize=128m | 可用於生產環境 | Alibaba |
Jdk ProxyFactory | Stable | JDK原生支持 | 性能較差 | 可用於生產環境 |
失敗策略spring
Feature | Maturity | Strength | Problem | Advise | User |
---|---|---|---|---|---|
Failover Cluster | Stable | 失敗自動切換,當出現失敗,重試其它服務器,一般用於讀操做(推薦使用) | 重試會帶來更長延遲 | 可用於生產環境 | Alibaba |
Failfast Cluster | Stable | 快速失敗,只發起一次調用,失敗當即報錯,一般用於非冪等性的寫操做 | 若是有機器正在重啓,可能會出現調用失敗 | 可用於生產環境 | Alibaba |
Failsafe Cluster | Stable | 失敗安全,出現異常時,直接忽略,一般用於寫入審計日誌等操做 | 調用信息丟失 | 可用於生產環境 | Monitor |
Failback Cluster | Tested | 失敗自動恢復,後臺記錄失敗請求,定時重發,一般用於消息通知操做 | 不可靠,重啓丟失 | 可用於生產環境 | Registry |
Forking Cluster | Tested | 並行調用多個服務器,只要一個成功即返回,一般用於實時性要求較高的讀操做 | 須要浪費更多服務資源 | 可用於生產環境 | |
Broadcast Cluster | Tested | 廣播調用全部提供者,逐個調用,任意一臺報錯則報錯,一般用於更新提供方本地狀態 | 速度慢,任意一臺報錯則報錯 | 可用於生產環境 |
負載均衡策略apache
Feature | Maturity | Strength | Problem | Advise | User |
---|---|---|---|---|---|
Random LoadBalance | Stable | 隨機,按權重設置隨機機率(推薦使用) | 在一個截面上碰撞的機率高,重試時,可能出現瞬間壓力不均 | 可用於生產環境 | Alibaba |
RoundRobin LoadBalance | Stable | 輪詢,按公約後的權重設置輪詢比率 | 存在慢的機器累積請求問題,極端狀況可能產生雪崩 | 可用於生產環境 | |
LeastActive LoadBalance | Stable | 最少活躍調用數,相同活躍數的隨機,活躍數指調用先後計數差,使慢的機器收到更少請求 | 不支持權重,在容量規劃時,不能經過權重把壓力導向一臺機器壓測容量 | 可用於生產環境 | |
ConsistentHash LoadBalance | Stable | 一致性Hash,相同參數的請求老是發到同一提供者,當某一臺提供者掛時,本來發往該提供者的請求,基於虛擬節點,平攤到其它提供者,不會引發劇烈變更 | 壓力分攤不均 | 可用於生產環境 |
Feature | Maturity | Strength | Problem | Advise | User |
---|---|---|---|---|---|
條件路由規則 | Stable | 基於條件表達式的路由規則,功能簡單易用 | 有些複雜多分支條件狀況,規則很難描述 | 可用於生產環境 | Alibaba |
腳本路由規則 | Tested | 基於腳本引擎的路由規則,功能強大 | 沒有運行沙箱,腳本能力過於強大,可能成爲後門 | 試用 |
Feature | Maturity | Strength | Problem | Advise | User |
---|---|---|---|---|---|
Spring Container | Stable | 自動加載META-INF/spring目錄下的全部Spring配置 | 可用於生產環境 | Alibaba | |
Jetty Container | Stable | 啓動一個內嵌Jetty,用於彙報狀態 | 大量訪問頁面時,會影響服務器的線程和內存 | 可用於生產環境 | Alibaba |
Log4j Container | Stable | 自動配置log4j的配置,在多進程啓動時,自動給日誌文件按進程分目錄 | 用戶不能控制log4j的配置,不靈活 | 可用於生產環境 | Alibaba |