Distributed 大型配置缓存同步

Distributed 大型配置缓存同步,distributed,Distributed,平台的所有配置数据都位于中央MySQL数据库中 对于在平台中运行的进程,此配置在内存中的缓存中读取,该缓存包含具有复杂数据结构的对象,适合于运行实时平台 我需要定期将这个中央缓存分发到每个分布式组件的帮助。目前,应用程序进程需要在缓存同步过程中暂停其常规任务,其中缓存同步指的是清除内存中的旧缓存并从MySQL中的新数据重新创建它们 我能想到的一个选项是,在生成缓存副本时让进程关闭旧缓存,然后从旧缓存切换到新缓存并删除旧缓存。但是缓存确实相当大,而且预计还会增长 有更好的选择吗 提前谢谢 瓶颈是什

平台的所有配置数据都位于中央MySQL数据库中

对于在平台中运行的进程,此配置在内存中的缓存中读取,该缓存包含具有复杂数据结构的对象,适合于运行实时平台

我需要定期将这个中央缓存分发到每个分布式组件的帮助。目前,应用程序进程需要在缓存同步过程中暂停其常规任务,其中缓存同步指的是清除内存中的旧缓存并从MySQL中的新数据重新创建它们

我能想到的一个选项是,在生成缓存副本时让进程关闭旧缓存,然后从旧缓存切换到新缓存并删除旧缓存。但是缓存确实相当大,而且预计还会增长

有更好的选择吗


提前谢谢

瓶颈是什么?内存网络?需要将数据转换为内部表示的时间

无论如何,以下是一些附加选项:

  • 如果一致性约束允许,则将配置拆分为块并逐个更新这些块。这将防止内存耗尽。(节点下载chunk#0,将其转换为内部应用程序格式,并删除chunk#0的早期版本;下一步将转到chunk#1;依此类推)
  • 根据您使用的语言/平台,可以创建将配置转换为内部应用程序格式的独立工具,而不是在每个节点上分别执行此操作。例如,若您需要在一个巨大的排序数字列表中进行二进制搜索,转换工具可能会从mysql加载所有值,对它们进行排序并写入文件。接下来,将此文件复制到每个节点,每个节点加载此文件以替换以前的版本。节点仍然会暂停片刻,但您不会在转换上浪费时间
  • 逐个更新节点(如果一致性要求允许,请再次更新):从集群中删除节点#0,在其上删除旧版本的配置,加载新版本;添加回集群;移动到下一个节点
  • 简单地说,添加更多RAM