免责声明:这篇文章的作者对 Web 应用程序的软件架构只有理论知识,几乎没有实践知识。
假设我想构建一个具有以下架构大纲的 Web 应用程序:
- 一个典型的 Web 前端,它允许用户创建/编辑/删除帐户并在...中创建/更新/删除帐户记录
- ... 存储所有用户帐户的数据库;
- 和一个 Jabber 机器人(一个单独的服务,可能在单独的物理机器上)与用户对话,但需要在同一数据库中查找和更新有关用户的内容 (2)。
所以,基本上我有两个应用程序使用同一个数据库。由于数据完整性、竞争条件和其他问题,我不确定这是一个好的解决方案。
我的典型用例可能是:User1 正在与 Jabber bot (3) 交互,bot 需要在数据库中查找和更新数据,而在同一时刻 User2 通过 (1) 创建一个帐户,这需要一些交互与数据库 (2)。
如何在保留所需功能的同时避免这种类型的架构?或者我如何设计架构以消除从两个不同服务查询一个数据库的需要?
(不幸的是,这个应用程序的“商业模式”不允许在一个 Web 服务中包含“帐户管理”(1)和“Jabber bot”(2)逻辑)。
PS 有问题的系统最重要的要求是高可用性(也许它会以某种方式影响答案)。