精卫提供如下功能:
- 内置多种复制任务:解析MySQL的binlog到数据库(MySQL、Oracle),解析MySQL的binlog到Meta消息中间件。
- 保证数据不丢
- 如果有多个消费者,能够保证一个消费者挂掉或很慢,其他消费者不会受到影响。
- 支持用户自定义复制任务:用户可以根据具体业务需求自由定制Extractor和Applier,就可以很方便地创建的新的复制任务。
- 自定义任务灵活部署:用户自定义复制任务既可以部署在业务服务器,也可部署在精卫集群。
- 数据过滤功能:用户通过web控制台,就可以灵活地添加、配置过滤器,虑选满足业务需求的数据。
- 丰富的日志展现形式:用户通过web页面,不但可以查看复制任务运行时的实时数据,而且通过查看历史数据分析复制任务的运行情况,为业务分析、bug定位、监控报警提供便利。
- 数据再散列:利用TDDL完善的分库分表规则,可以实现数据的再散列。
- 多种途径监控、告警:用户可通过旺旺、短信、邮件的形式接受运行时告警,及时了解系统运行的监控状况,为运维提供便利。
整体结构
精卫通过复制管道达到数据共享的目的,在不同类型的存储(RDBMS,NoSQL,倒排序等)之间构建数据流动的管道,使得存储于个节点的数据能够像河流一样流淌。除基本的复制功能外,精卫还提供日志、监控、告警等功能,为复制任务的配置、管理提供便利的web控制台。
基本原理
复制任务的核心是复制管道,每个管道用有一个Extractor,负责抓取源存储的Event(管道中的数据封装成事件Event),一个Applier,负责将抓取的Event投递给使用者,和一系列的过滤器Filter,用来过滤业务关注的Event。
- Event : 复制数据单元,对于MySQL的binlog,是一个事务。
- Pipeline : Event传递的管道。
- Extractor : Event生产者接口,抽取数据源的数据,转换成Pipeline通用的数据格式(称为事件Event)。
- Applier : Event消费者接口,将Event投递给数据使用者。
- Filter : Event在Pipeline传送,用户可定义各种过滤策略,只将有用的数据投递给消费者。
从数据源抓渠道的Event放入队列,可由多线程消费,增加并行度。
针对不同的业务需求,一个复制任务可分解成多个子任务,通过增加复制管道的方式满足多变的业务需求。例如,通过Meta,使得消息最终消费者可以方便地使用消息中间件带来的便利。
- Task:用户业务相关的复制任务。
- Sub Task: 完整的复制任务分解为若干子任务。
- MySQL Extractor:抓取并解析MySQL的binlog,投递到Pipeline。
- Meta Applier:管道的数据投递到Meta消费。
- Meta Extractor:从Meta抓取数据投递到Pipeline。
- MySQL Applier:管道的数据投递到MySQL数据库。
部署图
精卫部署图表述了精卫集群其他系统之间的部署关系,包括MySQL集群,MetaQ集群,采集日志的Tlog集群,任务协同zookeeper集群,精卫web server集群,精卫复制管道末端的消费集群。
性能
上线应用的性能数据正在采集,性能指标
- TPS
- 延迟时间
高可用性
精卫是一个高可用的数据复制产品,在提供日志、监控、告警这些基本的观测和预警功能外,精卫也在复制路径关键节点发生异常时提出完善的解决方案。
MySQL主备切换
在DBA执行主备操作的时候,精卫提供一个方案,在影响DBA操作、不需要人工介入的情况下,实现复制任务自动切换,在主备切换后,自动从备库抓取数据,而且保证不会丢失数据。
风险是会产生少量的重复数据。
复制管道的热备
为应对复制任务故障或者复制任务所在主机故障,精卫采用热备复制任务的方式。即将同一个复制任务部署在不同的主机上,主、备复制任务通过Zookeeper互相检测运行健康状况,并且时间间隔记录复制位点,在主任务停掉的情况下,备任务从Zookeeper上取得最近的复制位点,取代原主任务进行复制。
风险是会有少量的重复数据。
复制管道的冷备
冷备必需保证足够多的机器进行1:1的备份,现实中会出现没有足够多机器的情况,另外对于非单例任务(一个任务可同时在多台机器上运行,针对以Meta为Extractor对象的任务),实际运行的任务数量大于1,热备方案不能满足这些需求,所以设计了冷备方案。 Server进程和task进程之间通过/jinwei/tasks/**task/t-locks/lock来协同,task进程启动时先发布节点/jingwei/tasks/**task/t-locks/lock_index节点,立即注册该节点的监听器(当发现该节点消失的时候),退出进程。及时task进程和zk断掉的较长时间,后来又重新连上,zk server推送过来空节点时,task进程发现推送了空节点(认为自己进程应该消失),就把自己干掉了,当server进程扫描到/jingwei/tasks/**task/t-locks/lock_index消失的时候,认为应该调用脚本,启动复制任务。 Server进程扫描启动任务具体步骤如下:
- 通过配置文件获取本机可执行的最大任务数E。
- 通过sh脚本获取本机已经执行的任务数O。
- 如果E>O,继续;否则,转到(17)。
- 从zk获取所有任务
- 如果迭代结束,则转到(17);否则当前任务赋给task;
- 判断task的op是start?如果是start则继续;如果是stop,则转到(5)迭代下一个任务
- 获取task的指定的任务数C;
- 获取task已经运行的实例数L;
- 如果C<L,则继续;否则转到(5),迭代下一个任务;
- 获取任务的token;
- 创建互斥锁,成功则继续;否则转到(5)迭代下一个任务
- 调用脚本启动task;
- 注册监听器(如果task启动成功则会回调),阻塞10秒
- 如果超时时间内回调,则说明成功启动,转到(15);如果超时时间到了还没有回调,说明启动失败,转到(15)
- 取消注册的监听器
- 删除互斥锁
- Sleep 5秒,执行(1)
相关推荐
阿里云专有云企业版V3.6.1的数据库同步服务(精卫)是一款针对企业级用户设计的高效、稳定的数据迁移和同步工具。该服务旨在帮助企业实现不同数据库之间的实时数据复制,确保数据的一致性和高可用性,支持业务的平滑...
"阿里云专有云企业版V3.6.0数据库同步服务(精卫)运维指南" 以下是从给定的文件中生成的相关知识点: 1. 法律声明:阿里云提醒用户在阅读或使用本文档之前仔细阅读、充分理解本法律声明的全部内容。如果用户阅读...
《精卫输入法:UIV输入法的进化与探索》 精卫输入法,作为一款源自新浪下载中心的UIV输入法的升级版本,自1.0版本以来,一直在不断迭代和完善,发展到了v1.95这个重要的里程碑。这款输入法的核心在于提供更加全面、...
阿里云专有云企业版V3.6.2的数据库同步服务,又称“精卫”,是一种高效、稳定的数据迁移和同步工具,旨在帮助企业实现不同数据库之间的数据实时迁移和同步。这个运维指南主要针对该服务的使用和管理,适用于2018年12...
金海通作为一家具有专业性测试分选机制造商,在测试分选机行业凭借其技术先进、产品线丰富以及良好的客户基础,正逐步在全球市场上展现出强大的竞争力。成立于2012年的金海通,不仅在技术上达到了国际先进水平,同时...
很抱歉,根据您提供的信息,这个压缩包"2021.12.21湖南省脑科医院精卫楼裙楼加层项目.rar"似乎包含了关于一个建筑项目的详细资料,但没有具体的标签或子文件名来指示具体包含的IT知识点。通常,这样的文件可能包括...
。。。
。。。
本课《精卫填海》选自新人教统编版五四制四年级上册,旨在通过讲述古代神话故事,让学生理解并体会精卫坚韧不拔的精神。 一、导入新课 导入环节是教学的起点,教师可以通过动画片吸引学生的注意力。以学生喜欢的...
- 对精卫的感悟:可以赞美精卫的毅力和勇气,表达对其不懈努力的敬佩,同时也可以引导学生学习面对困难时的坚定和决心。 通过这份资料的学习,学生不仅能够了解中国古代神话,还能学习到汉字的读音、含义和组词方法...
在这篇神话中,精卫作为主角,体现了这种美德,并且为后世留下了深刻的印象。在新五四制人教统编版四年级上册的语文教材中,第13课正是以此篇故事为主题,通过《精卫填海》这一课件,不仅教会学生们汉字的书写和含义...
微小的树枝和石头与浩渺的东海相比,显得无比渺小,但精卫持续不断地投入,象征着她的决心和毅力,体现出一种不畏艰难、持之以恒的精神风貌。 通过学习这些神话故事,我们可以深化对人生价值的理解,培养积极向上的...
顾炎武的《精卫》诗是对古代神话中精卫填海故事的重新诠释,通过对比精卫的坚韧不拔与鹊、燕的自私平庸,展现了作者的坚定信念和不屈精神。 2. **古代文学与历史背景**:顾炎武是明清之际的思想家,他的诗歌反映出...
以文章中提到的作者在奥数题上的挣扎为例,正是通过反复思考和不懈尝试,才最终解决了问题,这种经历恰好是精卫精神在实际生活中的生动体现。 其次,精卫填海的故事启示我们,任何伟大的成就都需要时间的积累和不断...
精卫是一个基于 MySQL 的数据复制组件,旨在构建一个高度易用、支持多种源数据类型的实时数据复制框架。 #### Eromanga Eromanga 是一个基于数据库的增量数据变更发布/订阅系统,能够支持多个数据源的增量数据缓存...
通过生动的朗读教学,教师可以先示范,再引导学生有感情地朗读课文,感受精卫不屈不挠的意志与大海的汹涌澎湃。在朗读过程中,学生需要把握精卫的勇敢坚定以及大海的愤怒情绪,这不仅是语言表达能力的训练,也是情感...
在这一单元的教学设计中,我们不仅要求学生了解文本的内容,更重要的是通过文本去理解精卫这一形象所代表的不屈不挠的精神。 首先,本教学教案的设计理念是“关注学生的发展”,以学生为本位,力求营造一个充满活力...
源代码的开放性为开发人员提供了深入理解Kettle工作原理的机会,并可以针对Web环境进行优化和定制。 【标签】"kettle"标识了这个压缩包与Kettle软件相关,Kettle是一个开源的数据集成工具,以其灵活的ETL能力而知名...