建立高可靠、高性能的同步中间件(MirrorMaker)设计文档

FMQ同步中间件(MirrorMaker)

简介

       FMQ的同步中间件英文名称为MirrorMaker,是在FMQ-Client的基础上引变而来的,用来作为跨机房的数据同步的工具。在网络异常等特殊情况下,也能在可靠性和性能上都能够满足公司线上需求而开发的一套同步中间件。

设计目标

          MirrorMaker设计思路比较好理解,利用消费者从源机房拉取消息,并利用生产者发送消息至目标机房。但往往网络环境、broker集群稳定性、topic队列都会不断变化,在这种特殊情况下,也要实现一个高可靠、高性能的消息同步中间件需要考虑的细节非常多。比如消息幂等性、自动监控并切换网络出口、监控异常报警等。FMQ-mirrormaker就是针对这种特殊场景进行了定制化开发,实现高可靠和高性能的消息同步中间件。

应用模型

 

代码架构图

模块图

 

配置管理:配置source和target的broker的url、同步线程数、报警配置以及队列大小等

报警管理:基于event发布中心订阅相关的事件,并接入报警平台进行报警

消息同步管理:包括消费者管理、队列管理、生产者管理、Offset管理

监控管理:实时从broker获取需要监控的数据,并暴露接口给fmq-monitor获取监控数据

包结构图

 

mirrormaker-api:暴露api接口,供外部调用

mirrormaker-biz:具体的业务逻辑,包括监控、同步、报警、配置等信息

mirrormaker-bootstrap:启动类,包括(监控,配置、报警、消息同步)四大服务的启动

类图

 

AbstractBootstrap: 作为最上层的抽象类,提供了doBootstrap()、doShutdown()供子类去实现,同时还持有事件发布接口、日志接口以及Config

Monitor:持有 SyncManager 实例,通过它来获取监控数据

Alarmer:通过订阅相关的事件提供报警服务

SyncManager:TargetDCProducer、SourceDCConsumer和TopicAndOffsetManager的大管家,用来协调消息同步。同时还会监听相应的事件,比如 网络不通、网络切换、新增同步topic、修改partition等等,对这些事件进行相应的处理来保证消息同步的正确性。

TopicAndOffsetManager:

1、获取需要同步的topic和分区,并定期更新topic和分区

2、获取并管理当前环境的source和target端的 分区对应的offset(source->brokerOffset、commitOffset,target->brokerOffset)

SouceDCConsumer:

订阅需要同步的topic,并将消息放入queue中。定期提交缓存中的offset。

TargetDCProducer:

每个partition会启动一个线程来读取queue中消息,并写入目标broker,写成功后,将该消息的offset提交至缓存中。

具体实现

1、同步过程中异常情况处理

mirrormaker基于candy2的事件中心对异常情况进行了处理,使其真正意义上保证了跨机器消息同步的可靠性和实时性。

主要事件如下:

add_topic:定期检测是否有新增topic并加入至同步列表中

remove_topic:释放占有的资源

modify_partion_num:定期检测,并将修改后的分区加入同步列表中

source_net_not_available: 定期检查网络情况,不通则抛出事件,由Alarmer报警

source_net_be_switched: 如果网络不通时间超过一定阀值,则会对source 网络进行切换(事先备好备用网络出口),切换成功后,再进行同步

target_net_not_available:目标端网络不通,抛出事件,由Alarmer报警 (备注:target的broker 一般和mirrormaker在同一机房,网络不通也不需要切换)

2、偏移量(offset)的管理

   由于同步过程中,任何情况都可能发生,所以对于offset的何时提交尤为重要。一般正常情况是消费一条消息就提交,这样会存在以下二个问题:

   (1)频繁提交,会无形中给服务器增加压力

   (2)作为同步中间件,应将整个同步的过程作为一个原子操作,也就是说消息要真正写入target端,才算同步成功,此时offset才会提交,否则不算同步成功

    基于以上二种情况,我们在消息同步成功后将offset存入缓存中,并由消费者定期提交缓存中的offset,这样既降低了因频繁提交offset给服务器增加的压力,也将同步过程作为一个原子操作。同时还提供了饿JVM的钩子,保证宕机情况下,缓存里的offset能正常提交。

MirrorMaker监控

主要功能点:

1、获取各点mirrormaker的监控数据

      Source端的TPS、Target端的TPS

      partition的sourceoffset、cacheoffset、commitoffset、lag(同步滞后数)

2、手动操作mirrormaker,比如网络不通,可以手动切换网络等等

总结

实现一个简单的同步中间件还是比较容易,但要在特殊情况下实现一个高可靠、高性能的同步中间件还是相对复杂的多,本章中的大幅篇幅基本上都是围绕如何建立高可靠、高性能的同步中间件。同步同步中间件实现消息的正常传输。

时间: 2024-09-26 04:51:53

建立高可靠、高性能的同步中间件(MirrorMaker)设计文档的相关文章

SharePoint Workspace:用来离线同步SharePoint网站的文档和数据

在Office 2010客户端程序中,增加了SharePoint Workspace 2010.这是一个SharePoint 2010的"客户端"程序,可以用来离线同步SharePoint网站的文档和数据. 在SharePoint网站的"网站操作"菜单中,有一个"同步到SharePoint工作去"菜单项: 文档库的Ribbon菜单中也同样有这样一个菜单项: 点击这个"同步到SharePoint工作区",就会自动启动客户端的Sh

