在服务之间共享 Redis
Sharing Redis among services
我有一个用例,其中 Microservice A
必须定期进行一些繁重的计算并将结果存储在缓存 (redis) 中 - 类似于 k8s cron 作业。
Microservice B
依赖于A写的Cache(B只读,从不修改cache)
但这里似乎正在共享数据库。这是一个好的设计吗?
(This aws doc 显示使用相同 redis 的 2 个不同服务)
redis 的内容应该被视为短暂的,而不是永久的。这是一个缓存。只要您的微服务(尤其是微服务 B)在 redis 中找不到他们期望的内容时表现得体,您的设计就没有问题 。
这在使用 Redis 的项目中实际上是一种非常普遍的做法(例如,您将 Redis 设置为充当消息代理的确切方式。一端写入消息,另一端读取消息。)
数据库意味着共享,尤其是在现代,一个程序可以包含数百个 micro-parts。
您不应该有任何与 Redis 相关的问题,但是您必须 为 Micro-service B 实施回退机制,以处理没有价值的情况找到,例如使用超时然后再次读取,或者获取一些默认值并使用它。
我有一个用例,其中 Microservice A
必须定期进行一些繁重的计算并将结果存储在缓存 (redis) 中 - 类似于 k8s cron 作业。
Microservice B
依赖于A写的Cache(B只读,从不修改cache)
但这里似乎正在共享数据库。这是一个好的设计吗? (This aws doc 显示使用相同 redis 的 2 个不同服务)
redis 的内容应该被视为短暂的,而不是永久的。这是一个缓存。只要您的微服务(尤其是微服务 B)在 redis 中找不到他们期望的内容时表现得体,您的设计就没有问题 。
这在使用 Redis 的项目中实际上是一种非常普遍的做法(例如,您将 Redis 设置为充当消息代理的确切方式。一端写入消息,另一端读取消息。)
数据库意味着共享,尤其是在现代,一个程序可以包含数百个 micro-parts。
您不应该有任何与 Redis 相关的问题,但是您必须 为 Micro-service B 实施回退机制,以处理没有价值的情况找到,例如使用超时然后再次读取,或者获取一些默认值并使用它。