首页 > 解决方案 > 如何在 Consul 中同一服务的实例之间交换数据?

问题描述

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

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

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

标签: microservicesspring-cloudconsul

解决方案


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

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

  • 雷迪斯
  • 榛树
  • 无限期
  • ...其他东西,例如将数据存储在数据库中...

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


推荐阅读