IM服務器:我的千萬級即時通信服務器集群


一、服務器特點

01、傻瓜式部署,一鍵式啟動;
02、單機支持10萬以上在線用戶聊天(8G內存,如果內存足夠大,並發量可超過10萬);
03、支持服務器集群,集群間高內聚、低耦合,可動態橫向擴展IM服務器,最大支持200台IM服務器的集群;
04、高並發、高穩定性;
05、支持群組聊天;
06、IM業務完全獨立:只需uid(用戶id)和gid(群組id),可方便的將IM業務集成到上層業務中;
07、內置HTTP訪問接口,用於查詢用戶狀態(上線/離線);
07、基於websocket協議,輕松實現網頁端開發;
09、訪問安全支持;
10、服務器體積小,不依賴任何第三方庫和中間件,服務器集群只有三個文件,不到500K;
11、提供外部接口用於處理離線消息;
12、開發成本低,基於websocket協議,消息體為json格式,用戶可擴展自己的消息字段;

二、技術特點

01、實現自主內存管理,避免內存碎片的產生;
02、采用IOCP模型,充分利用CPU多核性能,支持高並發,IO業務處理完全異步;
03、采用“無鎖”化設計,IM服務器內部只有一把鎖;
04、內部大量采用HASH表進行數據管理,查詢速度實現O(1);
05、采用紅黑樹進行定時器管理;
06、嚴格的網絡異常處理,防止高並發下內存訪問異常;

三、服務器集群程序介紹

1、imserver.exe
概要介紹:IM通信服務
默認端口:8210
功能說明:
1、轉發用戶間的點對點消息;
2、轉發群組消息;
3、群組的創建、銷毀以及將指定用戶加入到指定群組;

如果在線用戶數量超出單台imserver的配置,則需要建立IM服務器集群,不同的用戶會登錄在不同的IM服務器上。 在集群模式下,需要importal.exe和improxy.exe程序的支持。
假設一台imserver支持10萬用戶,你的上層業務需要支持百萬級在線聊天,則需要10台IM服務器。此時這10台服務器 的管理和通信需要如下兩個服務支持。

2、importal.exe
概要介紹:負載均衡服務
默認端口:8510
功能說明:
1、實時更新集群中所有聊天服務器上的用戶狀態(在線、離線);
2、提供HTTP接口,用於查詢集群中所有IM服務器的地址,以及當前每台服務器上在線用戶數;
3、提供HTTP接口,用於查詢指定用戶的在線狀態;

使用說明:
1、上層業務通過“/importal/getimserverlist.do”接口獲取集群中所有IM服務器列表;
2、根據當前IM服務器上登錄的用戶數量,來決定用戶登錄到哪台IM服務器上;

3、improxy.exe
概要介紹:消息轉發服務。
功能說明:
1、連接importal服務,獲取集群中所有imserver服務器地址;
2、轉發登錄在不同imserver服務器上的用戶消息和群組消息;

四、如何建立IM服務器集群

只需一分鍾,一個配置項。
1、部署importal服務,雙擊importal.exe即可。
2、配置imserver上的imconfig.ini文件
通過imconfig.ini配置文件中的PortalServer字段設置portal服務器的地址。如:PortalServer=127.0.0.1:8510。
imserver服務器啟動會讀取該配置項,並連接到importal服務上。
3、部署improxy服務,雙擊improxy.exe即可,improxy會通過importal獲取所有IM服務器。

注意:imserver、importal、improxy最好分別部署在不同的服務器上。

五、演示地址

單機用戶5萬時的並發演示

六、下載地址

點擊此處訪問下載地址

七、web調用案例

見文章《IM服務器:一個使用imserver服務器進行聊天的web端案例


免責聲明!

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



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