我正在看dropbox的艾地托雷的设计。它管理数千个MySql实例,其中所有dropbox的元数据都驻留在其中(用户、文件名等)。我理解为什么切分是必要的,我也理解为什么让客户端与一个将请求路由到正确的edgestore core ( MySql shard,edgestore engine)的D2进行对话非常有用。我不明白的是,增加以下复杂性有什么好处:
由于我们的工作负载很重,核心使用缓存层来加快查找速度.为了实现高可用性,还对缓存进行分区和复制。Edgestore在默认情况下提供了强一致性,这要求在写时使缓存无效。如果工作负载可以容忍陈旧的读取,客户端可以请求最终的一致性。
默认情况下,只依赖每个MySql提供的LRU缓存有什么问题?应用程序缓存效率高得多吗?多么?向我说明如何更有效地维持这样一个复杂的机制是有道理的。

发布于 2020-04-09 11:40:25
我能想到的几件事
https://softwareengineering.stackexchange.com/questions/408569
复制相似问题