业务实战场景(十八)缓存架构选择

2023-09-07  本文已影响0人  后来丶_a24d

目录


背景


redis集群 + mysql兜底架构

优势与劣势

对一致性和QPS要求比较低的方案

对一致性要求比较高的方案

对redis和mysql更新数据一致性要求高的系统


Canal + ES的架构

canal整体架构

canal整体架构.png
  1. eventParser: 数据源接入,模拟 slave 协议和 master 进行交互,协议解析
  2. eventSink: Parser 和 Store 链接器,进行数据过滤,加工,分发的工作
  3. eventStore: 数据存储
  4. metaManager: 增量订阅 & 消费信息管理器

canal顺序性保证

  1. 单一数据库实例: 为了保证数据的顺序性,你应该在单个数据库实例上使用Canal。因为在分布式环境下,多个数据库实例之间的数据同步可能会出现数据顺序不一致的情况
  2. GTID: MySQL的GTID (Global Transaction ID) 可以保证全局的事务顺序。在开始事务时,MySQL会为每个新的事务分配一个唯一的GTID。Canal在同步数据时,会同时传递GTID信息,以此来保证数据的顺序性。
  3. 消息顺序: Canal是基于阿里巴巴的开源组件RocketMQ实现的,而RocketMQ本身是支持消息顺序性的。在RocketMQ中,可以通过将消息与特定的消费者组关联,或者通过将消息发送到特定的分区,来保证消息的顺序
  4. 数据校验: 可以通过校验数据的一致性来保证数据的顺序。例如,可以在写入数据后,通过Canal读取刚刚写入的数据,然后与原始数据进行比对,确保数据的完整性和顺序性
  5. 应用层逻辑: 在应用层,如果需要保证数据的顺序性,可以在处理数据时根据GTID或其他事务信息进行判断和校验。例如,如果一个事务未完成就尝试读取或处理数据,那么应用应该阻止这种操作

ES双集群高可用

ES双集群高可用.png

参考文章

上一篇 下一篇

猜你喜欢

热点阅读