这是学习笔记的第 2142 篇文章

在之前设计两地三中心方案时,提到了一个方案,在文章发布后收到了很多朋友的反馈,当然这个事情不是拍脑袋想的,我们最近在落实这件事情。

我们先来看下之前的一个简略版设计,这是基于分布式设计方案,可以引入数据组件syncer和writer,实现机房多活的业务需求,syncer和writer为数据的发布者和消费者,基于分布式协议进行处理。

在处理过程中有三类关键技术:

1)数据的处理基于分布式ID,能够唯一定位数据处理操作,并且该操作具备递增趋势。

2)同步组件的稳定性,同步组件可以理解为一种通用服务,需要考虑不同机房间的数据延迟和数据冲突处理机制,保证同步组件服务的稳定,高效。

3)同步组件的高可用,对于同步组件需要根据业务特点做权重处理,考虑不通IDC的业务情况,并重点考虑同步组件的数据冗余设计,保证发生异常时能够及时恢复数据。

此种方案短期内难以实现,但是长期来看,可以支持机房多活,业务价值更高。

当然在具体设计的时候,其实有很多现实的问题摆在面前,在经过了几次讨论和各个技术方向的对接讨论后,我设计了如下的方案。

我来做下解释,首先对于机房多活来说,我们设定的这个场景是源端和目标端,当然一个实例既可以是目标端也可以同时是源端。

为了提高业务响应,我们的设定规则是遵循最终一致性,所以在业务场景接入的时候,对于高并发修改同一条数据的情况需要从业务规划层面避免。

从源端写入的数据会通过流转的方式进入目标端,而这个过程中数据的格式为了通用起见是采用了JSON来进行流转。

源端如何得到这些实时的数据变化,我们可以采用虚拟从库(virtual_slave)的组件来进行对接,这里可以参考的有canal,maxwell和mysql-python-replication,我们这里目前先行测试使用的是maxwell.

对于数据的流转,为了提高定制能力,我们需要加入过滤器(stream-filter)来进行过滤,同时在下发解析请求的时候可以通过路由的方式打到不同的队列里面,这里的队列可选方案有Redis,Kafka,RabbitMQ等,因为是双活方案,对标两地三中心,在数据写入队列时出现错误其实是直接会丢失数据的,所以在这一层面,是采用双通道的方式,即写入两个队列,两个队列是物理隔离的,数据在通道内自然有时间的先后。

而缓存队列只是数据的一个流转节点,不需要保留过长的时间,所以数据下发之后就需要持久化,持久化代表着这个消息是完整唯一的,而多个通道同时写入就需要做去重的基本工作,这个如果采用MySQL方案可以很容易使用insert into duplicate的方式解决,如果为了提高多个通道并发写入的性能,可以采用TiDB的多个结算节点写入,而如果在兼容JSON格式时能够更加友好管理,可以考虑采用MongoDB的方案。

数据持久化之后就要开始消费了,我们可以采用类似Kafka的方案进行数据的消费,比如目标端有2个,则应该对已有的消息进行订阅推送,即分裂为两个不同的目标端数据。

上面的流程中,我们遵循的一个基本设计方式是数据下推不回调,在存储持久化层实现了数据大完整性和唯一性之后,后续的下发流程是相对规整的。

而如果数据的整个流转完成之后,如何快速应用,这里的设计方式是采用回调,我们可以采用通用接口的方式,来发布多个部署应用(APiInvoker)来进行数据的应用,如果出现错误则可以快速回到订阅入口进行再次稽核重试。

在这个过程中确实引入了很多的组件和可选方案,而整个方案的设计中也借鉴了很多Amdocs TRB的方案设计思想,在此向老东家致敬。

这个初步方案已经在开始demo开发测试了,来初步验证整个复杂度和可行性,我们拭目以待,如果有好的方案,也欢迎留言交流。