换“芯”保安全 东软打造安全可靠高性能防火墙

在信息安全事件频发的今天,全球信息安全产业被极大的催化.而且自三中全会以来,信息安全被提升至国家战略层面,成为一个不容忽视的国家安全战略,是国家安全的关键环节,没有网络安全就没有国家安全已成为高层的网络观. 在国家信息安全大趋势下,国产化.自主可控被推上了高峰,国产化成为信息安全发展的必然趋势,国内安全企业迎来了新的发展契机.前不久,东软NetEye正式发布了安全可靠高性能千兆防火墙产品和万兆防火墙解决方案,该系列产品采用龙芯CPU及中标麒麟操作系统,是拥有中国"芯"的完全自主知识产权

NETGEAR 力助平潭县国土局构建高可靠统一基础架构

   用户需求 建成后的网络核心未来能平滑升级到万兆交换平台,所选的方案应具备前瞻性,适应于政务网的高性能要求,所以整体规划和设计需要满足以下几个要求: 1.高带宽:建成后骨干需满足万兆或多链路的千兆上行,千兆到桌面; 2.多网融合:建成后的网络需要满足语音.视频.数据等同时应用,并在网络上实现垂直管理; 3.扩展性:具备高扩展性,支持虚拟化和云计算应用; 4.高可靠:网络采用星形架构设计,核心交换机引擎冗余.电源N+1 冗余; 技术方案 平潭县国土局网络方案描述和网络拓扑图如下: 1.采用星型

NETGEAR力助杭州德力西集团构建高可靠统一基础架构

 杭州德力西是德力西的三大先进制造业基地之一,是目前中国最大的仪器仪表与自动化高科技产业基地之一.公司包括家居电气.电度表.变频器.三元催化器.变送器.自动化.电容器等七大主导产业.近三年来,公司销售额以每年30%的增长速度健康发展,是行业中发展最快.效益最好的企业之一. 建成后的网络核心未来能平滑升级到万兆交换平台,所选的方案应具备前瞻性,适应于企业园区网"云环境"应用,所以整体规划和设计需要满足以下几个要求: 1. 高带宽:建成后骨干需满足万兆或多链路的千兆上行,千兆到桌面; 2.

Tair是一个高性能,分布式,可扩展,高可靠的key/value结构存储系统(转)

Tair是一个高性能,分布式,可扩展,高可靠的key/value结构存储系统! Tair专为小文件优化,并提供简单易用的接口(类似Map)Tair支持Java和C版本的客户端   Tair is a distributed key-value storage system originally developed at Taobao.com. features: simple client configuration thanks to lightweight config server ite

表格存储如何实现高可靠和高可用

系列文章 表格存储如何实现高可靠和高可用表格存储如何实现跨区域的容灾 前言 本文会介绍一款分布式NoSQL如何实现数据高可靠和服务高可用,这是一款云上的NoSQL服务,叫做表格存储.对于分布式NoSQL,大家可能会想到很多名字,比如HBase.Cassandra,AWS的DynamoDB等,这类NoSQL在设计之初就作为一个分布式系统支持超大规模的数据量与并发.此外大家可能还会想到MongoDB和Redis,这两个也提供集群功能,但是一般需要人为的配置sharding和复制集/主从等. 表格存储

国内最全最详细的Hadoop2.2.0集群的HA高可靠的最简单配置

简介 Hadoop中的NameNode好比是人的心脏,非常重要,绝对不可以停止工作.在hadoop1时代,只有一个NameNode.如果该NameNode数据丢失或者不能工作,那么整个集群就不能恢复了.这是hadoop1中的单点问题,也是hadoop1不可靠的表现,如图1所示.hadoop2就解决了这个问题. hadoop2.2.0中HDFS的高可靠指的是可以同时启动2个NameNode.其中一个处于http://www.aliyun.com/zixun/aggregation/7317.htm

谈建立高质量内容与外链的几点注意事项

没有哪一个站长的网站从建立到走入高潮都是一帆风顺的,我也不例外,曾经的几个网站从开始的收录.提高权重到最后的吸引流量都走了不少的弯路.每天在a5论坛中看到很多站长都在问类似的几个问题:1.网站这几天不收录了怎么办?2.网站收录减少了怎么办?3.网站外链减少了怎么办?4.网站快照不更新怎么办?5.网站被K了怎么办?等等,其实我们可以将这些问题全部归于网站被搜索引擎下降了友好度. 在面对搜索引擎下降网站的友好度的时候,站长应该从长计议,不要想到四处提问怎么办?这个时候的怎么办是没有热心的站长会告诉你

MSTP硬管道助力高可靠高安全的电子政务传送网

电子政务是指政府机构在其管理和服务职能中运用现代信息技术,实现政府组织结构和工作流程的重组优化,超越时间.空间和部门分隔的制约,建成一个精简.高效.廉洁.公平的政府运作模式,将分散的各政府机关部门.各行业的业务基础部件有机整合在一起的信息平台.传送网作为电子政务网的基础网络,为电子政务的应用提供安全.可靠的传输平台,应符合高安全性与物理隔离.高可靠性.高品质需求.电子政务网传送技术选择常见的 数据传输技术可分为:硬管道: MSTP技术软管道: PTN技术(基于MPLS-TP)及IP技术从技术角度