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