随着业务的增长和技术的演进,在应用架构上,我们经历了单一用用架构->垂直应用架构->分布式应用架构的发展。对应的,后台数据库也出现了分布式的解决方案。读写分离,负载均衡读写以及两点双写集群甚至于多点多写集群这些,都离不开数据库的同步。一般的,这些同步都是在同一机房内的。
渐渐的,我们的业务扩展到了全国各地甚至与全世界各地。我们不能也不再满足于将应用和数据库部署在一个机房之中。在多个机房中,我们部署相同的服务。那么一个比较严峻的问题就是数据库跨机房的镜像如何做,也就是我们如何保证不同机房间的数据一致性?
举个例子,假设我们在北京和深圳各部署了一个机房。快递员和客户都按照所在位置来接入离自己最近的机房。假设我从北京发了一票快递到深圳,那我快递员在收件时,我的这票快递的数据在北京的机房。经过收件入仓,中转到深圳时,在深圳的机房必须有这条快递的记录,这样快递员才会被分配这个运单并更新这个运单的状态。同时,对这个运单的更新在深圳机房完成,我访问的北京机房也必须同步到这个运单的最新状态。
CAP理论在这里,P已经是背景条件,我们肯定要做。接下来就是在C和A中取得平衡。
可能有人会想到通过应用去访问这两个机房,去双写,这个是一个明显的重C轻A的方案。或者通过微服务去实现双写。但是对于未来多个机房,一个运单可能跨越多个机房,应用双写很难做,并且建立一个新机房,我们就要修改应用,这不是一个
个人技术集锦还为您提供以下相关内容希望对您有帮助:
数据同步利器-otter的搭建使用说明
Otter提供以下功能:1. 单向与双向数据库同步。2. 文件同步至本地或Aranda。3. 双数据库同步,包括冲突检测与解决。4. 数据迁移,支持中间表与行记录同步。无需手动导历史表或仅依赖MySQL主从复制,Otter能解决复杂数据同步问题。典型场景如账户信息与交易明细同步,通过Otter将历史数据导出,原交易表则可...
Canal报错总结
对于“ERROR c.a.otter.canal.adapter.launcher.loader.AdapterProcessor - java.lang.NullPointerException”错误,检查SQL别名是否匹配,如不匹配,可能是因为异常由null导致。深入分析发现,解析时使用了sqlidentifierexpr,导致owners为空。解决办法是确保所有字段都加上别名。发现“Unknown system variable '...
PB级索引数据的实战:百亿数据,毫秒级返回,如何构建?
虽然文章中提到了许多工具和组件,如ES、Canal、otter,但深入研究它们的配置和原理将更有利于理解和优化。对于这些技术,有兴趣的读者可以进一步探索,收获会更加丰富。
阿里巴巴采用自己研发的分布式数据库系统叫什么,它有哪些特点
数据库同步中间件涉及数据库之间的同步操作,可以实现跨(同)机房同步以及异地容灾备份、分流等功能。可以涉及多种数据库,处理之后的数据也可以以多种形式存储。(Otter, JingoBus, DRC)数据库与数据库之间会有数据迁移(同步)的动作,同款数据同步原理比较简单,比如MySQL主备同步,只要在数据库层进行...
kettle有什么特点
Otttor是由阿里巴巴开源的一个数据同步产品,它的最初的目的是为了解决跨国异地整个机房的架构为双A,两边均可写。开发时间长达7年,并持续到现在。目前阿里巴巴B2B内部的本地/异地机房的同步需求基本全上了Otter。Otter基于数据库增量日志解析,支持mysql/oracle数据库进行同步,在最新的v4.2.13已经支持...
Canal-adapter1.1.4集成Elasticsearch7.8.0排坑指南及在本地环境运行c...
另外一种方法就是,运行前还是先使用maven的install安装一下。采坑点之二:报错信息Config dir not found 在本地调试过程中,发现有报错Config dir not found。通过报错行打断点进一步排查,发现是项目启动完毕后在执行数据初始化阶段没有找到配置文件所导致的异常。这个问题也比较好解决,我们可以在canal-...
用“英语”介绍下水獭
slim bodies and relatively short limbs, with webbed paws. Most have sharp claws on their feet, and all except the sea otter have long muscular tails. The twelve species range in adult size from 0.7 to 1.8 metres (2 to 6 feet) in length and 5 to 45 kilograms (10 to 10...