Openfire 系統架構


一、架構概述

可伸縮系統架構是指除功能性需求外通過添加可伸縮技術元素,如:連接池、會話、包路由、分布式緩存、負載均衡等技術。使系統能支持大用戶並發的訪問的系統架構。通過連接池有效共享Socket。用戶會話保存用戶在線信息。包路由實現數據包的分發,傳輸。分布式緩存提高常用數據訪問性能。負載均衡分發客戶請求。可伸縮是服務端系統的重要技術,因為好多場景都要求系統能隨着用戶訪問量的增加而進行可伸縮,特別是互聯網產業高速發展的今天

 

二、伸縮架構

系統分為連接管理器,業務服務器,組件服務器,代理服務器、負載均衡服務器和即時通訊客戶端。因為系統的可伸縮架構主要體現在連接管理器和業務服務器這兩系統角色,所以本章主要對這兩部分進行講述。系統架構的各部分功能如下: 

負載均衡:是通過負載策略分發客戶端請求,后端的連接管理器退出服務后,請求不在分發給本台連接管理器。

連接管理器:是保存客戶端連接,實現系統用戶並發上的可伸縮,連接服務器不包含業務邏輯代碼它的功能只是負載保持客戶連接和轉發客戶請求。

業務服務器:業務邏輯都實現在業務服務器包括用戶驗證模塊、用戶會話模塊、在線狀態模塊、路由模塊、文本消息模塊等。

組件服務器:是用於擴展非即時通訊本身核心功能的業務,是通過業務服務器包路由過來的客戶端請求,並通過組件服務器應答客戶端。

代理服務器:是負責適配不同即時通訊協議實現不同即時通訊的互聯。

 

                                         

 

系統架構中連接管理器和數據包路由模塊是整個可伸縮系統的最重要部分:(1)當用戶連接上服務器要保存用戶的連接和會話,這數據隨着在線用戶數的增加會不斷增加。(2)在用戶連接得到擴展的基礎上,業務模塊可以進一步切割成不同的業務單元負責不同的功能,通過路由表把業務請求正確路由到可以完成的業務單元中。 用戶連接的擴展和業務單元的擴展就實現了系統的可伸縮。要實現以上兩點,就產生了連接、會話、數據包和路由表這幾個概念。連接用於保存每個客戶端的網絡層數據,會話用於保存用戶業務相關的數據,提高執行效率。數據包代表了不同的業務請求通過路由表使包在不同服務器組單元之間轉發,實現業務單元的可擴展。 

 

三、線程模型

系統采用多線程技術平衡IOCPU的資源利用,使服務器的IOCPU調用重疊在一起,從而提高系統性能。同時通過線程加上異步阻塞隊列的運用,使任務可以分離和異步執行。連接管理器和業務服務器都屬於不同的進程,進程內開啟多條線程分別執行不同任務。 

 

                         

 

連接管理進程內會保存客戶端連接,如果超過服務器可承擔的負載,負載均衡會把新的請求分發到負載低的連接管理器。業務服務器進程內保存了在線會話路由表,通過業務服務的路由表,實現了組件數據包的路由,路由表可以路由所有JID實體,包括客戶端、服務端、組件。如果不是本業務服務器的JID,而是組件服務器的JID,會把包路由到指定的組件服務器進一步處理客戶請求。

因為業務服務器包含的是用戶的狀態數據,要伸縮業務服務必須同步節點間的狀態,所以有群集線程負責處理節點間的狀態數據同步。架構中連接管理器進程和業務服務器進程是可以部署到不同的主機。而進程下通過創建不同線程完成不同的工作,因為多線程平衡了CPUIO資源的利用,使主機資源利用更充分。 

 

四、連接管理器

 因為在大並發環境下,連接資源需要隨着用戶並發訪問量的增加而增加,所以可伸縮的連接資源就是支持大訪問量的關鍵技術。系統通過增加獨立部署的連接管理器程序提高並發的能力,連接管理的前端是一台負載均衡設備,它負責把用戶訪問分配到指定連接管理器,多台連接管理器在訪問服務器。使用連接管理器后,服務器的連接池是提供給連接管理器連接,而一台連接管理器也提供指定數量的連接給客戶端訪問,這樣通過添加連接管理器,以適應用戶訪問量

 

                           

 

Author:samuelchoi

Email:samuelchoi#163.com 

Blog:www.cnblogs.com/samuelchoi 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM