c++ - 如何 'web enable' 遗留 C++ 应用程序

标签 c++ c apache rest wt

我正在开发一个按组织划分用户的系统。每个用户都属于一个组织。每个组织都将其数据存储在自己的数据库中,该数据库位于数据库服务器计算机上。一个数据库服务器可以管理一个或多个组织的数据库。

现有(遗留)系统假定只有一个组织,但是我想通过运行它的“实例”(绑定(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/

相关文章:

c++ - QT:从 QLineEdit 到不同类的 QLabel 的简单文本

c++ - 将一个输入文件与给定数量的文件匹配的算法

c++ - 在二叉搜索树中初始化字符串数组

c - 随机 char* args[] 传递给 execv

java - Server Stop responding because of [Pool-Cleaner] :Tomcat Connection Pool but has failed to stop it. 这很可能造成内存泄漏

apache - 将主域和 support.example.com 重定向到 https,所有其他子域除外

apache - SSL:我可以在同一台服务器上对 Web 和邮件服务使用相同的 SSL 证书吗?

c++ - C++中的空字符常量

c++ - 如何在可能不存在的目录中创建文件?

c - 查找 8 位数字的数字总和的有效方法