<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          zkfire分布式即時聊天服務(wù)器

          聯(lián)合創(chuàng)作 · 2023-10-01 09:34

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

            <?xml version="1.0" encoding="UTF-8"?>
             <jive>
                  <!-- 該節(jié)點(diǎn)用于openfire服務(wù)器之間通訊。IP為本機(jī)IP地址,需其他服務(wù)器能訪問到 -->
          <notice>10.10.152.180:3004</notice>
                   <!-- zoo節(jié)點(diǎn)用于配置zkfire的zookeeper服務(wù)。如果用其他zk服務(wù)器,那么這個節(jié)點(diǎn)可以去掉。-->
             <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>
                  
                <!-- 該節(jié)點(diǎn)用于連接zk服務(wù)器,如果連接zkfire自身的zk服務(wù)器,那么該節(jié)點(diǎn)可以去掉 -->
               <zClient>127.0.0.1:3181</zClient>
             </jive>

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

          有任何問題請隨時email給我[email protected]

          瀏覽 24
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  精品人伦一区二区三区蜜桃网站 | 欧美日韩视频在线播放 | 国产国语亲子伦亲子 | 国产性爱一区二区 | 欧美色图亚洲色图另类 |