使用n app服务器和dao作为Web服务扩展我的Web应用程序

时间:2012-02-04 07:37:58

标签: java java-ee architecture scaling

假设我有多个应用服务器作为APP1,APP2,APP3 ...... APPN。

现在所有应用服务器都应该访问相同的数据库。

所以我虽然把DAO和DB一起放在单独的机器上并将DAO暴露为 web服务

它可以帮助我扩展基于Web的应用程序吗?

我计划使用以下架构

           load banncer
 appS1  appS2   .....        appSn   

       dao as webservice
       DB

这是个好主意吗? 我如何处理这种架构中的会话管理?

1 个答案:

答案 0 :(得分:1)

你拥有的是好的。但DAO作为Web服务可能无法应对不断增加的负载,加上Web服务请求可能会增加网络开销。我建议的是保持你的应用程序,添加一些缓存(可能需要一些代码更改)并扩展你的应用程序服务器和数据库。

要横向扩展,一般方法是向DBMS添加更多app-servers和更多slave。这通常伴随着添加缓存服务器,如MemcacheD,用于缓存您的值对象,通常是经常需要的对象,这些对象不会随着时间的推移而进行大量修改。缓存响应的速度比查询快,因为结果是缓存的。

上述方法我们已经使用了大约八年。最近数据存储方式和基础设施可用性发生了变化;大胆的模式(它可能是真正的痛苦,以修改现有的应用程序)步骤是修改您的应用程序(部分或完全)使用no-sql数据存储,这些数据存储是专门制作的对于重读写。如果你这样做有很多选择 - Cassandra,MongoDB,Dynamo和many more