分布式微服务共享状态

时间:2014-01-19 15:01:46

标签: java session cluster-computing distributed

我需要在java中构建一个非常简单的服务,它提供用户/登录特定的客户端! http请求。基本上我希望其他服务能够询问我的会话服务,例如10个课程,并与那些人一起工作......到目前为止一直很好。

当我们开始讨论租用这些会话并在不再需要时释放它们时,它变得更加复杂。所以我的会话服务需要跟踪当前租用的会话和当前免费的会话。就像这个问题的线程或连接池一样,但跨越多个节点(多个jvms)。但是,如果我在内存中跟踪,如果我将服务停止进行维护,它会崩溃或者无论如何,状态都会丢失,当它恢复时,我可能会分发已经准备就绪的会话。此外,当我在集群中运行服务时,状态(租用会话)当然必须在所有节点上保持一致。

最重要的是,我不能让两个或更多服务获得相同的会话。

如何实现这一点的任何好主意将非常感谢!也欢迎替代品,因为仍有改变游戏规划的空间。

我希望这对你们有意义,如果不是让我知道,我会尝试进一步解释。

感谢。

1 个答案:

答案 0 :(得分:1)

根据定义,微服务必须是无状态的。必须将所有状态推送到数据源。

因此,在您的情况下,您可以在每个请求中包含一些内容(例如:HTTP标头)以识别上下文。

如果要共享状态,请使用memcache(key = http标头,值=会话内容)