tigase集群整理

感觉上当了,tigase的默认集群方案并不理想,文档给出的也就只能到50w在线用户;并没有想首页写的那样,单机50w,很好的集群;它另外一个集群包是收费的而且不便宜;

ps:做IM还是尽早放弃xmpp,自己用mqtt写服务器吧

默认集群策略

官方文档:

https://projects.tigase.org/projects/tigase-server/wiki/Default_clustering_strategy

总的不适合做大集群,看了商业组件ACS的测试文档,默认的5个节点到40w多的样子;

大致的处理流程是:收到packet的节点(first节点),把packet发我所有的集群节点进行处理(怎么分发的这里文档写的有点不清楚,如果点对点应该是一个环处理,一个节点处理了,在给另外一个节点,只要有处理就返回给first节点;如果是群聊和上下线状态同步,应该是全部分发);集群的其他节点处理后,最终会回到第一个节点;如果没有处理就是离线处理;

所以,默认集群跨大在线连接数应该可以,但是对于想增加消息量,不理想,集群越大反而负载越高;

收费ACS组件

http://www.tigase.com/content/tigase-acs-advanced-clustering-strategy

商业组件是定期去获取license,如果获取不到,回关闭服务;(没办法免费用,对开发测试可以)

看下他们的测试文档,没有具体用过;

问了下价格是:2000$/服务器/每年


默认集群处理和扩展

默认集策略就是处理简单,其他的组件都不用改动;看了下acs包里的jar,还是改了不少东西;

想自己修改集群策略看来不是简单的事情,还要兼顾其他组件;(以后再说)


记录下集群传输的报文

第一个节点发出去:

群节点发送策略方法:List<JID> tigase.cluster.strategy.DefaultClusteringStrategy.getNodesForPacketForward

发送:tigase.cluster.ClusterController.sendToNodes

<?xml version="1.0" encoding="utf-8"?>

<cluster xmlns="tigase:cluster" type="set" to="sess-man@s2-4" from="sess-man@dell-pc" id="cl-12">
  <control>
    <visited-nodes>
      <node-id>sess-man@dell-pc</node-id>
    </visited-nodes>
    <method-call name="sess-man-user-connected-sm-cmd">
      <par name="userId">39@im.xx.com</par>
      <par name="resource">DELL-PC</par>
      <par name="connectionId">c2s@dell-pc/192.168.2.203_5522_192.168.2.203_17177</par>
      <par name="xmppSessionId">6268b3ff-93ed-410d-a888-8babc70cbf63</par>
      <par name="auth-time">19551</par>
    </method-call>
    <first-node>sess-man@dell-pc</first-node>
  </control>
</cluster>


返回到第一个节点:ClusterController.handleClusterPacket

<?xml version="1.0" encoding="utf-8"?>

<cluster xmlns="tigase:cluster" from="sess-man@dell-pc" type="set" id="cl-5688" to="sess-man@dell-pc">
  <control>
    <visited-nodes>
      <node-id>sess-man@dell-pc</node-id>
      <node-id>sess-man@s3-1</node-id>
    </visited-nodes>
    <method-call name="sess-man-packet-forward-sm-cmd"/>
    <first-node>sess-man@dell-pc</first-node>
  </control>
  <data>
    <message xmlns="jabber:client" from="39@im.xx.com/DELL-PC" type="chat" id="ab21a" to="6@im.xx.com/DELL-PC">  
      <body>12</body>
      <active xmlns="http://jabber.org/protocol/chatstates"></active>
    </message>
  </data>
</cluster>

Load balancing external components in cluster mode

http://www.tigase.org/content/load-balancing-external-components-cluster-mode

http://www.tigase.org/content/basic-configuration-options

组件端:

config-type=--gen-config-comp

--admins=wyadmin@im.xx.com,mobile@im.xx.com
--virt-hosts = im.xx.com

--debug=server,xmpp


--user-db=mysql
--user-db-uri=jdbc:mysql://192.168.1.15:3306/tigasedb2?user=tigase2&password=tigase2&useUnicode=true&characterEncoding=UTF-8&autoCreateUser=true






#组件订阅发布
--comp-name-1 = pubsub
--comp-class-1 = tigase.pubsub.PubSubComponent


#多人聊天
--comp-name-3= muc
--comp-class-3= tigase.muc.MUCComponent
#不添加该代码,以默认配置创建的房间会被锁住,其他人无法加入
muc/muc-lock-new-room[B]=false
muc/default_room_config/muc#roomconfig_persistentroom=true
muc/default_room_config/muc#roomconfig_enablelogging=true

#组件部分
--external=muc.im.xx.com:muc-pass:connect:5270:im.xx.com;s2-4.im.xx.com;s3-1.im.xx.com:accept,pubsub.im.xx.com:pubsub-pass:connect:5271:im.xx.com;s2-4.im.xx.com;s3-1.im.xx.com:accept


服务端:


--comp-name-1 = ext
--comp-class-1 = tigase.server.ext.ComponentProtocol
--external = muc.im.xx.com:muc-pass:listen:5270:im.xx.com:accept:ReceiverBareJidLB,pubsub.im.xx.com:pubsub-pass:listen:5271:im.xx.com:accept:SenderBareJidLB




转载于:https://my.oschina.net/greki/blog/284516

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值