BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Udi Dahan探讨事件驱动架构和松耦合系统

| 作者 Jan Stenberg 关注 34 他的粉丝 ,译者 李彬 关注 1 他的粉丝 发布于 2014年4月18日. 估计阅读时间: 2 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Udi Dahan在一场演讲中探讨了我们在系统建模的时候,如何使用更加趋于事件驱动和异步的模式,以及向开发中引入这些准则和模式的时候,开发者需要面对的一些挑战。演讲中他强调了这样的观点:我们应该构建更加松耦合的系统,以获得诸如稳健性、弹性和可扩展性等特性。

Udi是一位专注于分布式系统的架构师,同时也是NServiceBus的缔造者。从自身经验中他发现,当架构师和开发者们正在展望小型的、基础的简单系统时,他们往往过早地对何种架构适合系统做出了决策。然而,随着系统的演进,越来越庞大的代码库会引入更多的耦合,有时候这会导致系统中的众多紧耦合混杂成一团,成为一个复杂的“大泥球(Big Ball of Mud)”。

Udi需要面对的一个挑战,是如何防止系统变成这样乱糟糟的一团,而其中最重要的一部分工作正是保持较低的耦合程度。为了实现这一目标,我们必须在项目早期就引入聚焦于松耦合的模式——相比之下,在项目后期引入完全不同的架构,并重构得到更加松耦合的事件类型系统,是件困难得多的事情。

在演讲中,Udi重点介绍了发布-订阅模式,并提到了这样的发现:当引入这种异步通信模式的时候,他往往会找到核心业务领域逻辑中的最佳位置;它包含了最复杂的逻辑,而且由于把铁板一块的整套大型逻辑,转化为若干互相之间异步运行的较小的领域而获益。但是他还强调,不可轻率地做出这样的决策,因为有太多的开发者匆忙地选用这些模式,并将之运用到它们并不适用的地方。

在Udi看来,松耦合是一柄双刃剑,随着我们将更多的事物之间的联系斩断,它们的耦合度就越低,独立故障和Bug出现的几率就会越高。而这样做的优势在于,当对某一部分中的一些逻辑做出调整时,导致其他部分出现问题的几率将非常低——最终这将帮助项目更快速完成。

在结束了关于架构的演说之后,Udi展示了NServicesBus工具框架的Demo,作为此次演讲的结尾。

NServiceBus是针对.NET的一套采用开源许可的服务总线,同时也提供商业授权许可。该总线同时也是更大型服务平台的一部分。

查看英文原文:Udi Dahan on Event-Driven Architecture and Loosely Coupled Systems

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

赞一个 by 张章 鸥翔鱼游

好文章。总是支持一下的

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT