存档

2016 年 06 月 - 1 文章

基于数据库复制的技术架构讨论

背景 这里的数据库复制指的是将 业务数据库实例上的库通过同步机制(比如 MySQL binlog)实时(比如最大延迟为 3s)复制到其他数据库实例上,这些实例库只做查询,不做数据写入。 这套架构设计的主要优势: * 各业务应用能够方便地在自己的 DB 实例上进行业务查询,比如通过 join 主业务库 * 在不明确业务边界、没有梳理好业务对应技术模块时可以最小成本进行变更或扩展 * 实现读写分离,提升性能 ### 一些问题 实际在实施过程中主要遇到两个问题: 1. 不可能实时完成数据同步,将造成业务上面的不一致,比如调用主库服务更新数据后,在业务库上不能实时查询到已更新的数据 2. 很难保证高可用(在使用阿里 DTS 时出现过多次问题,自己做主从可能会好一些) 为了满足业务发展,复制库的数量会逐步增多(比如新开一个产品可能就需要多复制一套库),以上两个问题可能会导致严重的故障, [CAP] 不能兼得。 ### 服务化 基于数据库复制架构的核心理念是将数据源暴露给应用,开发者直接针对数据源进行开发,是一种非常直接的方式。 但随着业务的逐渐清晰,一些业务逻辑是可以抽....

More...