深刻認識Tigase XMPP Server(上)數據庫
做者:chszs,轉載需註明。博客主頁:http://blog.csdn.net/chszs
跨域
本文的目的是深刻認識Tigase XMPP Server的特性。瀏覽器
一、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引擎上。
二、Tigase XMPP Server模塊化
全球大約有1億的設備鏈接到Tigaseserver上,全球大約有1100臺server部署執行着Tigaseserver。工具
業界有很是多優秀的開源XMPPserver,比方eJabberd、Openfire、Jabberd二、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端實現了強隔離。
三、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)部署極其簡單
僅僅需改動一點配置。數據庫層不變。
四、Tigase公佈訂閱(PubSub)
Tigase支持完整的公佈/訂閱(PubSub)擴展規範。
可以把消息推送到上百萬的頻道中。每個頻道可以有上百萬的訂閱用戶。
集羣模式下提供了近乎線性的可擴展性和負載分配。
公佈訂閱擴展贊成你建立頻道供用戶訂閱,你可以把內容推送到頻道並公佈。
而後所有內容或者僅僅是更新的內容會被髮送給所有的訂閱者。這樣的基於角色的系統,與羣聊類似。但訂閱者沒必要在線。離線也能把消息推送給用戶(僅僅要用戶一上線就能收到)。
公佈訂閱功能可以作什麼?
1)可以依據興趣分組內容,如體育、科學、天氣、新聞等,並把內容推送給感興趣的人。
2)可以用於災害預警。居民可以依據地理位置進行分組。
3)可以提供基於位置的服務。
4)業務流程可以使用此方式來發送警告。
Tigase的公佈訂閱可以提供:
1)交付近乎實時的通知給訂閱頻道的用戶
2)基於角色的訂閱系統。決定哪些用戶僅僅能接收/讀取內容。哪些用戶可以公佈內容到頻道,以及頻道級管理員、全局管理員。
3)本身定義內容和通知元數據可以很是好地匹配各類需求。
4)靈活的基於用戶的交付系統。可以決定是否僅僅把通知交付給在線訂閱的用戶;是否把通知交付給所有訂閱的用戶;還可以指定通知的過時時間。以及其它很是多選項。
5)支持數百萬的公佈訂閱頻道交付通知給訂閱者。
6)公佈訂閱頻道支持上百萬的訂閱者。
五、消息歸檔(Message Archiving)
Tigase提供了對消息歸檔的完整支持(XEP-0136擴展)。支持數據庫分片(開箱即用),還能做爲外部組建部署到多種server上。
用戶每每但願保存聊天記錄以便之後檢索。基本上眼下大多數聊天client都在本地保存了聊天記錄,但是,用戶每每不止一個設備,用戶但願聊天記錄在每個設備上都能查到。
那麼這些聊天記錄怎樣在各類設備的client之間進行同步呢?
最佳的解決方法就是把聊天記錄存儲在server端。並執行用戶的所有設備都能訪問聊天曆史記錄。
消息歸檔組件贊成把用戶的聊天曆史記錄存儲到server的單個庫中,並能按需搜索。Tigaseserver提供了對消息歸檔擴展的完整支持。
對終端用戶而言,他的工做全然透明。本身主動存儲消息。
消息歸檔提供了聊天文檔的大量特徵:
1)可以在隨意時間打開/關閉聊天記錄
2)支持OTR(Off-The-Record。即聊後即焚)聊天
3)本身主動把羣聊分到不一樣線程以便邏輯區分不一樣的對話
4)依據不一樣的條件,可以靈活地檢索聊天曆史記錄
5)管理員可強制查看所有用戶的聊天記錄,而不管用戶的設置
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
七、Webclient
全功能的Webclient,支持基本的聊天、MUC、公佈/訂閱和不少擴展管理接口。經過CORS,經BOSH或WebSocket鏈接到隨意XMPPserver實現跨站點支持。
CORS:Cross-Origin Resource Sharing。跨域資源共享
功能很是全。支持:1)完整的XMPP規範2)Web優化(更快的重連和聊天狀態恢復)3)消息歸檔支持(從server查看歷史聊天記錄)4)良好的MUC羣聊協議(訪問Web瀏覽器時可以羣聊)5)公佈訂閱(直接從Web瀏覽器公佈消息到公佈訂閱節點)