Wizzercn / MqttWk

Java + Netty 实现的高并发高可用MQTT服务broker,轻松支持10万并发(有群友实现了130万在线)
Apache License 2.0
635 stars 229 forks source link

关于集群的几个问题 #9

Closed DrmagicE closed 4 years ago

DrmagicE commented 5 years ago
  1. 集群是主从模式的还是无中心化(decentralized)集群呢?
  2. 客户端session会在集群间复制吗? 假设有三个n1,n2,n2,客户端c1。 c1先连接n1节点(clean_session=false),然后断开连接,再连接n2节点,n2节点是否能够恢复该session?
  3. 如果两个相同clientId的客户端c1,c2。同时连接两个节点n1,n2。集群会保证踢掉其中一个客户端吗?
  4. 如果集群出现网络分区的问题,节点间如何恢复?
  5. 如果集群节点crash,有可能导致消息丢失吗?

谢谢

Wizzercn commented 4 years ago

1.非主从,通过redis发布订阅功能来实现集群消息,可自行修改为其他mq; https://github.com/Wizzercn/MqttWk/blob/netty/mqtt-broker/src/main/java/cn/wizzer/iot/mqtt/server/broker/cluster/RedisCluster.java 2.如果节点不一样会先删除原session,在当前节点建立session; https://github.com/Wizzercn/MqttWk/blob/netty/mqtt-broker/src/main/java/cn/wizzer/iot/mqtt/server/broker/protocol/Connect.java 3.同2 4.没有做处理,欢迎提交代码; 5.按理说应该不会,需测试;

DrmagicE commented 4 years ago

谢谢解答