我正在尝试找到一种水平扩展有状态NodeJS服务的好方法。
问题
问题在于我在网上找到的大多数选项都假设该服务是无状态的。 NodeJS集群文档说:
Node.js [Cluster]不提供路由逻辑。因此,设计一个应用程序非常重要,因为它不会过多地依赖于内存数据对象来进行会话和登录。
https://nodejs.org/api/cluster.html
我们正在使用Kubernetes,因此如果我的服务是无状态的,那么在多台机器上进行扩展也很容易,但事实并非如此。
当前设置
我有一个保留在内存中的对象列表,每个对象都是一个事务边界。对此服务的请求始终在URL中具有对象ID。对同一对象ID的请求将被放入队列并一次处理一个。
所需设置
我希望将此接口保留到外部世界,但在内部将这个对象列表分布在多个节点上,并根据URL中的ID将请求路由到相应的节点。
在NodeJS中执行此操作的常用方法是什么?我已经看到有人使用用户会话来确保给定用户总是去同一个节点,我想要做的是同样的事情,而不是使用URL中的ID使用用户会话。