实战分享:activemq 在灾备双活建设中的研究
关注我们获得更多内容
作者简介:刘韬,在中间件领域有多年的实战经验,精通 WebLogic server,Websphere,Jboss,Tomcat,tuxedo,mq,osb等多种中间件技术,对中间件的故障处理、性能优化、升级迁移等需求积累了丰富经验。
概述
activemq 是业界非常流行的、功能强大的、开源消息中间件。以快速、支持多种跨语言客户端和协议著称;完全支持 JMS 1.1 and J2EE 1.4。在各个行业中有大量的应用案例。
由于 activemq 承担着消息服务的重要角色,在这篇文章中我们重点讲述在灾备双活建设中 activemq 设计、规划、部署。
随着各个行业对 IT 灾备建设的重视,越来越多的企业、单位正在筹备、实施 IT 灾备建设。由于早期的建设并没有充分考虑多数据中心下容灾方案,势必在新的多数据中心环境需要做一番整体架构的调整、重建。
本文是对目前业界流行的消费服务产品 active 在灾备双活建设的一些探讨,希望起到抛砖引玉的效果。
目标
灾备双活建设最完美的架构设计:在同城、异地 2 个数据中心,在最极端情况下,例如单数据中心垮掉情况下,保证消息零丢失,支持 7*24 服务要求。
需求描述
机房故障
1) 现象描述
消息队列中间件部署在 A、B 两个不同的机房中,客户端根据负载的策略转发到对应机房的消息中间件,其中 A 或者 B 机房因为断电或者灾难等因素出现故障,无法继续提供服务。此时仅有一个机房正常。
2) 现象图示
3) 服务影响
正常情况下,对于客户端的连接平均分布在两个机房中,出现单个机房故障后,连接在故障机房中的连接会断开,正在执行未提交的事务将会回滚,对于发起的新连接不受任何影响,依然可以通过配置的负载策略访问正常机房中的消息中间件服务。
4) 故障恢复
当机房恢复正常后,启动消息中间件服务,此时,只要主机、网络恢复正常,消息中间件服务就可以启动成功。这时,AB 机房按照负载策略继续处理连接,最终使得每个机房的中间件连接数无限接近。
活动预告
云南的朋友们有福利了,云和恩墨大讲堂-云南站,将于 8.31(下周五)在昆明举办。本次活动邀请到了 ACOUG 联合创始人,Oracle ACE 总监,云和恩墨创始人盖国强先生、云和恩墨西区交付总监郭耀龙先生。演讲议题涵盖 Oracle 18c 的新特性解析和 DBA 的未来、 Oracle 数据库故障诊断、金融行业 PaaS 云数据库平台解决方案等。欢迎各位数据库爱好者报名参与!
服务器DOWN
1) 现象描述
在运行的消息中间件集群架构中,存在 N 个主机,其中任意 N-2 个主机 DOWN 机,不具备服务提供能力,仅剩余大于 1 个主机存活可以提供服务的场景。
2) 现象图示
3) 服务影响
主机 DOWN 掉后,已经连接在该主机消息中间件上的连接会断开,对应的事务会回滚,新的连接不受到影响。
4) 故障恢复
当主机故障处理后,启动故障主机,并启动消息中间件服务。根据负载均衡算法,客户端连接会重新分配到该主机上的节点。
消息中间件节点崩溃
1) 现象描述
在运行的消息中间件集群架构中,存在 N 个节点,其中任意 N-2 个节点崩溃,不具备服务提供能力,仅剩余大于1个节点存活可以提供服务的场景。
2) 现象图示
3) 服务影响
当消息中间件节点崩溃后,已经连接在该主机消息中间件上的连接会断开,对应的事务会回滚,新的连接不受到影响。
4) 故障恢复
当消息队列节点故障处理后,启动消息中间件服务。根据负载均衡算法,客户端连接会重新分配到该节点。
架构设计
架构设计要点
● 采用 activemq 的何种架构来实现上述需求?
采用 主从+Broker-Cluster 方式来实现,主从架构实现了 HA(高可用)功能,借用 zookeeper 的选举投票功能,保证“过半即可用”,所以推荐的 HA 架构的节点数为单数,至少 3 个节点,任何时候垮掉一个节点都不影响正常使用。
同时结合 Broker-Cluster,Broker-Cluster 的部署方式可以解决负载均衡和分布式问题,因为单一主从方式无法解决负载均衡的问题。
● 如何保证未消费消息在各个节点间的同步?
采用 leveldb(LevelDB 是 Google 开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能)实现各个节点间的同步写,保证数据在同一个 Broker-Cluster 组下复制,以 3 个节点为例,同一条堆积消息,在 3个 节点保持同步,在最极端情况下,即使2个节点的数据文件丢失,也能防止数据丢失。
● 如何保证在灾难情况下,消息服务仍然可以正常提供服务?例如考虑最极端情况下,单边数据中心宕机?
采用 2 套主从、2套 Broker-Cluster,并且保证 2 个数据中心各包含一套主从的2个节点,如下图所示,cluster1 的 2 个节点在 B 中心,cluster2 的 2 个节点在 A 中心,即使 A、B 整个数据中心发生灾难,都不影响 jms 服务正常运行。
● 保证在各种灾难场景都实现了 7*24 和消息零丢失吗?
是的,只要保证一个 cluster 下的 2 个节点可用的情况下,不管在任何一种组合下,jms 服务都是可用的。
● 客户端如何来调用集群的 jms 地址
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD,
"failover:(tcp://192.168.40.140:61616,tcp://192.168.40.140:61617,tcp://192.168.40.141:61619,tcp://192.168.40.141:61620,tcp://192.168.40.141:61621,tcp://192.168.40.140:61618)");
如上例子,activemq 根据随机策略,调用任一可用的节点。
架构图示
● 架构示例图如下:
◆ 哪一个节点是 master,没有要求,那个先启动那个就可能成为 master。
◆ master 节点是当前提供服务的节点。
原创:刘韬。
投稿:有投稿意向技术人请在公众号对话框留言。
转载:意向文章下方留言。
更多精彩请关注 “数据和云” 公众号 。
资源下载
关注公众号:数据和云(OraNews)回复关键字获取
2018DTCC , 数据库大会PPT
2017DTC,2017 DTC 大会 PPT
DBALIFE ,“DBA 的一天”海报
DBA04 ,DBA 手记4 电子书
122ARCH ,Oracle 12.2体系结构图
2017OOW ,Oracle OpenWorld 资料
PRELECTION ,大讲堂讲师课程资料
近期文章
仅仅使用AWR做报告? 性能优化还未入门
实战课堂:一则CPU 100%的故障分析
杨廷琨:如何编写高效SQL(含PPT)
一份高达555页的技术PPT会是什么样子?
大象起舞:用PostgreSQL解海盗分金问题
ProxySQL!像C罗一样的强大
高手过招:用SQL解决环环相扣刑侦推理问题
实战分享:activemq 在灾备双活建设中的研究相关推荐
- 第二讲:双活灾备方案建设方法论
灾备建设的最终目的就是要保护业务的连续性运行,除了技术层面的支撑外,还有人员.规划和流程等非技术决策层面支撑.只有技术和规划通力配合,才能在真正发生灾难时保证业务连续性. 在灾难恢复方面,组织会考虑二 ...
- 优维助力国内某省级商业银行同城异地灾备自动化建设
银监会在<商业银行数据中心监管指引>中明确要求"商业银行每年至少进行一次重要信息系统专项灾备切换演练,每三年至少一次重要信息系统全面灾备切换演练,以真实业务接管为目标,验证灾备系 ...
- 背后的力量 | 华云数据助力龙光地产灾备平台建设 推动业务系统转型革新
随着云计算.大数据.AI.移动互联网等新兴IT技术的快速发展,越来越多的传统产业正加速信息化部署,实现数字化转型和赋能. 如今,大部分企业已经把数字化转型作为企业的战略核心.企业在充分享受数字技术带 ...
- 山东人社厅灾备项目建设
A5包.同城容灾系统建设 一.供应商资格要求 1.符合<×××政府采购法>第二十二条的规定. 2.供应商的资质要求:(1)具有计算机信息系统集成二级及以上资质 二.技术要求 背景及现状 随 ...
- 科力锐助力政务云统一灾备中心建设
一.政务云建设趋势 随着我国政府向公共服务型政府转型,政府对民生问题的重视不断加强,通过搭建政务云,对政府管理和服务职能进行精简.优化.整合,并通过信息化手段在政务上实现各种业务流程办理和职能服务,经 ...
- Weex实战分享|Weex在极客时间APP中的实践
本文是根据 WeexConf2018 中议题<Weex在极客时间APP中的实践>内容文档整理而成.主要分享极客时间在深度使用Weex过程中的一些经验和体会. 孙涛 极客邦前端负责人 大家 ...
- IDC云灾备白皮书:云灾备支持未来业务持续性新需求
IDC 观点 科技的快速发展正在推动产业格局演进,新一轮产业变革的核心是信息网络技术的应用,互联网.智能终端等新一代的信息技术的发展,将带来诸多产业的变革和创新.IDC认为,目前IT技术的发展正处于从 ...
- 北京供销大数据集团构建高效、安全、可靠的银行灾备体系
3月31日,河北省银行业网络与信息安全联席会暨第七届河北地区银行系统IT技术交流会在石家庄召开.在加强各银行之间信息化工作协作的基础上,相关IT企业参与银行信息化实践成果展示.作为大数据"国 ...
- Oracle 远程 RAC 打造双活数据中心 | 从容灾迈向双活案例分享
我们都知道,容灾系统是指在相隔较远的异地,建立两套或多套功能相同的 IT 系统,互相之间可以进行健康状态监视和功能切换,当一处系统因意外(如停电.UPS 故障.空调故障.火灾.地震等)停止工作时,整个 ...
最新文章
- webconfig.java_基于JavaConfig配置的Spring MVC的构建
- php调用dll函数,[转载]matlab调用DLL中的函数
- tta部署_YOLOv5项目介绍
- 蓝桥 算法训练 P0505
- unicode转中文的工具
- 玩转mini2440开发板之【编译u-boot提示没有规则可以创建“XX.o”需要的目标】
- leetcode 554. 砖墙
- Javascript深入理解构造函数和原型对象
- java 获取叶子节点_java – 如何获取树的所有叶节点?
- Android 悬浮按钮 两种实现方法
- 时间序列分析导论书摘:自相关图意义分析
- MD5算法是否可逆?
- webservice学习wsdl解读(2)
- 360软件小助手-壁纸存储路径
- Hexo个人免费博客(二) 创建主界面分页签和新博客
- 自己DIY一个pinephone——debian与主线linux在红米2(msm8916)上的移植 (二)
- 翻转课堂十大精彩案例
- vim高亮多处,搜索多个关键词
- PPT播放显示备注技巧
- # 后端开发技巧、常用规范
热门文章
- 开源虚拟示波器-_一个新的开源数据库,TP-Link路由器上的开源固件以及更多新闻
- 开源 free的理解_如何理解任何开源混乱
- 搭建网站随笔(WordPress)
- Bootstrap3 带悬停效果的表格样式
- 用c语言开发图形界面,「分享」C语言如何编写图形界面
- php socket_create_listen(),socket_create_listen()
- linq查询不包含某个值的记录_mysql基本知识点梳理和查询优化
- linux dup跨进程使用,linuxC多进程通讯---无名管道dup
- ajaxGet 获取封装
- 前端学习之路之CSS (一)