正在写一个与consul联动动态更新upstream的插件,我们之前使用的微博upsync模块功能不是太理想。目前我也是把upstream信息放在shared dict中的,因为consul自带的就有long polling和index,我考虑把index和value分别存在两个shared dict中,这样定时器只会频繁地访问index这个shared dict,减少全局锁对其他worker的影响,但是我估计性能还达不到我们产线量级的要求,就像老师说的每次请求都要反序列一次,后续可能会再引入lru cache。。老师有什么好的建议吗?
作者回复: 建议看看 lua-resty-mlcache,等于多加一层 lru cache。mlcache提供了 `l1_serializer`,专门用于处理 shared dict 提升到 lru cache 时候对数据的处理,可以尽可能的减少序列化。