当前播放: 如何实现数据异构的多级缓存策略?
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
合辑:新版短视频
Kafka某台broker IO阻塞,为何会导致发送方无法发送消息?
什么是C++中的The Rule of Three?
基于时序特性,如何构建一个时序存储引擎?
如何利用反射和泛型编程让你的Java代码更优雅?
C++中为什么move constructor需要加noexcept?
如何使用Postman做接口自动化测试?
给你点“颜色”瞧瞧
如何用Spark实现一个通用大数据计算引擎?
如何让你的Robot Framework飞起来?
如何透彻理解Selenium和WebDriver?
Spring Data JPA 如何进行复杂动态查询?
Spring Data JPA如何实现动态部分更新?
未来的编程语言长什么样?
高并发场景下锁的使用技巧(悲观锁/乐观锁/分布式锁)
为什么React组件要声明key?
为什么React不推荐使用Mixin?
如何设计一个高可用的配置中心?
如何通过代码技巧提升内存使用效率?
如何全面地改造Robust?
如何基于Netty构建一个简单的RPC服务?
Spring Boot中如何使用HTTP/2?
教你10分钟玩转Gradle plugin
如何深入理解Kube-Proxy?
如何深入理解Kubernetes架构?
如何使用和优化iOS中的WebView?
一个1000万资金重复支付的代码剖析
如何实现数据异构的多级缓存策略?
如何从 CRD 扩展开发切入Kubernetes源码学习?
如何更轻松简单地从源码编译部署Kubernetes?
如何设计并实现一个高可用的订单系统?
ZooKeeper的ZAB算法与Paxos的本质区别是什么?
微服务框架Apache ServiceComb的设计思想有哪些?
如何深入理解分布式事务TCC实现原理?
SSR 、CSR、预渲染、同构等首屏优化技术要如何选择?
如何利用ClassPath解决Java开发工程问题?
如何读懂Babel转换出的JavaScript代码?
大厂前端面试中经常提到的Promise要如何实现?
使用 Vue 开发小程序是怎么做到的?
为什么CSS要放在header底部,JavaScript要放在body底部?
前端Router是怎么实现的?
如何理解现代发布策略?以Kubernetes为例
JavaScript中如何封装一个具有自动失败重试功能的HTTP模块?
JavaScript中如何优雅地实现函数防抖?
服务发现技术是如何演进出来的?
HTTP/2能带来哪些性能提升?
如何快速对请求链路的关键点进行网络问题排查?
React 中如何实现模块的按需加载?
究竟要不要使用React Hooks?
TLS1.3原理以及在Nginx上的应用
如何利用有效的资源扛住618大促流量?

如何实现数据异构的多级缓存策略?

张松然 前京东架构师

数据异构是现在非常常用的技术手段之一,通过同步或异步的方式在异地进行存储,以提供用户进行数据查询。数据异构与构建缓存常结合使用,那么哪些场景下适合哪种数据异构?哪些场景应该选择哪种缓存策略呢?

讲师介绍

张松然,前京东架构师。他有 10 余年资深架构经验,一直从事平台的架构设计与开发工作,在构建高性能、高可用大规模分布式系统有较丰富的实战经验。另外,他在微服务领域的设计与开发上也有多年经验,对分布式技术有深入研究与领悟。

展开
¥4.99 购买
开通VIP
55
登录 后留言

精选留言(5)

  • 王磊
    你好,对于缓存的设计讲述的很详细,也很接地气,容易落地,但是好像并没有说到多级缓存的策略,多级如何设计,过期策略又要如何设计,希望大牛可以讲讲

    作者回复: 这位同学你问的问题很专业,也很感谢你的支持。多级设计和过期策略在视频也有提到,但可能由于时间的限制,没有讲的太细。我简单的补充下,多级可以设计二层或者三层策略,不同场景采用不同的策略,主要看你数据库是否可以抗住缓存穿透可能造成的影响,如果有风险,建议二层,使用缓存全量存储。过期策略在不同的层可以有所不同,比如内存层可以根据对最后访问和最久访问的数据进行过期,REDIS层可以根据存储时间设置过期,也可以自己实现过期策略。其原则,一是数据库不是用来扛量的,做好防护;二是缓存设计好存储策略,避免大KEY和热KEY。

    2019-10-18
    1
    10
  • Lt.hanyu
    松然老师这种从实践中来的技术才是经得住考验的。
    个人在工作中也有如下思考:

    binlog的方式更强调的是执行结果。毕竟已经脱离应用层面而且主库已经落库完成;而mq更趋向于事件驱动的方式。发起一个写入事件,触发后续操作。

    binlog的顺序消费有好有坏。好就是顺序,通过消费的顺序性与单点性保证了业务的顺序性,而坏就是效率低下与单点的高可用性。

    最后任何主动缓存都是必须有后期自愈检核的。毕竟缓存与数据库不能用事务保证实时一致性,我们就必须用补偿来实现最终一致性。而增量补偿+有条件的全量补偿基本就能万无一失。不一致的时间长短这就要看系统的容忍度。

    缓存技术应用分场景,缓存数据使用分冷热。技术从没有好坏,如张老师说的,只需用在合适的地方。

    感谢松然老师的分享

    作者回复: 非常感谢这位同学的支持和鼓励,让我备受鼓舞,让我觉得做这次分享是非常有意义的。从你留言中的笔记来看,你一定是一个善于总结和学习的人,这一点非常可贵,希望你能继续坚持,我从2013年开始总结写博客,一点点努力到今天,与你共勉,共同加油。

    2019-11-01
    4
  • gu
    从工作上的实际问题,出发解决。点赞
    2019-10-17
    4
  • 小脚丫
    简明扼要,真正的解决问题,真正的实践!
    2019-10-21
    3
  • 海水
    分库分表的情况 使用binlog方案怎么处理?

    作者回复: 这位同学你问的问题真的非常好,这的确是一种复杂的场景。我觉得这个问题的关键点在于你异构缓存的存储策略,缓存是否采用与数据库相同的分库分表策略,由多个缓存对应多个数据库;还是数据聚合成一份存储,由一个缓存对应多个数据库。binlog是监听数据库粒度的,通过mq获取到binlog后,采用storm或flink等,你可以实现场景需要的缓存存储策略。

    2019-10-20
    3
收起评论
其他推荐
36:19
Go工程项目实践
毛剑 bilibili数据平台部技术总监
免费
43:04
大规模实时图计算在PayPal风险管理系统的应用
张彭善 PayPal大数据研发架构师
试看
41:43
互联网金融产品个性化营销算法的探索和实践
赵争超 同盾科技资深算法专家
试看