microservices - 如何在 Consul 中同一服务的实例之间交换数据?
问题描述
我正在尝试 Spring cloud 和 Consul 的组合,我想知道是否有办法在微服务的实例之间交换数据和状态。
例如,我有 AuthenticationService1 (AS1) 和 AuthenticationService2 (AS2)。当用户来到 AS1 时,他登录,收到一个令牌,下次他来的时候,它只是经过验证。但此时 AS2 并不知道 AS1 的状态。
我看到了有关使用存储用户会话信息的数据库表的想法,但也许有一种更简单的方法让 AS1 与 AS2 共享其状态或发送有关登录的消息?
解决方案
Consul 是一个服务管理(发现、配置、...),而不是缓存/发布-订阅系统。
您可能希望在场景后面为您的用例使用共享缓存。您的 AS1 服务对用户进行身份验证,然后将令牌放入缓存中。AS2 可以检索缓存中的令牌。为此,您可以使用类似的应用程序
- 雷迪斯
- 榛树
- 无限期
- ...其他东西,例如将数据存储在数据库中...
您还可以为每个 ASx 使用 pub-sub 系统和本地缓存,但在 AS 重新启动时可能会遇到问题(缓存丢失)。所以从我的角度来看,共享缓存更好。
推荐阅读
- azure-cosmosdb - ReadItemAsync 与 GetItemLinqQueryable?
- r - 如何在 r studio 中逐步整理这些数据集?
- python - selenium-python 代码管理(git) + jenkins 集成。现在如何在 jenkins 上运行 git 上的测试项目?
- powershell - 将变量导出到两列
- ruby-on-rails - 升级到 elasticsearch 7 时重新索引错误
- c# - Primitive Obsession - 具有自动增量的强类型 int ID
- c# - 在 WPF 中构建复杂的财务计算时如何管理文本框更改
- reactjs - 使用自定义 onDrop 行为扩展 ImageInput
- html - 具有不透明背景的重叠 div
- javascript - 在传单中设置图层的缩放级别