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分布式锁解决方案相关推荐

  1. 分布式存储系统中的数据高效缓存方法

    点击上方蓝字关注我们 分布式存储系统中的数据高效缓存方法 杨青霖, 吴桂勇, 张广艳 清华大学计算机科学与技术系,北京 100084 摘要:针对典型分布式存储系统存在的写放大.I/O路径过长.响应时延 ...

  2. [以太坊源代码分析] II. 数据的呈现和组织,缓存和更新

    在Ethereum的世界里,数据的最终存储形式是[k,v]键值对,目前使用的[k,v]型底层数据库是LevelDB:所有与交易,操作相关的数据,其呈现的集合形式是Block(Header):如果以Bl ...

  3. python db.commit_python对MySQL进行数据的插入、更新和删除之后需要commit,数据库才会真的有数据操作。(待日后更新)...

    今天在尝试用下面的python代码对MySQL进行数据的插入.更新和删除时, 突然发现代码执行成功, 通过代码查询也显示数据已经插入或更新, 但是当我在MySQL客户端通过SQL语句查询时, 数据库中 ...

  4. 更新操作先删除缓存后更新DB,还是先更新DB后删除缓存问题???

    以前自己在学校学习redis的时候还真没想到这么多,上班后看公司的项目代码,发现都是先更新DB,然后删除缓存,而且更新DB后不会立马将DB数据放入缓存,然而我以前不管是查询还是update都是操作完D ...

  5. ie浏览器缓存不能更新页面数据

    其他浏览器好使,ie浏览器不清缓存不能更新页面数据,采用下面的方法清除缓存 需要在Java过滤器里面添加如下字段 response.setDateHeader("Expires", ...

  6. 大厂都拿捏的缓存方案,平台级分布式缓存,什么业务才合适?

    所有程序猿都对那缓存并不陌生,好似那风一样的女子只为你独自而舞.只见那回眸一笑百媚生,让你甚是吝惜,惹人怜爱. 但随着项目规模不断增大变强,光是单个缓存就难以招架,优而显得力不从心. 这时伴随着多级缓 ...

  7. redis一般缓存什么样数据_Redis缓存和MySQL数据一致性方案详解

    关注我,可以获取最新知识.经典面试题以及技术分享 一.需求起因 在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节.所以,就需要使用redis做一个缓冲操作,让请求先访问到redis, ...

  8. 两难!先更新数据库再删缓存?还是先删缓存再更新数据库?

    前言 当我们在做数据库与缓存数据同步时,究竟更新缓存,还是删除缓存,究竟是先操作数据库,还是先操作缓存?本文带大家深度分析数据库与缓存的双写问题,并且给出了所有方案的实现代码方便大家参考. 本篇文章主 ...

  9. redis分布式锁与zk分布式锁的对比

    在分布式环境下,传统的jvm级别的锁会失效,那么分布式锁就是非常有必要的一个技术,一般我们可以通过redis,zk等技术来实现我们的分布式锁 redis实现分布式锁: 原理:我们都知道redis的处理 ...

最新文章

  1. MoviePy - 中文文档2-快速上手-MoviePy-预览
  2. html select滚动轴,javascript - html select scroll bar - Stack Overflow
  3. tushare 新功能(导入股票和大盘历史数据)
  4. 将Mac OS X从Snow Leopard升级到Mountain Lion
  5. 初始化方法-使用参数设置属性初始值
  6. C++基础13-类和对象之继承1
  7. jsp登录密码加密_[源码和文档分享]基于JSP和MYSQL数据库的在线购物网站的设计与实现...
  8. 供应链勒索攻击登场,REvil 利用0day 迫使安全事件响应工具 VSA部署勒索软件
  9. Mybatis笔记 - SQL标签方法
  10. IE无法打开新链接的问题
  11. 用库仑计方法来计量电池容量
  12. Android 蓝牙AVRCP 专题(2)-----黑名单
  13. ARM 汇编指令 MRS用法
  14. 10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔
  15. The Witness - 美不胜收的解谜游戏
  16. Vue2 + ant design vue1.7.8版本 Table组件 手动拖拽、可伸缩列功能
  17. 百度资源(站长)平台怎么提交收录?
  18. JAVA程序把大写转换小写_Java程序将字符串转换为小写和大写。
  19. MySQL之——函数
  20. Facebook的利润创下历史新高,不受最近的丑闻影响

热门文章

  1. Python:布尔表达式
  2. PMBOK指南第六版与第五版的区别在哪里?
  3. ZZULIOJ-2910
  4. 原生JS实现瀑布流效果
  5. 海内存知己,天涯若比邻:数学真知的魅力
  6. Phase2 Day19 数据库范式设计 复杂查询
  7. java虚拟机32位_jre1.6java虚拟机运行环境下载|jre1.6官方版32位/64位下载_v1.6.0_9号软件下载...
  8. Afreechart很强大的图表库,支持股票曲线图,饼图,曲线
  9. 好工具推荐系列:Linux远程连接,终端工具,SSH和SFTP
  10. Unity3D中引用Spine2D动画研究学习(一)