集群容錯
在集群呼叫失敗時,dubbo提供了多種容錯方案,預設為failover重試。
(1)這裡的invoker是provider的乙個可呼叫service的抽象,invoker封裝了provider位址及service 介面資訊。
(2)directory代表多個invoker,可以把它看成list,但與list不同的是,它的值可能是動態變化的,比如註冊中心推送變更。
(3)cluster將director中的多個invoker偽裝成乙個invoker,對上層透明,偽裝過程包含了容錯邏輯,呼叫失敗後,重試另乙個。
(4)router負責從多個invoker中按路由規則選出子集,比如讀寫分離、應用隔離。
(5)loadbalance負責從多個invoker中選出具體的乙個用於本次呼叫,選的過程包含了負載均衡演算法,呼叫失敗後,需要重選。
failover cluster:
失敗自動切換,當出現失敗,重試其它伺服器。通黨用於讀操作,但重試會帶來更長延遲。可通過retries="2"來設定重試次數(不含第一次)。
failfast cluster
快速失敗,只發起一次呼叫,失敗立即報錯。通常用於非冪等性的寫操作,比如新增記錄。
failsafe cluster
失敗安全,出現異常時,直接忽略。通常用於寫入審計日誌等操作。
failback cluster
失敗自動恢復,後台記錄失敗請求,定時重發。通常用於訊息通知操作。
forking cluster
並行呼叫多個伺服器,只要乙個成功即返回。通常用於實時性要求較高的讀操作,但需要浪費更多服務資源。可通過forks="2"來設定最大並行數。
broadcast cluster
廣播呼叫所有提供者,逐個呼叫,任意一台報錯則報錯。通常用於通知所有提供者更新快取或日誌等本地資源資訊。
負載均衡
預設為random隨機呼叫。
random loadbalance
按權重設定隨機概率。
roundrobin loadbalance
輪循,按公約後的權重設定輪循比率。存在慢的提供者累積請求問題。
leastactive loadbalance
最少活路呼叫數,相同活躍數的隨機,活躍數指呼叫前後計數差。使慢的提供者收到更少請求,因為越慢的提供者的呼叫前後計數差會越大。
consistenthash loadbalance
一致性hash,相同引數的請求總是發到同一提供者。當某一台提供者掛時,原本發往該提供塲請求,基於虛擬節點,平攤到其它提供者,不會引起劇烈變動。
執行緒模型
(1)all 所有訊息都派發到執行緒池,包括請求,響應,連線事件,斷開事件,心跳等。
(2)direct所有訊息都不發到執行緒池,全部在io執行緒上直接執行。
(3)message 只有請求響應訊息發到執行緒池,其它連線斷開事件,心跳等訊息,直接在io執行緒上執行。
(4)execution 只請求訊息發到執行緒池,不含響應,響應和其它連線斷開事件,心跳等訊息,直接在io執行緒上執行。
(5)connection 在io執行緒上,將連線斷開事件放入佇列,有序逐個執行,其它訊息發到執行緒池。
threadpool
(1)fixed 固定大小執行緒份池,啟動時建立執行緒,不關閉,一直持有。(預設)
(2)cached 快取執行緒池,空閒一分鐘自動刪除,需要時重建。
(3)limited 可伸縮執行緒池,但池中的執行緒數隻會增長不會收縮(為避免收縮突然引起的效能問題)
Druid系列《三》集群
集群配置的規劃需要根據需求來定製,下面以乙個開發環境機器搭建為例,描述如何搭建乙個有ha特性的druid集群.集群部署有以下幾點需要說明 1.為了保證ha,主節點部署兩台 2.管理節點與查詢節點可以考慮多核大記憶體的機器 部署規劃 角色 機器 配置 集群角色 主節點10.5.24.137 8c16g...
Hadoop集群部署(三),集群時間同步
集群中的節點需要設定時間同步。這很自然,因為多節點協作,我們希望它們在時間上是同步的。解決方案就很簡單了,只保留乙個節點作為時間伺服器,其他兩個節點從該節點得到時間。步驟 在其中乙個節點配置ntp,這裡配置101主機 server 0.centos.pool.ntp.org iburst serve...
Redis(三) 集群搭建 day13
redis 集群架構 所有節點之間相互連通,內部使用二進位制協議優化傳輸速度和寬頻。redis集群中內建16384個雜湊槽,每個key寫入的時候,都會由crc16演算法運算後用16384求餘,將這個key分配到相應的hash槽中,這16384個槽又被大致平均的分配到各個節點上。集群不可用情況 1.集...