天天看點

深入認識Tigase XMPP Server(上)

版權聲明:本文為部落客chszs的原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chszs/article/details/41280957

深入認識Tigase XMPP Server(上)

作者:chszs,轉載需注明。部落格首頁:

http://blog.csdn.net/chszs

本文的目的是深入認識Tigase XMPP Server的特性。

1、Tigase HTTP API

實作XMPP和HTTP之間的橋梁,可通過REST調用實作對Tigase安裝的管理和維護,可通過腳本API在運作時進行擴充。

使用HTTP API元件,可以:

1)下載下傳Tigase XMPP伺服器運作時的統計,它包含了1000種不同的性能度量。可以做到輕松、快速的監控和早期預警等功能。

2)通過REST API管理Tigase XMPP伺服器,實作Tigase伺服器與第三方維護、管理系統的內建。

3)靈活的腳本架構,可以在運作時添加管理任務,可以在擴充管理和維護功能時無需重新開機服務。

4)靈活的HTTP API架構,可以添加更多的服務并托管到XMPP引擎上。

2、Tigase XMPP Server

全球大約有1億的裝置連接配接到Tigase伺服器上,全球大約有1100台伺服器部署運作着Tigase伺服器。

業界有很多優秀的開源XMPP伺服器,比如eJabberd、Openfire、Jabberd2、Prosody,還有一些優秀的商業XMPP伺服器,比如lsode、Jabber XCP等。在XMPP.ORG網站上可以看到完整的清單。

Tigase XMPP伺服器是相當獨特的,它完全支援最新的規範(如RFC6120-XMPP CORE、RFC6121-XMPP IM和其它擴充)。

1)高度優化的。主二進制檔案小于1MB,可運作于10MB記憶體的裝置上。

2)高度子產品化。每個部件或元件都可以通過配置加載或替代。

3)非常靈活。內建到系統中很友善,支援開箱即用的叢集,無需尋找附加軟體或擴充庫。

4)為低、中、高檔伺服器而設計。還在Amazon的EC2雲上廣泛測試過。

5)良好的測試。有專門的工具來運作自動化測試,還可以手動運作相容性測試,以及大量的負載測試。所有的測試結果都是公開的,所有測試使用的工具和配置細節都是公開的。

6)支援腳本。支援Groovy、Python、Ruby、Scala等腳本語言編寫擴充。

7)易于監控。可以通過HTTP、SNMP、JMX、XMPP等方式監控伺服器。

8)支援SSL。Tigase從設計上就保證了安全,保護使用者的隐私。API不允許從一使用者通路另一使用者的資料,在伺服器端實作了強隔離。

3、Tigase ACS

Tigase單個安裝(One Installation)可以支撐1400萬線上使用者;單個安裝美妙可以處理50萬條消息;單個安裝可以實作40台伺服器叢集。即Tigase ACS。

Tigase ACS是Tigase XMPP伺服器的商業級的叢集實作。它專注于某些目标,如聯系人清單超過10個,以及大規模XMPP系統工作在叢集模式:

1)在安裝時解決網絡流量的問題

2)允許擴充到上百萬的線上使用者或裝置

3)允許把負載配置設定到多種機器上

4)實作系統的高可用,預防服務的中斷

5)支援超大群聊

6)提供消息推送服務

使用ACS可以達到:

1)降低叢集節點間的網絡流量10倍以上

2)減少CPU使用率至少5倍

3)在高負載情況下也能提供可靠服務

4)支援大量的連接配接

在設計上可處理500萬以上的線上使用者。我們測試過産品狀态,支援150萬線上使用者。

5)支援多伺服器

設計上可以在50台以上伺服器上有效工作。測試過10個叢集節點,産品系統運作在40台機器的情況。

6)部署極其簡單

隻需修改一點配置,資料庫層不變。

4、Tigase釋出訂閱(PubSub)

Tigase支援完整的釋出/訂閱(PubSub)擴充規範。可以把消息推送到上百萬的頻道中,每個頻道可以有上百萬的訂閱使用者。叢集模式下提供了近乎線性的可擴充性和負載配置設定。

