摘要:
当首席技术官 jeremy boynes 加入 gluecode software 时,他带来了关于将开源软件和企业级应用开发相结合的第一手资料。他过去是 bravanta 和 netmosphere 的首席架构师,通过使用开源软件,他帮助这两家公司降低了成本开支。他拥有 20 年的企业计算经验,曾在 cisco、bt、centrum systems 和 sequent computer sys......
摘要:i recently had the opportunity to work with the netbeans developer ide 2.0 for java. although the marketplace seems to be flooded with application development environments for java programming, the te......
使用 JMS 在集群应用程序中分配任务远远不止是异步数据传输 在请求驱动的环境中解耦合与延迟处理是创建健壮与可伸缩的分布式应用程序的关键战略之一.许多服务都单独依赖于集群来确保可伸缩性,但是当新发现的需求使应用程序的复杂性增长时,它们常常会遇到麻烦.
在本文中,我讨论了异步处理,并举例说明了,巧妙的任务管理会如何提高您应用程序的性能.可用性.可伸缩性与可管理性.我们将以一种高度可配置的方式,创建一个一般的任务分配框架,该框架可以发送任何任务给您的集群中的一台或每台服务器.通过使用多态与 java 消息服务( java message service , jms ),我们的框架将实现著名的 command 模式. 【程序编程相关:
用Java实现Hello World】
尽管服务器集群是推动可伸缩性的基本技术,但是当所有的处理都同步完成时,它可能变得很低效.吞吐量可能会增加,但是响应性却会变得不可救药. 【推荐阅读:
Jave基础学习:jdbc小技巧】
当服务器收到客户端请求时,它通常需要在返回响应之前执行几个单独的任务.解耦合( decoupling )意味着不会一次执行所有的任务,而是把一些任务放入队列并异步地进行处理.因为排队通常是一项低开销的操作,同步的请求会更快地结束. 【扩展信息:
推荐两本iava书】
解耦合在实际中的意义
解耦合的优点
按照顺序与并行地处理任务,通常会比随机地处理它们要更加高效(客户端偶然发出请求的时候).正面的影响比随即表现出来的要大.理论上,解耦合可以提高以下各个方面的性能:
健壮性 : 提高,因为请求将依赖的可能失效的过程更少.
响应性 : 请求的部分后处理减少了接收请求与返回响应之间的时间.
可伸缩性 : 所有解耦合后的过程在复杂性方面可能会增加,但不会有降低响应度的危险.
可用性 : 可以在服务器永远不知道故障原因的情况下处理故障.
在子系统不可用的情况下,配置自动重试要更加容易.
自然,理论与实践之间的差别在每个应用程序上的体现各不相同.然而,显然,几乎每种实现都至少具有前述的某些优点.
解耦合的缺陷
与大部分好东西一样,解耦合也存在缺点.其中最严重的缺点之一就是,如果您不能确保您拥有足够强大的硬件来清空繁忙的处理队列,那么您可能会发现,它的可用性实际上降低了.如果进入的异步请求比您的系统能够处理的要多,队列就会非常迅速地增长.您必须注意设计过程,而对队列实行自动监控无疑是可取的做法.另一个明显的问题是,在请求驱动的环境中,大多数过程都不是很适合于解耦合.事实上,大多数处理都可能被要求返回响应.有时,它会需要一些开箱即用的思想,甚至可能是您为您的客户端所提供的服务方式的变化.
哪些过程可以解耦合
从纯技术的角度来讲,几乎所有的过程都可以解耦合.例如,您可以把一个所购买物品及客户详细信息的清单放入队列,从而可以解耦合一个订单事务——异步处理将负责余下的工作.不足之处在于您不能在响应中包含任何处理细节.因此,谨慎地预先验证数据是很重要的,这样可以确保不会出现问题.
一种越来越流行的实现是,马上把请求放入队列,然后持续轮询服务器,以便了解何时可以获得响应....
下一页 摘要:one of the coolest pieces of technology id ever used was a programming interface for hk systems mechanical cranes. however, my coolness factor just went through the roof when i got a chance to try out......