精心设计的冗余
松耦合意味着独立性。松耦合的组件之间不会互相依赖,即使在存储的数据之间也是如此。每个松耦合的环境都维护着自己的数据和服务的备份。所以,在松耦合环境中,冗余一定不能被认为是一项低劣的设计,相反它是一个优秀的设计。通过在松耦合的边界禁止冗余将会使耦合更加紧密,而在松耦合的边界上维持冗余将会使松耦合的实现更加方便。由于EDA的特性,它非常适合在一个冗余的环境中维持松耦合时,来支持自动的数据同步机制。
透明
图1展示了SOA和EDA之间的关系。图片上端的圆表示了松耦合的关键点——事件,在松耦合的系统间,他们之间的联系被切断。这样可以在不改变系统的情况下,实现组件的连接或者断开。所有的数据交互也都发生在事件之间,而不会在更低的层次上。
在重用的领域内,将会需要细粒度的EDA,EDA的粒度越细,IT系统的伸缩性越好,但是重用的领域也会变得更小。
如果在实现松耦合的关键点上利用web service技术,同时结合一个底层的架构(ESB),异构系统的连接有可能会更加容易。同时事件后面连接的也不仅仅是SOA系统,还有SOAP封装的遗留系统,COTS,ERP和外部系统的网管。图2展示了EDA的这种形象。
组件之间再也不是直接的连接了,它们之间通过事件进行连接。
EDA的实施
在web service技术上实施EDA,一个SOAP消息队列是需要的,然而这同建立在SOA应用上的web service技术是不同的。通过现有的网络基础框架(如HTTP层),SOA可以通过web service独立地实施。而这就是前文所述的SOA虚假承诺的根源,同时也是SOA在当前能够压倒EDA的原因。底层的ESB框架提供了利用web service来排列消息的方式,正是因为如此,ESB成为实施EDA和SOA的最合适的方法。
不断发展的web service标准(如WS-Eventing、WS-Notification等)与SOAP封装的底层组件相互连接,将会在未来实现ESB的大部分功能,而当前我们要做到这些只能从ESB中获取。
SOA和EDA的应用必须在BPM的环境中来看待。前沿的BPM工具都是建立在BPEL上的。当前的BPEL应用都集中在命令控制模式、服务的编排等SOA应用上。在一定程度上,BPEL除了用来进行服务编排,还能够支持工作流,而它也符合了EDA的发展方向。
对于SOA来说,这些都不是问题。对EDA的良好支持不应该只停留在口头上,要在实际中体现出来,设计者需要通过一个指点式(point-and-click)机制,把事件与发布者和订阅者连接起来。事件的运行应当通过一个控制器来保持独立性,而不是建立在先前提到的web service标准上。很明显,解决方案正在朝着这个方向演进。但是在当前,利用SOAP可能是最合适的。通过一个大家都知晓、理解并能够实施的web service技术,系统将会在技术、经济和组织的不断发展过程中保持强壮。
图1 SOA和EDA的关系
图2 事件连接各个系统
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
事件驱动框架和SOA在空军的应用
空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。
-
揭秘New Relic APM技术细节
New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响
-
仅凭SOA和云无法解决业务数据管理风险问题
SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。
-
如何避免云计算与SOA冲突