zkfire分布式即時聊天服務(wù)器
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]
