架构中的耦合。首先需要看到,耦合是复杂系统必然的属性之一,就像生物的细胞一样,必须相互交换信息才能体现出正常的功能。但不合理的耦合却是要极力避免的。我们常说高内聚低耦合。内聚是通过业务语义的关联来组织的,那么内聚带来的,往往是模块化(物理形式往往是DLL或者服务)。文中提到了具有高度功能内聚并可独立部署的组件可使用架构量子来隐喻。这里需要注意的是,如果想能够真正独立部署,往往离不开数据库,框架或者其他第三方组件,而在架构设计时,显然这种是最需要延迟决策的部分。因此,架构量子更多是从结构性元素的完整性来考虑,和一般常常提及的洋葱架构、六边形架构等还是在不同维度来讨论架构的问题。此书提到架构师面对的是架构量子。显而易见,架构量子越小,其可复用能力和可组合能力越强,因此架构师需要根据限界上下文划分合理的边界。
架构模式显著影响架构量子的大小,但不是决定架构量子大小的唯一因素。常见的模式包括:大泥团,单体(非结构化,分层,模块化,微内核or插件化),事件驱动(代理-无状态,中介-消息总线),服务导向架构SOA(基于ESD的SOA,微服务,基于服务的架构)。
微内核主要基于API(契约),通过语义耦合来对接各个插件,同时还需要有胶水代码来黏合内核和插件。
事件驱动架构从原理上来讲,是去耦合最好的方式之一,各个消息消费者的可测试性也比较好。但代理的问题是,流程化难以