1. 程式人生 > >分散式系統漫談【貳】_分散式系統帶來的問題

分散式系統漫談【貳】_分散式系統帶來的問題

上文中我們簡單描繪了一個系統從單體應用向分散式叢集應用轉變的過程,通過轉變可以讓系統擁有更強大的併發訪問支援,但是同時使用分散式部署也會帶來一些單體不存在的問題,本文就這些問題整理討論一下。

負載層

不同運營商網路

系統的訪問使用者可能來自不同的運營商網路,那麼如何保證來自不同網路的請求響應速度?

穩定的負載均衡

當海量的併發請求過來時,如何保證負載均衡可以穩定地工作並轉發請求?

服務層

遠端呼叫

因為系統被拆分成了多個子系統分離部署,這樣之前在同一個系統內的呼叫就被改成系統間的遠端呼叫。而遠端呼叫勢必要通過網路,在分散式系統中最重要的一個原則就是網路是不可信的

服務治理

當叢集中的節點無法提供服務時,如何快速識別出並做下線處理?當系統中某個服務請求量過高即將到達瓶頸的時候,該如何保證服務的相應?

分散式session

當一個叢集對外提供服務的時候,使用者的每次訪問不一定路由到叢集中哪個節點上,這樣如何保證使用者的session不失效?

資料層


分散式事務一致性

如前文所說,當系統資料量級達到一定程度之後,就要考慮資料分庫分表的設計了。這樣會帶來一個問題,因為我們知道資料庫事務在以資料庫例項為維度的,當我們操作多個數據庫例項的資料的時候,就相當於是多個數據庫事務的操作,那麼保證多個事務的一致性就是可以需要去解決的問題。

多機sequenceID

當系統是單資料庫例項的時候,獲取唯一主鍵就很簡單,如從orable序列中獲取即可。那麼當我們的資料表橫向拆分為多表的時候,主鍵如何保證唯一性就是一個問題。


其他要素


分散式快取

隨著業務量不斷攀升,需要快取的熱點資料不斷增多,那麼如何保證海量的快取資料穩定?

分散式日誌

在分散式系統下,使用者完成一次呼叫的日誌將雜湊在多臺機器上,那麼日誌如何追蹤?

以上只是我目前整理出的分散式系統中常見的問題,應該是不完整的,後面有新的內容會再進行補充。

後面的文章將一一針對上面提出的問題進行探討和解答。