我们有一个长期处于积极开发/维护状态(如十年)的系统(Java Web应用程序)。在这种情况下可以使用任何设计模式吗?
我们正在研究的是为Web应用程序实现一个RESTful API。这个使用Jersey的Web应用程序将是一个单独的项目,意图是它应该能够与主应用程序一起运行或部署在云中。由于我们的应用程序的性质和年龄,我们不得不在数据库(postgres)之上实现一个(稍微)全面的缓存层,以帮助减少负载。无论如何,对于RESTful API,这个想法是GET请求将首先进入缓存而不是数据库来保持数据库的加载。
缓存将以一种方式填充,以帮助确保注册的API用户将需要的大部分内容都应该放在那里。
如果存在高速缓存未命中,则应从数据库中检索所需数据(还要输入进程中的高速缓存)。
显然,我的代码中的RESTful端点方法应该保持透明。我们想出了创建'Broker'来处理与数据库和缓存的通信的想法。 REST层将简单地通过ID(如果想要检索)或填充的Java对象(如果希望插入/更新)并且代理将负责检索/更新/无效等。
还有问题的可扩展性。首先,API将与其他服务器共存,因此访问数据库不会成为问题,但是如果我们部署到云中,我们将需要一个不同的代理实现来与系统进行通信(即数据库)以不同的方式(可能通过使用内部API)。
我已经对如何实现这一点有了一个粗略的想法,但它让我感到可能是一个适合的模式可能存在的问题。如果我可以按照既定模式而不是提出自己的解决方案,那可能是更好的选择。有任何想法吗?
听起来像一个正常的服务/ DAO /等。模式给我,但我不确定你要找什么样的答案。通常,缓存将在DAO和DB层之间进行处理,并且服务对缓存问题一无所知。 –