需要您对以下系统的设计建议:要求是,我有 4 个 App Server 连接到 4 个 DB 服务器。用户可以使用任何应用服务器访问托管在 4 个应用服务器上的同一应用程序。但是用户在一个服务器上更新的数据应该立即可供用户从不同的应用服务器访问同一个应用程序。
这种同步是否存在任何设计模式?
需要您对以下系统的设计建议:要求是,我有 4 个 App Server 连接到 4 个 DB 服务器。用户可以使用任何应用服务器访问托管在 4 个应用服务器上的同一应用程序。但是用户在一个服务器上更新的数据应该立即可供用户从不同的应用服务器访问同一个应用程序。
这种同步是否存在任何设计模式?
“我被要求在应用程序设计级别而不是数据库上找到解决方案” - 在这种情况下,后面有 4 个 DB 服务器的事实是无关紧要的。
由于要在应用层面解决,这些应用服务器需要通过一些媒体进行通信。正如其他人已经说过的那样,数据库将是一个明智的选择,但您的要求排除了这一点。
因此,您的应用服务器必须能够在它们之间进行通信并实现一些共识解析协议(例如Paxos是众所周知的),以确保它们都同意什么是“真相”
这通常在基础设施级别完成,而不是在应用程序本身中完成。我建议使用一些分布式缓存(例如 memcached 或 redis 集群 - 但后者尚未准备好),但这取决于其他要求(耐用性等)。此外,IMO 这也属于此上下文中数据库的定义,即它是基础架构级别,而不是应用级别。
“在应用程序设计级别找到解决方案”的要求似乎相当综合,不是由功能需求驱动或由不健全的非功能需求驱动,但我可能是错的。我可以想象这是由性能要求驱动的,但这很容易降低性能。