微服务化       

微服务化

4大难点

数据一致性分发

发件箱

使用数据库事务,令修改数据库和将事件插入发件箱表保持原子性

变更数据捕获cdc(canal)

数据聚合

CQRS(命令查询分离模式)

利用数据分发,聚合两个服务的数据

分布式事务

2PC(seata)

TCC

saga(cadence)

事务处理原则

  1. 假定网络或者服务不可靠
  2. 将全局事务建模成一组本地ACID事务
  3. 引入事务补偿机制处理失败场景
  4. 事务始终处在一种明确的状态(不管成功还是失败)
  5. 最终一致
  6. 考虑隔离性
  7. 考虑幂等性
  8. 异步响应式,尽量避免直接同步调用

单体系统拆分

创建新服务

应用走服务调用

迁移独立db(数据库迁移:双写)

继续拆分

关键步骤:

接口收口

双写迁移db

​ 增量可回滚

​ 数据补偿+比对

数据分发去join

计划+梳理+沟通+监控

参考

https://time.geekbang.org/course/detail/100053601-264164