我想创建一个具有以下架构的Web应用程序:
有一些功能,它们被封装在“业务逻辑”模块(1)中。它使用MongoDB作为数据存储(5)和外部(命令行)应用程序(4)。
应用程序的功能通过两个渠道提供给最终用户:
Web应用程序是用Java编写的,基于Vaadin平台。目前它在Jetty Web服务器上运行。
一个重要的要求:Web应用程序应该是可扩展的,i。即必须可以通过添加新硬件来增加它可以服务的用户/事务的数量。
我对此架构的技术实施有以下问题:
可以使用哪些技术来实现业务逻辑部分?创建SCALABLE应用服务器的明智选择是什么?
我可以为Web界面部分(2)选择哪种Web服务器来使其可扩展?有什么选择?
在外部系统(4)中完成的计算可能是CPU密集型的。因此我想以异步方式完成它们,i。即
a)用户发送此操作的请求(通过上图中的Web界面或公共API,2和3),
b)将请求放入队列,然后
c)完成CPU密集型计算并
d)在某个时间点,答案会发送给用户。
实现此排队有哪些技术选项(除了JMS)?
提前致谢
的Dmitri
答案 0 :(得分:1)
为了扩展互动,你看看Drools网格,Akka还是JPPF? 为了使网络应用程序可扩展,你看看Terracotta或Glassfish集群功能(如果我记得很清楚,Vaadin是一个玻璃鱼合作伙伴)?
答案 1 :(得分:0)
由于没有人回答我的问题,我会自己做。
从其他资源我了解到可以使用以下技术来实现此架构:
1)Spring for Business logic(1)
2)GridGain或Apache Hadoop用于扩展与外部系统的交互(4)
3)Hazelcast使网络应用程序可扩展(2,服务器端会话)。