天天看點

網際網路網站架構更新----分布式環境的建構

   随着網絡流量爆發式增長,幾百人維護一個項目将是一個可怕的噩夢,業務拆分勢在必行。拆分的業務形成一個個獨立的系統,系統間的協調又變成了一個棘手的問題,是以維護這些系統間協調關系的分布式環境元件将發揮至關重要的作用。

  由于拆分後的系統部署于不同機器的不同叢集之中,系統間的協作要靠通信來解決,是以分布式環境元件必須解決資料流的問題。根據不同的場景,資料流又分建構于遠端調用架構(如RMI、Hessian、ICE、JNDI實作等)之上的即時調用資料流,建構于消息中間件之上的異步消息(持久或非持久)資料流,建構于資料拆分元件(分庫分表、讀寫分離等)之上的存儲資料流,建構于叢集系統控制(叢集動态、配置推送,如PubSubHubBub)的叢集協調資料流,以及建構于監控系統之上的日志及控制資料流。在這些資料流的傳輸過程中需要有負載均衡和容錯的支援,這些資料流總的來說又分為業務資料流和控制資料流,業務資料流傳輸業務資料,控制資料流可以将一個個小的叢集系統連接配接成一個大的叢集系統,并使這個叢集系統的運作狀态直覺的展示于眼前,同時還可以向這個叢集系統發送控制指令直接幹預它。

通信服務架構提供系統間即時的同步和異步調用,需要具備負載均衡和容錯的機制,解決的是一個業務叢集調用另一個業務叢集的問題,根據不同的叢集方案,業務叢集内部各台機器内部的狀态又分為可共享和不可共享兩種,一般不建議叢集内部直接通過通信來共享内部狀态,最好通過集中式緩存或DB來共享狀态。

消息中間件提供異步的持久和非持久消息的釋出和訂閱,持久消息理論上應當具備絕對的可靠性。此系統解決的是将網站業務流程中非核心的業務流程剝離出來,使用異步消息的形式将業務解耦,提高主業務流程的響應速度,同時解決的另一個問題是通過可靠的存儲和傳輸,保證多個業務系統資料的最終一緻。

分布式資料層提供分庫分表、讀寫分離、Sql監控以及容災容錯的功能。這個元件不僅僅可以解決資料的拆分、讀寫分離問題,還可以解決資料的多寫,多個Slave讀取的負載均衡及容錯,多機房的容災,資料庫異常的告警等多種功能,如果單獨部署服務的話還可以控制資料庫連接配接數。

中轉樞紐提供服務的釋出和調用關系以及消息的釋出和訂閱關系,連接配接通信服務架構和消息中間件的各個用戶端和服務端,感覺一個個業務叢集中的每台機器及服務,組成一個大的叢集,協調這個大叢集中服務的對應關系。如果這個樞紐對業務開放的話還可以推送業務配置資訊。

監控中心提供對前面四個元件各種資料的收集和分析,實時展示整個大叢集各個叢集和服務目前的運作狀況和互相間的協調關系,并進行各種橫向和縱向的對比為決策提供依據,并可以向叢集内的機器或服務發出控制指令,直接幹預叢集間的協調關系。如果對業務開放的話還可以監控業務資料和進行業務控制幹預。

繼續閱讀