我打算web应用程序,其中使用它将有一个客户端,将其计算机上运行的计算(因为这些计算不能在服务器上进行,过多的负荷......),然后每个人发结果给服务器。

我想会有很多的兴趣在我的应用程序的人,这就是为什么我不知道如果我的架构是好的,如果我将能够处理成千上万的人。

我正打算通过JNDI与GlassFish服务器暴露出远程EJB,让1000人可以在同一时间使用这些EJB(我猜有可能是5-50请求/秒)来检索所需要的本地计算的数据,然后将结果发送...

时它昂贵暴露EJB很多客户呢? 会是最好使用web服务,RMI,另一种解决方案?

你会建议我的另一种架构的什么,我该怎么办?

有帮助吗?

解决方案

首先,从一个纯粹的架构的角度,EJB是用于构建分布式应用程序,Web服务是一种集成技术,他们真的不与对方抗衡。在你的情况,EJB将是一个自然的选择(我们正在谈论EJB3,对不对?)和会话bean很好地进行缩放。

其次,如果服务器端代码仅用于从数据库中检索数据,并保存客户端计算后的结果,则该应用服务器将很可能不会成为瓶颈,数据库将。换句话说,没有什么可担心的。

所以,既然你的客户都是100%的Java客户端,我也只是无状态会话bean 1 ,避免SOAP / XML封送处理/拆封的开销,并写WSDL(如果有一天你需要暴露你的服务,Web服务,这仍然是可能的,而且容易)。

1 使用JPA或别的东西了数据访问由您自行决定留下。

其他提示

我2P是,提供一个web服务或XML / HTTP客户端是从客户端查看更容易和更标准。 好处之一是他们并不需要是Java客户端,如果它是一个SOAP Web服务。

我读了一个论坛,因为代理保持,它可能是一个坏主意来检索客户端实体和它产生的流量

有个人测试并生成300对象的40ko序列列表中的Wireshark 3.6mo网络TRAFIC,但如果使用EntityManager.clear()来分离的实体或使用的POJO DTO返回类型然后它确定远程功能:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top