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