Java中事件驱动程序设计_事件驱动编程

事件驱动编程是以事件为第一驱动的编程模型,提到事件,可能有很多容易混淆的概念,这里的事件是指一种异步并发的消息模型,而普通的观察者模式则没有这个强调,观察者和被观察者之间通讯可以是同步机制。

同步机制的最大问题是会发生堵塞,不但导致性能大幅度降低,无法充分利用CPU潜力,浪费硬件投资,更重要造成软件模块的铁板化,紧耦合,无法切割,不利于日后扩展和变化。

异步并发的概念非常符合日常生活中事件的定义,也应该是事件语义的重要核心,实际生活中,事件的触发是无序且不可控的,对事件的响应当然要做到即时处理,如果用传统线程机制同步处理响应,可能因锁争夺发生堵塞,结果导致大量事件未及时处理,非常没有效率。

从客户端和服务器概念来看,客户端发出大量事件到服务器(如通过ajax等),服务器应该是多线程响应,但是如果每个线程内部处理业务时发生堵塞,线程再多也没有用,也就不能发挥服务器高并发处理的能力。

所以,我们不只是在服务器后端要选择事件驱动的socket架构,如Node.js或Vert.x,还要用事件驱动的编程模型将我们的业务落地到它们上面运行。这样才能在后端形成从底至上彻底的事件驱动架构。

业务的事件驱动编程,实际上是将node.js的前后端socket事件驱动机制搬迁到业务领域模型和技术架构之间,正如浏览器或Iphone客户端发出大量事件交由服务器处理,领域模型也能发生大量事件需要技术架构响应处理,比如大量同时读写数据库等等。这两者的机制应该是一样。

下面这个PPT是从服务器的底层Socket的事件驱动架构上升到最高层业务逻辑的事件驱动编程,提出了聚合根的业务模型与Actor模型非常吻合的天然衔接。

[该贴被admin于2013-09-18 14:46修改过]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值