DB数据变更缓存分布式更新的zk分布式锁解决方案
KafkaConsumer kafak消费线程,DB数据变更后,将消息推送到kafka topic,由消费线程进行消费
属性
1、ConsumerConnector 封装客户端连接,通过Consumer.createJavaConsumerConnector进行创建
2、ConsumerConfig 消费者配置类,构造函数通过Properties props入参传入
zookeeper.connect zk连接地址
group.id 消费者组
zookeeper.session.timeout.ms 心跳间隔时间
zookeeper.sync.time.ms zk集群leader和follower之间同步时间
auto.commit.interval.ms 自动提交的间隔时间
3、KafkaStream 流,代表一个无限的、不断更新的数据集,一个流就是有一个有序的可重放的、支持故障
转移的不可变数据记录序列,其中每个数据记录被定义为键值对。
4、KafkaMessageProcessor 消息处理线程,从kafkaStream 中迭代获取message
1、根据消息变更类型进行信息变更消息处理
2、一般传递业务变更表主键,根据主键从DB获取信息。组装缓存维度数据
3、通过分布式锁防止多应用并发消费覆盖
4、缓存内容增加时间戳,比较当前DB查询数据是否比缓存已有数据的时间版本新旧
5、如果更新或缓存空,保存分布式缓存内容,通过mq广播消息变更jvm本地缓存
6、释放分布式锁
DB数据变更缓存分布式更新的zk分布式锁解决方案
最新推荐文章于 2025-08-19 10:09:03 发布
该博客介绍了如何利用Zookeeper实现分布式锁来解决KafkaConsumer在消费DB数据变更消息时的并发问题。当DB数据发生变化,消息被推送到Kafka主题,由消费线程进行处理,包括根据消息类型处理信息,根据主键从DB获取数据,使用分布式锁防止多应用并发更新,比较DB数据与缓存版本,更新或初始化分布式缓存,并通过MQ广播更新本地JVM缓存。整个流程确保了数据一致性与高可用性。
732

被折叠的 条评论
为什么被折叠?



