Meta如何将缓存一致性提高到99.99999999%( 三 )


请注意,这只是对bug发生过程的简化表述,实际中的bug会更加错综复杂 , 涉及数据库复制和跨区域通信 。只有当上述所有步骤都按特定顺序发生时,才会触发bug 。这种不一致性很少被触发,一般都隐藏在交错操作和临时错误后面的错误处理代码中 。
既然您已经接到 Polaris 调用缓存不一致的请求,那么最重要的就是检查日志,看看问题出在哪里 。正如我们之前所讨论的 , 记录每一个缓存数据变化几乎是不可能的,但如果我们只记录有可能导致变化的变化呢?
五、一致性跟踪
如果正在值班的你接到了Polaris报告的缓存不一致性的通知,最重要的是检查日志并确定问题出在哪里 。正如我们之前讨论的,记录每个缓存数据更改几乎是不可能的,但如果我们只记录那些有可能导致不一致性的更改呢?

Meta如何将缓存一致性提高到99.99999999%

文章插图
我们查看上面实现的代码,如果缓存没有收到失效事件或者失效操作没有生效,那么问题就可能发生 。从值班人员的角度来看,我们需要检查以下内容:
  • 缓存服务器是否接收到了失效请求?
  • 服务器是否正确处理了失效请求?
  • 之后相关条目是否变得不一致了?
Meta已经构建了一个有状态追踪库 , 该库在这个紫色小窗口中记录和跟踪缓存变更,所有有趣且复杂的交互都在这里触发bug,从而导致缓存不一致 。
结论
对于任何分布式系统来说 , 可靠的监控和日志系统都是必不可少的,以确保我们能够抓住bug,并在捕获bug时迅速找到根本原因,从而减少问题发生 。以Meta为例 , Polaris识别异常后立即发出警报 。借助一致性跟踪提供的信息,值班工程师在不到30分钟内就定位到了bug 。
>>>>参考资料
  • engineering.fb.com/2022/06/08/core-infra/cache-made-consistent/
作者丨Mayank Sharma 编译丨onehunnit
来源丨medium.com/@mayank.sharma2796/how-meta-improved-their-cache-consistency-to-99-99999999-58d79674a806
*本文为dbaplus社群编译整理 , 如需转载请取得授权并标明出处!欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn




推荐阅读