代码之家  ›  专栏  ›  技术社区  ›  Phate

对于一个处理遗留问题的微服务体系结构来说,什么是一个记录良好的缓存策略模式?

  •  0
  • Phate  · 技术社区  · 6 年前

    1. 直接数据库访问
    2. 调用外部遗留服务

    我可以考虑两种缓存策略,但考虑到我无法控制其他人可以跨层执行的操作,因此无法找出最佳的缓存策略。

    应用程序级缓存(@Cacheable)

    spring.cache.redis.密钥前缀 以限制冲突键。

    • 赞成的意见
    • 欺骗 :
      • 除了最大空间之外,没有对缓存的控制:人们只会创建新的缓存条目
      • 可能的冗余:由于缓存在应用层,所以微服务可能存储相同的数据。虽然我可以控制数据库(一个MS应该拥有自己的db或至少一个子集的表),但我不能保证遗留的SOAP层

    服务层缓存(连接器)

    我没有提供缓存特性,但是我提供了定制的soap连接器,它将/不会基于我将提供的配置缓存响应(也可以是黑名单/白名单)

    • 赞成的意见:
      • 缓存被控制
      • 容易失效
    • 欺骗:
      • 开发与体系结构之间的依赖关系

    编辑:我需要的是关于理论方法的建议,而不是关于具体技术的建议。

    0 回复  |  直到 6 年前
        1
  •  1
  •   CovetousSlope    6 年前

    我想您应该构建不同的微服务(API)来处理不同的职责集。比如,你可以有一个处理遗留问题的微服务和另一个处理数据库的微服务。为了让这两个微服务通信,您可以使用类似apachekafka(hazelcast是经济高效的还是rabbitmq)的消息代理体系结构。 一旦你决定了这一点,那么你就可以确定在哪里放置你的缓存了。 如果有显示这些值的UI,则需要将缓存放在应用程序级而不是服务级。