变化-数据-捕捉的用例:设计一个常青的缓存

Nicolas Fränkel

英文演讲 2021-08-08 16:10 GMT+8  (ROOM : B) #bigdata

当使用应用程序受到性能不佳的挑战时,很容易在他的SQL数据库前设置一个缓存。这并不能从根本上解决问题(比如糟糕的模式设计,糟糕的SQL查询等),但它可以完成工作。如果应用程序是唯一一个向底层数据库写数据的组件,那么相应地更新缓存是没有问题的,所以缓存总是与数据库中的数据保持同步。

当应用程序不是唯一一个向数据库写入的组件时,事情就开始变糟了。在其他的写入来源中,有批处理,其他的应用程序(不幸的是,共享数据库是存在的),等等。人们可能会考虑一些方法来保持数据的同步,即每隔一段时间轮询数据库,数据库触发器等。不幸的是,它们都有一些问题,使它们不可靠和/或脆弱。

你可能以前读过关于Change-Data-Capture的文章。Martin Kleppmann将其描述为将数据库翻转过来:这意味着数据库可以发送变化事件(SELECT、DELETE和UPDATE),人们可以注册。与聚合事件以产生状态的事件源相反,CDC是关于从状态中获取事件。一旦CDC被实现,人们就可以订阅其事件并相应地更新缓存。然而,CDC还处于早期阶段,其实现也相当具体。

在这次演讲中,我将描述一个易于设置的架构,该架构利用CDC来拥有一个常青的缓存。

讲师:

Nicolas Fränkel: 开发者布道师,拥有15年以上为不同客户提供咨询的经验,范围广泛(如电信、银行、保险、大型零售和公共领域)。通常从事Java/Java EE和Spring技术的工作,但对富互联网应用、测试、CI/CD和DevOps感兴趣。目前为Hazelcast工作。同时拥有培训师和书籍作者双重身份。