深入認識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 XMPPserver執行時的統計,它包括了1000種不同的性能度量。能夠做到輕松、高速的監控和早期預警等功能。
2)通過REST API管理Tigase XMPPserver。實現Tigaseserver與第三方維護、管理系統的集成。
3)靈活的腳本框架,能夠在執行時加入管理任務。能夠在擴展管理和維護功能時無需重新啟動服務。
4)靈活的HTTP API框架。能夠加入很多其它的服務並托管到XMPP引擎上。
2、Tigase XMPP Server
全球大約有1億的設備連接到Tigaseserver上,全球大約有1100台server部署執行着Tigaseserver。
業界有非常多優秀的開源XMPPserver,比方eJabberd、Openfire、Jabberd2、Prosody,另一些優秀的商業XMPPserver,比方lsode、Jabber XCP等。
在XMPP.ORG站點上能夠看到完整的列表。
Tigase XMPPserver是相當獨特的,它全然支持最新的規范(如RFC6120-XMPP CORE、RFC6121-XMPP IM和其它擴展)。
1)高度優化的。主二進制文件小於1MB。可執行於10MB內存的設備上。
2)高度模塊化。
每一個部件或組件都能夠通過配置載入或替代。
3)非常靈活。
集成到系統中非常方便,支持開箱即用的集群。無需尋找附加軟件或擴展庫。
4)為低、中、高檔server而設計。
還在Amazon的EC2雲上廣泛測試過。
5)良好的測試。
有專門的工具來執行自己主動化測試,還能夠手動執行兼容性測試。以及大量的負載測試。
全部的測試結果都是公開的,全部測試使用的工具和配置細節都是公開的。
6)支持腳本。
支持Groovy、Python、Ruby、Scala等腳本語言編寫擴展。
7)易於監控。能夠通過HTTP、SNMP、JMX、XMPP等方式監控server。
8)支持SSL。Tigase從設計上就保證了安全,保護用戶的隱私。
API不同意從一用戶訪問另一用戶的數據。在server端實現了強隔離。
3、Tigase ACS
Tigase單個安裝(One Installation)能夠支撐1400萬在線用戶;單個安裝美妙能夠處理50萬條消息;單個安裝能夠實現40台server集群。即Tigase ACS。
Tigase ACS是Tigase XMPPserver的商業級的集群實現。它專注於某些目標。如聯系人列表超過10個,以及大規模XMPP系統工作在集群模式:
1)在安裝時解決網絡流量的問題
2)同意擴展到上百萬的在線用戶或設備
3)同意把負載分配到多種機器上
4)實現系統的高可用,預防服務的中斷
5)支持超大群聊
6)提供消息推送服務
使用ACS能夠達到:
1)降低集群節點間的網絡流量10倍以上
2)降低CPU利用率至少5倍
3)在高負載情況下也能提供可靠服務
4)支持大量的連接
在設計上可處理500萬以上的在線用戶。
我們測試過產品狀態,支持150萬在線用戶。
5)支持多server
設計上能夠在50台以上server上有效工作。測試過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擴展)。支持數據庫分片(開箱即用),還能作為外部組建部署到多種server上。
用戶往往希望保存聊天記錄以便以后檢索。基本上眼下大多數聊天client都在本地保存了聊天記錄,可是,用戶往往不止一個設備,用戶希望聊天記錄在每一個設備上都能查到。
那么這些聊天記錄怎樣在各種設備的client之間進行同步呢?
最佳的解決方法就是把聊天記錄存儲在server端。並執行用戶的全部設備都能訪問聊天歷史記錄。
消息歸檔組件同意把用戶的聊天歷史記錄存儲到server的單個庫中,並能按需搜索。Tigaseserver提供了對消息歸檔擴展的完整支持。
對終端用戶而言,他的工作全然透明。自己主動存儲消息。
消息歸檔提供了聊天文檔的大量特征:
1)能夠在隨意時間打開/關閉聊天記錄
2)支持OTR(Off-The-Record。即聊后即焚)聊天
3)自己主動把群聊分到不同線程以便邏輯區分不同的對話
4)依據不同的條件,能夠靈活地檢索聊天歷史記錄
5)管理員可強制查看全部用戶的聊天記錄,而無論用戶的設置
6)支持開箱即用的數據庫分配,同意數據和負載進行分配
6、JaXMPP庫
提供Android移動設備、GWT Webclient、獨立的Java應用程序等庫,全然支持XMPP/Jabber規范及其全部基本的擴展。
JaXMPP代表Java XMPP。但它不僅是Java庫,它還兼容GWT。因此能夠用於開發Webclient。它還兼容Android Java,因此能夠用於開發帶XMPP支持的Android移動應用,以及常規的Java應用程序。
此client庫的功能完整,並且代碼開源並免費。
JaXMPP庫站點:
https://projects.tigase.org/projects/jaxmpp2
JaXMPP庫文檔:
https://projects.tigase.org/projects/jaxmpp2/wiki
7、Webclient
全功能的Webclient,支持基本的聊天、MUC、公布/訂閱和很多擴展管理接口。通過CORS,經BOSH或WebSocket連接到隨意XMPPserver實現跨站點支持。
CORS:Cross-Origin Resource Sharing。跨域資源共享
功能非常全。支持:
1)完整的XMPP規范
2)Web優化(更快的重連和聊天狀態恢復)
3)消息歸檔支持(從server查看歷史聊天記錄)
4)良好的MUC群聊協議(訪問Web瀏覽器時能夠群聊)
5)公布訂閱(直接從Web瀏覽器公布消息到公布訂閱節點)