Skip to content

主要强调系统中的每个构件都是相对独立的个体,它们之间不直接通信,以降低耦合度,提升灵活性。

独立构件架构可以细分两种具体的架构子风格:进程通信和事件驱动系统风格

进程通信

构件之间通过独立的进程来实现消息传递。比较经典的例子包括:

  • 应用之间的RPC调用:通常采用同步或异步方式,远程调用其他模块的接口程序。
  • 应用之间的RestAPI调用:通过规定的消息传输机制(REST接口规范)来实现同步或异步方式的进程间通信。
  • 点对点通信:比如像区块链、BitTorrent等的点对点通信 ,也是进程通信风格的延伸

主要特点:

  • 目标明确:远程通信具有清晰的指向性, 目标明确
  • 同步为主:通常以同步调用为主,辅以异步交互式通信方式

事件驱动系统

事件驱动系统风格是基于事件的隐式调用风格,构件不直接调用一个过程,而是触发或广播一个或多个事件。后续执行过程会被注册在一个或多个事件,当对应的事件被触发或者广播时,系统会自动调用该事件中注册的过程,执行相应的模块功能。

支持基于事件的隐式调用的应用系统很多:

  • 调试器:在IDE工具中设置断点,当触发断点后,IDE工具处理程序在断点处停下,变量监视器自动刷新变量数值。整个过程IDE工具和调试模块之间没有直接的进程通信,而是采用事件驱动的机制实现过程调用。
  • 消息队列:通常用于应用间的通信和业务流的削峰填谷,当消息被发送到消息队列后,对应的消息监听应用会自动消费该消息,并进行相应数据和业务处理操作。整个过程中消息的生产者和消费者之间没有直接的互动和了解,完全由消息队列来驱动数据流的指向。
  • 事件驱动设计:事件驱动设计(Event Driven Architecture)是当今很火的话题,结合CQRS读写分离等技术,可以实现完整的业务分解和设计。

事件驱动风格的主要特点:

  • 隐式调用,匿名互动:事件的触发者并不知道哪些构件会被这些事件影响。这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用,体现了极强的低耦合性。
  • 广播机制:通常事件驱动的接受者不止一个,会采用广播方式进行信息传输,方便实现一对多的过程调用和应用交互。

独立构件风格总结

独立构件风格是5大架构风格中,最偏重沟通的一种风格。 它描述了在一个应用系统中, 各个构件是如何进行通信的。

  • 可以是点对点的、指定方向的进程通信风格
  • 也可以是广播的、隐式调用的事件驱动系统风格

他们组合起来,真正实现了进程与进程、模块与模块、系统与系统间的互动。