ActiveMQ几种集群拓扑架构分析

最近一直在研究ActiveMQ的集群功能,遍寻了很多资料,发现了不少有趣的知识。比如我们常常使用的是多个ActiveMQ Broker之间两两互联的方式,在图论中也叫完全图(complete graph)。可是ActiveMQ不仅仅只有完全图这种拓扑结构,今天介绍的就是其他几种有用的集群架构。

资料参考RedHat Fuse Esb Enterprise

1. 集线器拓扑(Concentrator Topology)

Concentrator Topology

适用场景:生产者或消费者端有大量连接,而另一端连接相对较少。

集线器拓扑可处理生产者和消费者两端连接数量相差较大的场景,相比完全图来说,集群的负载较低。第一层是多个互不相连的Broker,每个Broker都负责与大量的生产者(消费者)客户端进行连接。第二层是相对较少数量的Broker,负责与数量较少的消费者(生产者)客户端进行连接,且第二层的Broker与第一层的每一个Broker之间都建立连接。

这里说的集群负载,主要指的是由于消费者建立带来的Advisory Message风暴。

2. 星状拓扑(Hub and spokes topology)

Hub and Spoke Topology

适用场景:星状结构和集线器拓扑有点类似,都是适用于两端的客户端数量相差较大的场景。但是星状拓扑更易于维护。

星状拓扑中的H节点是最重要的节点,集群很容易因为H节点的宕机而导致失联。因此H节点需要有更高的配置。但是在拓展性上来说,如果需要拓展一个节点G,只需要在该节点上配置连接H节点,并设置duplux=true,H节点上无需做任何配置调整。也就是说在拓展性上便利到了极致。

3. 树形拓扑(Tree Topology)

Tree Topology

适用场景:适用于根据自然的环境限制(如火墙)来搭建这种拓扑结构。

每一个根节点都是关键节点,特别是R节点。因此这种拓扑的使用场景较少,我能想到的场景也就是网络线缆,火墙等因素所导致不得不使用这种拓扑架构。

4. 网格拓扑

Mesh Topology

适用场景:适用于根据自然的环境限制(如火墙)来搭建这种拓扑结构。

相比树形结构,有较健壮的结构。但是每增加一个节点,都需要考虑集群转发节点数量的问题(networkTTL)。因此需要有一个机制在每增加一个节点的时候都需要调整相连节点的networkTTL。

5. 完全图(Complete Graph)

The Complete Graph, K5

适用场景:适用于能支持自发现Multicast Discovery的网络场景。

使用完全图的场景下,集群间的互动会比较复杂。比如在A上添加一个消费者,A会将Advisory Message发送给BCDE四个节点,而BCDE收到消息后,在自身上建立集群转发的消费者,而后又会广播一次Advisory Message给其他节点。假设集群中有N个Broker,那么一个新的消费者的建立就会导致集群产生N*(N-1)次消息处理。但如果后续有同个目的地的新消费者连接相同broker,那集群只会有(N-1)次消息处理。

结合集线器拓扑架构来看看集群负载的情况。若使用集线器拓扑,假设第一层M个Broker,第二层N个Broker,一个新的消费者连接第一层的任意一个broker,集群只会产生N+M次消息处理。后续有相同目的地的消费者连接相同broker,集群会有M次消息处理。

举个例子,如果使用完全图,8个节点的Broker,一个新的消费者建立会有56次消息处理,后续相同目的地的消费者连接相同mq则是7次消息处理。第一层8个节点,第2层2个节点的集线器拓扑,集群只有10次消息处理,后续相同目的地的消费者连接第一层相同mq只有2次消息处理。

当然,完全图的这种不足可以进一步通过修改源码中的advisory机制来实现,只需要在发送Advisory消息的时候,判断一下是否是集群转发的消费者(以brokername开头的consumerID,中间会有 -> 符号),而后不发送即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,591评论 18 139
  • 资料来源 ActiveMQ分布式网络(Forward Bridge) Network of broker 项目里大...
    MisterCH阅读 1,739评论 0 2
  • Druid 是一个为在大数据集之上做实时统计分析而设计的开源数据存储。这个系统集合了一个面向列存储的层,一个分布式...
    曹振华阅读 8,433评论 1 24
  • 从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流。 转载请声明出处:h...
    Maggie编程去阅读 1,540评论 0 9
  • .《小小旅行箱》. 我是一只旅行箱, 小小的个,大大的能耐, 陪伴美丽女主人六年, 走南闯北; 女主人披起盔甲时,...
    我是二丫阅读 709评论 0 50