Jolestar 2018-12-25
多个集群用zk(单个)+networkconnect(集群之间)
主要思想
mq选举由zk完成
zk可以完成自己的选主,在mq结合zk的时候zk通过节点排他锁的特性---谁先获取节点谁为master来帮mq自动选主,切换
brokername相同就是一个集群
单个集群一般采用networkerconnection(类似多主)---增加吞吐量,也可用zk(主从)---纯粹的高可用
两个集群联合使用一般单个群用zk,群之间用networkconnection透传---多集群负载均衡
一些关键概念
borker指集群中的服务节点
networkConnector节点有以下的属性 conduitSubscriptions -- 多个消费者是否被当做一个消费者 默认true
conduitSubscriptions:默认为true。该值表示多个消费者订阅一个相同的目的地是否在网络上被对待为一个消费者。以上图为例,如果采用默认的分配策略,
P1连续发120条消息,结果应该是C1和C2都收到40条,而C3和C4共收到40条(C3和C4平分这40条),为什么不是C1、C2、C3和C4都收到大概30条呢?因为该值为true,
C3和C4对于S1来说只是一个消费者,而不是两个。注意,如果你的多个网络提供者中的消费者使用了消息选择器(selector),你又设置了conduitSubscriptions为true,
则有可能会导致消息不会被发送到正确的网络消费者从而消息不被消费,因为网络消费者中的消息选择器对生产者的提供者来说是透明的,所以此种情况下,请将conduitSubscriptions设置为false。
一个消费了就没了
下表列举了在networkConnector标签中还可以使用的属性以及其意义。请特别注意其中的duplex属性。如果只从字面意义理解该属性,则被称为“双工模式”;
如果该属性为true,当这个节点使用Network Bridge连接到其它目标节点后,将强制目标也建立Network Bridge进行反向连接。其目的在于让消息既能发送到目标节点,
又可以通过目标节点接受消息,但实际上大多数情况下是没有必要的,因为目标节点一般都会自行建立连接到本节点。所以,该duplex属性的默认值为false。
acitvemq的主从模式--主从之间会同步数据
集群----用networkconnection转发
主从的数据同步和数据源的共享与否有关
数据源
共享数据----用了共有数据源的才共享源,都在共享源上消费---用数据库锁(无需同步一个源)
1,共同的存储位置
2,用数据库存储
不共享数据---直接分流消费---主节每次接到指令就先同步到从节点(发送端需设置持久化),从节点持久化之后,这节点才持久化和处理发送,消费端ack之后就通知从节点也删除消费者ack过的消息
3,用zk
参看:
http://www.cnblogs.com/gossip/p/5981106.html?utm_source=itdadao&utm_medium=referral
http://www.cnblogs.com/gossip/p/5977489.html
主从复制-----需开启持久化才可主宕机之后,从有主的消息
https://yq.aliyun.com/ziliao/426525
主从同步和网桥代理的综合
NetworkConnector 讲解----只是透传转发,不是备份复制
ZooKeeper支持某些特定的四字命令字母与其的交互。它们大多是查询命令,用来获取ZooKeeper服务的当前状态及相关信息。用户在客户端可以通过telnet或nc向ZooKeeper提交相应的命令