1.3.2 松耦合

松耦合是系统的一个基本特性,即系统各部分之间尽可能少的相互依赖。其目标是可以独立地开发每一个部分,以便于某部分的修改,不影响其他部分。

几十年来,耦合 及其孪生概念 内聚 在面向对象的软件工程中起着至关重要的作用。将系统分解为模块(模块化),最小化对其他部分依赖(松耦合),并对代码的修改封闭(高内聚),是一种很好的设计实践。。根据架构风格的不同,可以对整体或对独立服务(例如,微服务)进行建模。不管怎样,您都应该瞄准目标,按松散耦合和高内聚性进行模块化。

Parnas 指出了模块化的三个好处:

  • 可管理性。由于每个模块都是松散耦合的,因此团队应该可以减少开发的时间,因为与其他团队进行大量协调和沟通就不需要了。
  • 产品灵活性。每个模块应独立于其他模块进行演变,形成了一个非常灵活的系统。
  • 可理解性。不必从整体上研究系统来理解一个特定的模块,而是一次一个模块的研究。

上述好处通常都是与微服务相关的好处。事实上您不需要用微服务来实现它们。在过去几年中,许多组织决定从单体服务迁移到微服务。他们中的一些人因为缺乏适当的模块化经验而失败了。一个单体应用,由紧密耦合的组件组成整体,迁移后会产生一个紧密耦合、无内聚性的微服务系统。有时称为分布式单体。如果您告诉我,这不是一个好名字,因为按定义来说它意味着,这是由紧密耦合的非内聚组件组成的。这不全对。是何种架构都无关紧要:糟糕的设计就是糟糕的设计。事实上,我喜欢 Simon Brown 提出的模块化单体术语,旨在提高人们的认识,就是单体应用也可以优化成松散耦合和高内聚,最终单体和微服务都混在了一起,成为“大泥球”。

在本书中,我将介绍一些应用程序中实施松耦合的技术。特别是我将采用基于服务的体系结构,重点关注服务构建。服务力求高内聚,与其他服务的依赖要最小,服务之间使用清晰的接口相互通信。

results matching ""

    No results matching ""