釋出訂閱擴充允許你建立頻道供使用者訂閱,你可以把内容推送到頻道并釋出。然後全部内容或者隻是更新的内容會被發送給所有的訂閱者。這種基于角色的系統,與群聊類似,但訂閱者不必線上,離線也能把消息推送給使用者(隻要使用者一上線就能收到)。

釋出訂閱功能可以做什麼?

1)可以根據興趣分組内容,如體育、科學、天氣、新聞等,并把内容推送給感興趣的人。

2)可以用于災害預警,居民可以根據地理位置進行分組。

3)可以提供基于位置的服務。

4)業務流程可以使用此方式來發送警告。

Tigase的釋出訂閱可以提供:

1)傳遞近乎實時的通知給訂閱頻道的使用者

2)基于角色的訂閱系統,決定哪些使用者隻能接收/讀取内容,哪些使用者可以釋出内容到頻道,以及頻道級管理者、全局管理者。

3)自定義内容和通知中繼資料可以很好地比對各種需求。

4)靈活的基于使用者的傳遞系統,可以決定是否隻把通知傳遞給線上訂閱的使用者;是否把通知傳遞給所有訂閱的使用者;還可以指定通知的過期時間,以及其他很多選項。

5)支援數百萬的釋出訂閱頻道傳遞通知給訂閱者。

6)釋出訂閱頻道支援上百萬的訂閱者。

5、消息歸檔(Message Archiving)

Tigase提供了對消息歸檔的完整支援(XEP-0136擴充),支援資料庫分片(開箱即用),還能作為外部組建部署到多種伺服器上。

使用者往往希望儲存聊天記錄以便以後檢索,基本上目前大多數聊天用戶端都在本地儲存了聊天記錄,但是,使用者往往不止一個裝置,使用者希望聊天記錄在每個裝置上都能查到。那麼這些聊天記錄如何在各種裝置的用戶端之間進行同步呢?

最佳的解決方法就是把聊天記錄存儲在伺服器端,并運作使用者的所有裝置都能通路聊天曆史記錄。消息歸檔元件允許把使用者的聊天曆史記錄存儲到伺服器的單個庫中,并能按需搜尋。Tigase伺服器提供了對消息歸檔擴充的完整支援。對終端使用者而言,他的工作完全透明,自動存儲消息。

消息歸檔提供了聊天文檔的大量特征:

1)可以在任意時間打開/關閉聊天記錄

2)支援OTR(Off-The-Record,即聊後即焚)聊天

3)自動把群聊分到不同線程以便邏輯區分不同的對話

4)根據不同的條件,可以靈活地檢索聊天曆史記錄

5)管理者可強制檢視所有使用者的聊天記錄,而不管使用者的設定

6)支援開箱即用的資料庫配置設定,允許資料和負載進行配置設定

6、JaXMPP庫

提供Android移動裝置、GWT Web用戶端、獨立的Java應用程式等庫,完全支援XMPP/Jabber規範及其所有主要的擴充。

JaXMPP代表Java XMPP,但它不僅是Java庫,它還相容GWT,是以可以用于開發Web用戶端,它還相容Android Java,是以可以用于開發帶XMPP支援的Android移動應用,以及正常的Java應用程式。

此用戶端庫的功能完整,而且代碼開源并免費。

JaXMPP庫網站: 

https://projects.tigase.org/projects/jaxmpp2

JaXMPP庫文檔: 

https://projects.tigase.org/projects/jaxmpp2/wiki

7、Web用戶端

全功能的Web用戶端,支援基本的聊天、MUC、釋出/訂閱和許多擴充管理接口,通過CORS,經BOSH或WebSocket連接配接到任意XMPP伺服器實作跨站點支援。

CORS:Cross-Origin Resource Sharing,跨域資源共享

功能非常全,支援:

1)完整的XMPP規範

2)Web優化(更快的重連和聊天狀态恢複)

3)消息歸檔支援(從伺服器檢視曆史聊天記錄)

4)良好的MUC群聊協定(通路Web浏覽器時可以群聊)

5)釋出訂閱(直接從Web浏覽器釋出消息到釋出訂閱節點)