mor*_*ous 5 c c++ apache rest wt
我正在研究一个按组织划分用户的系统.每个用户都属于一个组织.每个组织将其数据存储在驻留在数据库服务器计算机上的自己的数据库中.数据库服务器可以管理一个或多个组织的数据库.
现有(遗留)系统假设只有一个组织,但我想通过运行它的"实例"(绑定到一个组织)来"扩展"应用程序,并在服务器计算机上运行多个实例(即运行多个实例) "单一组织"应用程序 - 每个组织的一个实例).
我将为服务器上运行的每个实例提供RESTful API,以便瘦客户机可用于访问服务器计算机上运行的实例提供的服务.
这是一个简单的原理图,演示了这些关系:
服务器1 - > N数据库(每个组织有一个数据库)
组织1 - > N个用户
我的问题涉及如何将来自客户端的RESTful请求"引导"到处理该组织用户请求的相应实例.
更具体地说,当我收到RESTful请求时,它将来自用户(属于某个组织),如何(或实际上,最好的方式)将请求"路由"到服务器上运行的相应应用程序实例?
据我所知,这本质上是一个分片问题。无论您如何在硬件级别拆分实例(使用虚拟机、多台服务器、全部位于一台功能强大的服务器上等),您的整体架构中都需要一个中央注册表和代理层,根据请求将给定用户映射到正确的目标实例。
当然,实现这一点的方法有很多,因此只需选择一种您知道的、快速且可扩展的方法,因为所有请求都会通过它。我建议使用一个由简单的只读数据库支持的轻量级无状态 Web 应用程序,该数据库执行适当的客户端标识符 -> 实例映射,您可以将其加载到内存/缓存中。为了增加硬件和实例位置的灵活性,请使用(假设是 Java)JNDI 来存储每个实例的硬件/端口/等信息,并在标识符映射中将客户端标识符映射到适当的 JNDI 查找键。