分布式即時聊天服務器:zkfire

jopen 11年前發布 | 63K 次閱讀 zkfire 電話/通訊/IM聊天 Openfire

zkfire = zookeeper+openfire(3.8.1) 
   Openfire 采用Java開發,開源的實時協作(RTC)服務器基于XMPP(Jabber)協議,您可以使用它輕易的構建高效率的即時通信服務器. 
  根據對xmpp與openfire的理解,我在openfire中相應的地方植入少量的代碼,并把zookeeper包也一并打包到zkfire中。使用zookeeper(http://zookeeper.apache.org/)管理集群中的節點。
  客戶登陸集群中的不同服務器進行通信就如登陸同一臺服務器一樣。
  openfire自身也有一套集群的實現,使用了oracle 的coherence的中間件,使用時要自己加入相應的jar包與集群插件。
  之所以又自己開發了一套集群實現,一個是給集群提供多一些選擇,一個是興趣^_^,讓openfire天然就支持集群
  
  zkfire使用的場景:
  zkfire中有zookeeper的服務器監聽與客戶端連接程序,但可以不依賴自身的zookeeper服務,可以在openfire之外另外開啟其他zookeeper服務,此時只需指定
  cluster.xml配置文件中zClient節點的連接地址即可。
  如果只是zookeeper單機服務,那么所有openfire服務器只需要連到同一個zookeeper服務器就可以完成openfire的集群
  如果是zookeeper集群,根據zookeeper的集群特點,集群中節點不應該少于3臺。如果超過一半的zk節點宕機,那么整個集群境將不能正常的工作。
  
  使用方法:
  將zkfire.jar包替換lib下的openfire.jar,之所以命名zkfire.jar只是為了易于區分,名字可以隨意取。并將cluster.xml放到bin目錄下。
  zkfire基于單openfire的實現,所以如果使用的話建議不要開啟openfire自身的集群功能。
  在安裝的openfire目前bin下,放入cluster.xml文件。
  示例內容如下: 

  <?xml version="1.0" encoding="UTF-8"?>
   <jive>
        <!-- 該節點用于openfire服務器之間通訊。IP為本機IP地址,需其他服務器能訪問到 -->
<notice>10.10.152.180:3004</notice>
         <!-- zoo節點用于配置zkfire的zookeeper服務。如果用其他zk服務器,那么這個節點可以去掉。-->
   <zoo> 
             <tickTime>2000</tickTime>
             <initLimit>10</initLimit>
             <syncLimit>5</syncLimit>
             <dataDir>E:/zoo/data</dataDir>
             <clientPort>3181</clientPort>
              <server name="server.1">10.10.152.180:2888:3888</server>
              <server name="server.2">10.10.152.185:2888:3888</server>
              <server name="server.3">10.10.152.189:2888:3888</server>
              <myid>1</myid>
   </zoo>
        
      <!-- 該節點用于連接zk服務器,如果連接zkfire自身的zk服務器,那么該節點可以去掉 -->
     <zClient>127.0.0.1:3181</zClient>
   </jive>

 zoo中的節點server用于配置zookeeper的集群,myid指定本身zookeeper服務器的myid值,server.X 這個數字就是對應myid中的數字,集群中不同zk服務器的myid值不同。
   zoo中其他節點的內容皆對應zk配制文件的鍵值內容。這里不再詳述,可以參考 http://rdc.taobao.com/team/jm/archives/665,但dataDir與clientPort是必須配置,用于指定 zookeeper數據文件地址與監聽端口。   

項目主頁:http://www.baiduhome.net/lib/view/home/1371819663635

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!