Dubbo如何做到伸縮性

時間 2021-06-03 02:28:28

1樓:kimmking

簡單的說,可伸縮意味著,可以自由的根據系統的整體壓力進行水平擴充套件,新增或移除服務節點,而不影響整個系統的服務能力。

進行水平擴充套件就意味著,系統的各個節點都是無狀態的,等價的,具有同樣的業務能力(可能不同服務能力,這可以通過Loadbalance的不同weight來處理),可以替換的。

當整個系統的訪問量怎大、壓力增加時,各項負載指標上公升,系統的吞吐量上公升,響應時間可能也對應上公升,這時候需要擴容:通過新增新的服務節點到dubbo集群,來分擔整個系統的壓力。新的服務節點啟動後,會把自己提供的服務(例如HelloService)新增到註冊中心。

註冊中心這時會同步自己的服務提供者資訊到所有的HelloService服務消費者。這時候,如果有新的服務呼叫請求,就會先做Loadbalance演算法,根據目前的所有服務提供者列表(已經包括了新的服務提供者)和具體的策略(比如輪詢),如果恰好輪詢到新的服務提供者,就會呼叫這個新的服務提供者。具體的Loadbalance演算法,可以保證足夠多or均勻的請求到新的機器上來,而跟具體這個請求所在的服務消費者上現有的Connection存不存在沒有關係,沒有的話會建立乙個新的。

當情況反過來的時候,則系統壓力過低,我們需要對系統進行縮容:減少部分機器。當我們從集群關閉一台機器的時候,同樣地,註冊中心會發現少了乙個可用例項,然後各個消費者就會感知到,做Loadbalance時的服務提供者列表,就會去掉了這個不可用的機器,從而從當前可用的服務提供者列表裡拿到乙個新的可用位址。

這樣就實現了流量都請求到還存活的各個機器上。

總之,Dubbo的集群裡的Loadbalance機制決定了可以做到伸縮性。

Web 伺服器與資料庫伺服器可伸縮性架構設計?

如果我沒記錯的話,oracle db 9i的極限連線數好像是500,這還是在滿配的高階UNIX主機上。雖然這個引數值可以手動調高,但若果你的硬體效能不夠,那連線數遠不到最大值系統就會報錯。即使併發數支援了,如果這些session操作的實體重合度很高,那一樣會有嚴重的效能問題。所以單DB支撐穩定的70...

如何做到精進

allent 只要保有覺性,就會有精進。要時常有覺性,不要迷失太久。當心粘著在境界,粘著在想上時,覺性能夠發現,就可以自動從迷失中脫離出來。 護法居士 佛子。菩薩摩訶薩。有十種清淨精進。何等為十。所謂 身清淨精進。承事供養諸佛菩薩。及諸師長。尊重福田。不退轉故。語清淨精進。隨所聞法。廣為他說。讚佛功...

如何做到專注?

就此別過 要堅信當下做的最正確合理,開始了就不容易分心了。培養快速抉擇的習慣,不要猶豫過長時間,即使這次選擇不合理下次注意偏離這種選擇。絕大多數的選擇都是不能明顯的看出哪個選擇好,哪個選擇壞的。如果能夠被明顯看出,那麼就不會由於,就會更加容易專注到好的選擇。經過多次經驗來看,大家抉擇的時候,都想找個...