是否有更简单的方法通过使用像GlassFish这样的应用服务器来实现这些目标?
这是3层设置中应用程序服务器(与Web服务器不同)的精确要点。当然,您可以轮询和/或使用消息传递来为元数据(例如数据库更改事件)通信提供额外的挂钩,但最终很难重新发明一个非常知名的(并且非平凡的)轮(例如分布式中的数据同步层)。
如果您可以在客户端无需高速缓存查询结果而生存,并且访问服务器(第二层)的数据访问延迟是可以接受的,那么显然这是要走的路。
[下面是一个相当晚的p.s.但恰巧今天再次阅读这个问题,并且个人觉得需要澄清。]
Java EE是一个基于分布式容器/组件的企业级架构。抛开J2EE组件市场的失败(尽管一些人尝试过),剩下的就是它的COA事实以及它作为该体系结构的基本关注点的固有支持。请注意,Java EE的web配置文件(例如“web-server”)也是同一架构的一部分。
那么当您使用这些Java EE应用程序服务器之一时,您会得到什么?它将如何解决您的需求/设计问题。 (a)分布式名称空间(JNDI)和(b)跨层连接的产品菜单(纯RMI(在您将滚动条自己的分布式基于RPC的系统),Enterprise Beans aka EJB(远程和本地公开的组件接口,在可分发容器中的查找和生命周期方面具有明确定义的语义)在EJB风格中,就连接语义而言, JMS)和直接RPC。
对于您的情况,例如,您可以选择带有胖客户端JMS端点和MessageDrivenBean EJB的JMS消息总线。基于主题/订阅和直接队列,这些都可以有条理地配置为耐用或不可用等。
您的应用程序服务器c /将提供此JMS提供程序,或者您可以选择最好的品种,例如, TIBCO,满足您的需求,满足您的要求。
你不是在重新创造任何上述非常平常的担忧。您的重点仍然是您的域名要求,并且您拥有在某些合理的SLA中创建平台所需的所有工具。
一个可行的替代方案是用独立的OSS软件构建归结为Java EE的COA方法(它们都可以让你声明性的魔术和皮塔饼开发仪式)的相同的东西。 Ø为您的巴士提供MQ,REST远程RPC以及可能的REDIS,以加强对您的信息的持久性保证并协调(无JNDI)您的分布式球。
我个人比较喜欢后者,因为它对我来说是更有趣。由于对分布层更直接的控制,所以提高了效率,由于非常严格的要求(例如极少数要求),可以提高可扩展性。
企业的分布式系统设计(“已被分配”)需要考虑业务需求,而不仅仅是应用领域。这是等式的一部分。
希望这是有帮助的(和及时;)
是的,这是非常有帮助和及时的:-) @All:非常感谢伟大的投入! – salocinx 2012-05-03 14:33:39