1

我想创建一个具有以下架构的 Web 应用程序:

我的应用程序的架构

有一些功能被封装在“业务逻辑”模块 (1) 中。它使用 MongoDB 作为数据存储 (5) 和外部(命令行)应用程序 (4)。

应用程序的功能通过两个渠道提供给最终用户:

  1. Web 应用程序本身 (2) 和
  2. 公共 API (3),允许第三方应用程序和移动设备访问业务逻辑功能。

Web 应用程序是用 Java 编写的,基于 Vaadin 平台。目前它在 Jetty Web 服务器中运行。

一项重要要求:Web 应用程序应该是可扩展的,即必须能够通过添加新硬件来增加它可以服务的用户/事务的数量。

关于此架构的技术实现,我有以下问题:

  1. 可以使用什么技术来实现业务逻辑部分?创建 SCALABLE 应用服务器的明智选择是什么?

  2. 我可以为 Web 界面部分 (2) 选择什么 Web 服务器以使其可扩展?有什么选择?

  3. 在外部系统 (4) 中完成的计算可能会占用大量 CPU。因此我想以异步方式完成它们,即

a) 用户发送此操作的请求(通过 Web 界面或公共 API,上图中的 2 和 3),即

b) 请求被放入队列,然后

c) CPU 密集型计算已完成,并且

d) 在某个时间点将答案发送给用户。

有哪些技术选项可以实现这种排队(JMS 除外)?

提前致谢

德米特里

4

2 回答 2

1

为了扩展交互,你看过 Drools 网格、Akka 或 JPPF 吗?为了使 Web 应用程序具有可扩展性,您是否查看过 Terracotta 或 Glassfish 集群功能(如果我记得很清楚,Vaadin 是 glassfish 的合作伙伴)?

于 2011-08-15T12:51:02.623 回答
0

由于没有人回答我的问题,我会自己做。

从其他资源中,我了解到以下技术可用于实现此架构:

1) Spring for Business 逻辑 (1)

2) GridGain 或 Apache Hadoop 用于扩展与外部系统的交互 (4)

3) Hazelcast 用于使 Web 应用程序可扩展(2,服务器端会话)。

于 2011-01-21T15:31:18.940 回答