扩展有状态NodeJS服务 - 基于对象ID(不是用户会话)的粘性/亲和性

时间:2018-05-31 13:05:22

标签: node.js scale stateful

我正在尝试找到一种水平扩展有状态NodeJS服务的好方法。

问题

问题在于我在网上找到的大多数选项都假设该服务是无状态的。 NodeJS集群文档说:

  

Node.js [Cluster]不提供路由逻辑。因此,设计一个应用程序非常重要,因为它不会过多地依赖于内存数据对象来进行会话和登录。
  https://nodejs.org/api/cluster.html

我们正在使用Kubernetes,因此如果我的服务是无状态的,那么在多台机器上进行扩展也很容易,但事实并非如此。

当前设置

我有一个保留在内存中的对象列表,每个对象都是一个事务边界。对此服务的请求始终在URL中具有对象ID。对同一对象ID的请求将被放入队列并一次处理一个。

所需设置

我希望将此接口保留到外部世界,但在内部将这个对象列表分布在多个节点上,并根据URL中的ID将请求路由到相应的节点。

routing request to appropriate node based on ID in URL

在NodeJS中执行此操作的常用方法是什么?我已经看到有人使用用户会话来确保给定用户总是去同一个节点,我想要做的是同样的事情,而不是使用URL中的ID使用用户会话。

0 个答案:

没有答案