秃头也要学习的微服务进阶场景实战:基于Bifrost的数据同步方案

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,182元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 技术选型项目组决定找一个开源中间件,它需要满足以下5点要求。1)支持实时同步。2)支持增量同步。3)不用写业务逻辑。4)支持MySQL之间的同步。5)活跃度高。

基于Bifrost的数据同步方案

技术选型

项目组决定找一个开源中间件,它需要满足以下5点要求。

1)支持实时同步。

2)支持增量同步。

3)不用写业务逻辑。

4)支持MySQL之间的同步。

5)活跃度高。

根据这些要求,可以选用以下几个开源中间件:Canal、Debezium、DataX、Databus、Flinkx、Bifrost。

网络异常,图片无法展示
|

这些中间件的对比结果见表14-1。

从以上对比来看,比较贴近场景需求的是Bifrost。

其实Bifrost是一个相对比较年轻的中间件,而且它不支持集群。那为什么使用它呢?原因如下。

1)它的界面管理比较方便。

2)它的架构比较简单,出现问题后,可以自己调查问题,相对比较可控。之后即使作者不维护,团队也可以自己维护起来。

3)作者更新很活跃。

4)自带监控报警功能。

项目组最终决定使用Bifrost,此时整个方案的架构如图14-4所示。

网络异常,图片无法展示
|

• 图14-4 基于Bifrost的数据同步方案架构

Bifrost架构

在使用这个技术之前,还是要了解一下它的基本原理。Bifrost架构图如图14-5所示。

网络异常,图片无法展示
|

• 图14-5 Bifrost架构图

可以看出,Bifrost其实也是模拟成MySQL的从库,监听源数据库的Binlog,然后再同步到目标数据库。它支持多种目标数据库,本项目是从MySQL同步到MySQL。

注意事项

使用数据同步这个方案时,应该注意什么?

1.数据同步的延时

这个数据同步方案是有一定延时的,所以如果业务对同步功能有高时效的要求,那么尽量不要使用这个方案。

举个例子,这里虽然同步了商品的数据到订单数据库,但是订单服务当中,如果提交订单需要检查库存的话,不建议把库存数据同步到订单数据库里,而是让订单服务每次都去请求商品数据库的库存。

所以,其实同步过来的数据基本上只是用来展示、查询的,不涉及业务数据变更。

2.同步过来的数据是只读的

因为这里的数据同步是单向的,所以目标数据库中同步过来的数据是不能修改的。在这个方案里,肯定不会去修改订单数据库里面同步过来的商品数

据。也有一些其他场景,比如同步一些基础配置或者公用数据到各个数据库,而后在使用这些同步数据时,可能会发现一些遗漏,比如城市/区/县数据,这种情况下,也不能直接在业务数据库里修改,而是应该通知提供数据的系统去修改,之后再同步过来。

3.监控一定要到位

Bifrost不是高可用的,它本身也提供了一些告警的功能。除了依赖它本身的告警功能以外,还要额外监控Bifrost这个服务的状态,确保它出现异常时能及时发现。Bifrost本身也提供了API接口,用来让第三方的监控对接。

4.核心逻辑不建议依赖同步数据

因为同步过来的数据是有延时的,并且Bifrost本身没有设计高可用,所以并不推荐在核心逻辑上使用同步的数据。

小结

系统上线后,商品数据的同步比较稳定。之后,商品服务的开发人员只需要关注自己的逻辑,无须关注使用数据的人。如果需要关联使用商品数据的采购单,采购服务的开发人员也不需要关注商品数据的同步问题,只需要在查询时加上关联语句即可,算是一个双赢的结局。

唯一遗憾的是Bifrost不是集群,无法应对高可用场景。不过,到目前为止,这个系统还没有出现宕机的情况,反而是那些部署多台节点负载均衡的后台服务常常出现这种情况。

