我在谷歌上搜索了很多关于微服务如何访问Redis数据的信息,但没有找到好的教程。这是我的用例。
用户首次登录身份验证微服务A(spring Boot )。经过身份验证后,用户的配置文件数据由微服务A存储在Redis缓存中。
现在有微服务B(Sping Boot )和微服务C(NodeJ)。这两个微服务想要从redis读取用户的配置文件。
我的问题是,这两个服务B和C如何知道认证微服务A用于存储配置文件数据的密钥,以便它们可以使用它来访问数据?
Redis密钥是否应该写入属性文件并在微服务之间共享?
在真实的世界生产环境中如何做到这一点?
任何指向博客或教程将不胜感激
2条答案
按热度按时间dm7nw8vv1#
如果你需要通知其他服务,并使用Redis来做到这一点,你可以使用Redis的Pub/Sub功能。您可以使用服务B和C订阅的通道
newuser
,并让服务A在创建新用户密钥时将其发布到该通道。Read more about Redis Pub/Sub
1hdlvixo2#
这是一个更普遍的问题,所以我会问一个引导性问题。希望你不介意。
如果你有一个存储多个微服务使用的用户配置文件数据的关系数据库,你将如何共享表和字段名称?
如果你的回答是,“我不知道,这是一个好问题”,那么这实际上是一个关于在微服务之间共享数据的问题,而不是Redis特有的问题。
如果你有这个问题的答案,那么就把这个答案用在Redis上。Redis中的键名类似于关系数据库中的表名和字段名。
也就是说,有一个学派认为微服务不应该共享内部数据。相反,他们应该传递信息或互相打电话,每个人都应该有自己的数据库。如果他们不这样做,这真的是一个分布式的整体。我赞同这一思想流派,所以我的建议是不要以这种方式构建你的软件。
也就是说,其他优秀的人有其他的意见,并订阅其他学校,这是好的。毕竟,没有解决方案,只有权衡。如果我订阅了另一所学校,我只需要将其全部存储在配置文件中或硬编码它们。就像我对数据库表名一样。