Consul中同一个服务的实例之间如何交换数据?

How to exchange data between instances of the same service in Consul?

我正在尝试 Spring 云和 Consul 的组合,我想知道是否有办法在微服务实例之间交换数据和状态。

例如,我有 AuthenticationService1 (AS1) 和 AuthenticationService2 (AS2)。当用户访问 AS1 时,他会登录并收到一个令牌,下次他访问时只会进行验证。但是此时AS2并不知道AS1的状态。

我看到了关于使用存储用户会话信息的数据库 table 的想法,但也许有更简单的方法让 AS1 与 AS2 共享其状态或发送有关登录的消息?

Consul 是一个服务管理(发现、配置等),而不是缓存/发布-订阅系统。

您可能希望在后台为您的用例使用共享缓存。您的 AS1 服务对用户进行身份验证,然后将令牌放入缓存中。 AS2 可以检索缓存中的令牌。为此,您可以使用

这样的应用程序
  • redis
  • 淡褐色
  • 无穷大
  • ...其他内容,例如将数据存储在数据库中...

您还可以为每个 ASx 使用 pub-sub 系统和本地缓存,但在 AS 重启时可能会出现问题(缓存丢失)。所以从我的角度来看,共享缓存更好。