双活方案_MySQL业务双活的初步设计方案相关推荐

  1. 30、【华为HCIE-Storage】--Hyper Metro(双活【块业务】)

    ------------------------------------重要说明------------------------------------ 以下部分内容来网络,部分自华为存储官方教材 具 ...

  2. 浪潮存储双活方案:新疆道路运输管理局的大数据应用不再是梦

    浪潮的AS5600存储双活方案结合浪潮云海OS操作系统,应用于新疆道路运输管理局用户的客运联网售票.客票查询.客运清分结算.实名售票系统等应用,为客户在智能管理以及业务持续运行带来巨大变革,更为今后的 ...

  3. MySQL高可用双活方案

    1 需求概述 2 技术方案     2.1 双活同步条件         2.1.1 自增主键         2.1.2 同步用户         2.1.3 启用BinLog     2.2 配置 ...

  4. 案例分享 | A10双活方案助力天虹商场转型“新零售”

    标题:传统百货业不行了?这家商场在2018年却狂赚了9个亿-- 摘要:它是35岁的新零售玩家 4月份,经营27年的赛特购物中心也宣布将于6月底闭店: 5月初,京城最后的"攒机大本营" ...

  5. adg oracle 架构_基于 Oracle RAC/ADG/OGG 等设计数据库双活方案,必须掌握五方面知识点...

    原标题:基于 Oracle RAC/ADG/OGG 等设计数据库双活方案,必须掌握五方面知识点 上周,社区组织活动就数据库(Oracle)双活方案进行了深入探讨,包括如何选择双活方案.具体方案的复杂度 ...

  6. mysql双活存储容量 TB_Mysql双活方案 - osc_fted3syf的个人空间 - OSCHINA - 中文开源技术交流社区...

    #### 说明 Mysql主主互备即为两个mysql的互为备份机 ##### Windows下安装步骤(Linux下步骤类似,基本就是装上mysql,然后修改配置来完成主从的设置) - step1.下 ...

  7. 中后台管理信息系统通用原型方案、业务中台管理系统、业务中台架构、管理信息系统、订单管理、客户管理、货源管理、财务管理、客服管理、营销管理、办公申请、协作管理、CMS、OA、CRM、ERP、Axure

    本作品是一套通用型的中后台信息系统原型方案,可以快速扩展并输出标准美观的中后台产品原型,极大的提升输出效率和节省协作成本.方案中提供了几十套不同风格和结构的系统框架,并涵盖了大量的常用组件和通用页面模 ...

  8. docker.11-基于Docker容器DevOps应用方案 企业业务代码发布系统

    基于Docker容器DevOps应用方案 企业业务代码发布系统 一.企业业务代码发布方式 1.1 传统方式 以物理机或虚拟机为颗粒度部署 部署环境比较复杂,需要有先进的自动化运维手段 出现问题后重新部 ...

  9. U8多组织协同方案、业务协同方案

    U8多组织协同方案.业务协同方案 欢迎交流学习 产品开源地址  GIT https://github.com/moniterniu/LxzLib

最新文章

  1. HDU-2084 数塔 经典dp,水
  2. Android 哥哥福利
  3. 利用K8S技术栈打造个人私有云(连载之:K8S资源控制)
  4. jwt:介绍以及创建token
  5. C语言 底层IO 输入输出
  6. llvm vs gcc 我被雷到了, 速度相差300多倍,你还用GCC吗!【转】
  7. 《计算机网络》学习笔记 ·004【网络层】
  8. 卷盘商标复卷检测系统
  9. 指针以及二重指针的理解
  10. Echarts数据可视化event图表事件的相关操作,开发全解+完美注释
  11. 2008服务器系统来电自启,服务器2008自动重启
  12. 2020王道操作系统,数据结构,计算机网络,计算机组成原理PDF大合集+使用经验
  13. [转]企业安全建设二——如何推动安全策略
  14. 深度学习入门(九)——深度学习框架概览
  15. 荣耀8桌面添加计算机,华为荣耀手机如何添加快捷开关到快捷功能界面中
  16. 机器人视觉测量与控制
  17. 超给力,一款程序员必备的 996 代码工作量分析工具
  18. 淘宝帝国是如何创建的连载03
  19. mysql怎么增加内存_MySQL内存不足怎么办
  20. [论文写作笔记] C8 讨论用于增加论文厚度

热门文章

  1. java xml 推模式 拉模式_Alibaba Sentinel规则持久化-推模式-手把手教程(基于Nacos)...
  2. 开源项目:windows下使用MinGW+msys编译ffmpeg
  3. SQL操作语句中的注意点
  4. 中国LINUX内核开发大会 ppt演讲资料 与 会议视频
  5. 购买IBM System x3650 M4十大理由
  6. Docker概述和安装部署
  7. Android 源码编译相关
  8. 并发编程中的大坑:你的直觉有序性问题
  9. Java8的Optional是不是鸡肋?
  10. 大白话详解5种网络IO模型