我正在开发一个按组织划分用户的系统。每个用户都属于一个组织。每个组织都将其数据存储在自己的数据库中,该数据库位于数据库服务器计算机上。一个数据库服务器可以管理一个或多个组织的数据库。
现有(遗留)系统假定只有一个组织,但是我想通过运行它的“实例”(绑定(bind)到一个组织)来“扩展”应用程序,并在服务器计算机上运行多个实例(即运行“单一组织”应用程序的多个实例 - 每个组织一个实例)。
我将为在服务器上运行的每个实例提供一个 RESTful API,以便可以使用瘦客户端访问在服务器机器上运行的实例提供的服务。
这是一个演示关系的简单示意图:
Server 1 -> N database (each organization has one database)
organization 1 -> N users
我的问题涉及如何将来自客户端的 RESTful 请求“定向”到处理该组织用户请求的适当实例。
更具体地说,当我收到一个 RESTful 请求时,它将来自一个用户(属于一个组织),如何(或者实际上,什么是最好的方法)将请求“路由”到正在运行的适当的应用程序实例在服务器上?
最佳答案
据我所知,这本质上是一个分片问题。无论您如何在硬件级别拆分实例(使用虚拟机、多台服务器、全部在一个强大的服务器上等),您都需要在整体架构中有一个中央注册表和代理层,根据请求将给定的用户映射到正确的目标实例.
当然,有很多方法可以实现这一点,所以只需选择一种您知道的、快速的、可扩展的,因为所有请求都会通过它。我会建议一个轻量级的无状态 Web 应用程序,由一个简单的只读数据库支持,该数据库执行适当的客户端标识符 -> 实例映射,您可以将其加载到内存/缓存中。为了增加硬件和实例位置的灵 active ,使用(假设是 Java)JNDI 来存储每个实例的硬件/端口/等信息,并在您的标识符映射中将客户端标识符映射到适当的 JNDI 查找键。
关于c++ - 如何 'web enable' 遗留 C++ 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3298275/