Bifrost 的 作 者 也 介 绍 了 他 为 什 么 没 有 设 计 集 群(
https://wiki.xbifrost.com/other/clusterwhynot/),部分引用如下。

在实际工作中,项目组很大一部分时间其实都是在处理线上高可用、分布式遇到的各种问题。

工作经验告诉我们,很多开源系统的高可用可能并不是我们想象中的那样高可用,尤其是那些对数据一致性有要求的场景,会存在很多问题。

在实际工作中,绝大多数一开始就使用各种分布式、高可用设计的项目,最后都失败了。

功能很多,又使用分布式和高可用,很难排查问题。

Bifrost是一个面向生产环境的产品,对生产环境抱有敬畏之心。

Bifrost并不想在一个项目刚开始的时候,就进行各种分布式、高可用等设计。

这些描述不一定准确,但是笔者的确碰到过两次“高可用最终并不是真正的高可用”的情况,所以那时候就想在系统当中引入一个非高可用的中间件进行尝试。当然,为了保证系统出错以后能够及时解决,也做了很多定制的监控。

事实证明,高可用不一定真的高可用,单机也未必不能高可用。当然,也不能以偏概全地说高可用设计没有必要,那就因噎废食了,这种状况毕竟只是特例。而且,项目组也随时准备着改造这个中间件,增加灾备能力。不管怎么样,项目组最终解决了服务之间数据依赖的问题。接下来,就要直接面对服务之间逻辑或流程上依赖的问题了。

本文给大家讲解的内容是微服务进阶场景实战:基于Bifrost的数据同步方案

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
5天前
|
存储 SQL 运维
数据同步最全避坑指南!4大痛点+4大场景技术方案
在湖仓一体、流批一体趋势下,数据同步成为关键环节。本文直击实时性差、数据孤岛、一致性偏差等痛点,拆解技术方案与常见误区,涵盖Sqoop、Flink、FDL等工具应用,揭示从基础复制到数据服务化的演进路径,助力企业实现高效、稳定、智能的数据流转。
数据同步最全避坑指南!4大痛点+4大场景技术方案
|
6月前
|
监控 Java 应用服务中间件
微服务——SpringBoot使用归纳——为什么学习Spring Boot
本文主要探讨为什么学习Spring Boot。从Spring官方定位来看,Spring Boot旨在快速启动和运行项目,简化配置与编码。其优点包括:1) 良好的基因,继承了Spring框架的优点;2) 简化编码,通过starter依赖减少手动配置;3) 简化配置,采用Java Config方式替代繁琐的XML配置;4) 简化部署,内嵌Tomcat支持一键式启动;5) 简化监控,提供运行期性能参数获取功能。此外,从未来发展趋势看,微服务架构逐渐成为主流,而Spring Boot作为官方推荐技术,与Spring Cloud配合使用,将成为未来发展的重要方向。
203 0
微服务——SpringBoot使用归纳——为什么学习Spring Boot
|
10月前
|
消息中间件 存储 监控
微服务日志监控的挑战及应对方案
【10月更文挑战第23天】微服务化带来模块独立与快速扩展,但也使得日志监控复杂。日志作用包括业务记录、异常追踪和性能定位。
|
11月前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
小程序 JavaScript
微信小程序学习之数据绑定,事件绑定,事件传参与数据同步的学习记录
本文介绍了微信小程序中的数据绑定、事件绑定、事件传参与数据同步的基本概念和使用方法,包括如何在data对象中定义数据、使用mustache语法在wxml中渲染数据、绑定和处理事件、事件对象属性、事件传参以及实现输入框与data数据的同步。
微信小程序学习之数据绑定,事件绑定,事件传参与数据同步的学习记录
|
存储 关系型数据库 MySQL
【TiDB原理与实战详解】5、BR 物理备份恢复与Binlog 数据同步~学不会? 不存在的!
BR(Backup & Restore)是 TiDB 分布式备份恢复的命令行工具,适用于大数据量场景,支持常规备份恢复及大规模数据迁移。BR 通过向各 TiKV 节点下发命令执行备份或恢复操作,生成 SST 文件存储数据信息与 `backupmeta` 文件存储元信息。推荐部署配置包括在 PD 节点部署 BR 工具,使用万兆网卡等。本文介绍 BR 的工作原理、部署配置、使用限制及多种备份恢复方式,如全量备份、单库/单表备份、过滤备份及增量备份等。
|
JSON 算法 Java
微服务Token鉴权设计的几种方案
【8月更文挑战第18天】在微服务架构中,Token鉴权是确保服务安全性的重要环节。本文将详细介绍几种常见的微服务Token鉴权设计方案,旨在帮助大家在工作和学习中更好地理解和应用这些技术。
620 2
|
关系型数据库 MySQL 调度
【TiDB原理与实战详解】4、DM 迁移和TiCDC数据同步~学不会? 不存在的!
TiDB Data Migration (DM) 和 TiCDC 是两款用于数据库迁移和同步的强大工具。DM 支持将兼容 MySQL 协议的数据库(如 MySQL、MariaDB)的数据异步迁移到 TiDB 中,具备全量和增量数据传输能力,并能合并分库分表的数据。TiCDC 则专注于 TiDB 的增量同步,利用 TiKV 日志实现高可用性和水平扩展,支持多种下游系统和输出格式。两者均可通过 TiUP 工具进行部署与管理,简化了集群的安装、配置及任务管理过程。
|
canal 关系型数据库 MySQL
"揭秘阿里数据同步黑科技Canal:从原理到实战,手把手教你玩转MySQL数据秒级同步,让你的数据处理能力瞬间飙升,成为技术界的新晋网红!"
【8月更文挑战第18天】Canal是一款由阿里巴巴开源的高性能数据同步系统,它通过解析MySQL的增量日志(Binlog),提供低延迟、可靠的数据订阅和消费功能。Canal模拟MySQL Slave与Master间的交互协议来接收并解析Binary Log,支持数据的增量同步。配置简单直观,包括Server和Instance两层配置。在实战中,Canal可用于数据库镜像、实时备份等多种场景,通过集成Canal Client可实现数据的消费和处理,如更新缓存或写入消息队列。
1573 0
|
程序员 测试技术 Docker
黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day3 全网最全
黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day3 全网最全(1)
1390 1