系统(组件)之间通信的方式

系统(组件)之间通信的方式

同步通信

同步通信中,调用方发出请求后会等待服务方实时响应,双方需要同时在线。

  • RPC (Remote Procedure Call,远程过程调用):让服务间的调用像调用本地函数一样简单。它性能高,但耦合性也强,函数签名变更常需同步修改。其现代变体 gRPC 由Google开发,基于HTTP/2,性能极高,非常适合连接微服务。

  • GraphQL:由Facebook开发的一种API查询语言。客户端可以精确指定所需数据的结构和字段,避免了REST API中常见的"数据过载"或"数据不足"问题。这为前端应用提供了极大的灵活性和高效的数据获取能力。

异步通信

异步通信中,发送方将消息发给中间人后就继续执行,无需等待接收方处理,实现了时间和空间上的解耦

  • 消息队列 (Message Queue, MQ):通过一个可靠的"中间件"(如RabbitMQ, Apache Kafka)来缓冲和传递消息。发送方将消息放入队列,接收方从中取出处理。它支持点对点、发布/订阅等多种模式,确保了高可靠性(消息不丢失),非常适用于削峰填谷、系统解耦等场景。

  • 事件驱动架构 (Event-Driven Architecture):核心是"事件",服务间通过发布和订阅事件来通信。当有事情发生时,发布者发出事件,所有订阅该事件的服务都会自动响应。这种模式实时性高、扩展性强,是构建松耦合、高响应性系统的理想选择。

  • Webhooks:一种轻量级的"反向API"。你提供一个URL(回调地址),当特定事件(如支付成功)在源系统发生时,它会主动向该URL发送HTTP请求来通知你。这是一种非常流行的实时通知机制。

数据层与文件层集成:直接交换数据

这类方式不通过网络API,而是通过共享或传输数据文件来实现集成

  • EDI (Electronic Data Interchange,电子数据交换):在供应链、金融等领域广泛使用的标准化电子格式(如X12, EDIFACT),用于企业间传输订单、发票等业务文档。

  • 文件传输 (FTP/SFTP):通过文件传输协议在不同系统间交换大批量的数据文件,常用于每日备份、批量数据同步等场景。

  • 数据库连接:允许一个系统直接通过ODBC、JDBC等方式连接并操作另一个系统的数据库。这种方式直接但耦合度高,需谨慎使用以免影响源系统性能。

企业级集成模式:构建集成骨架

这类方式关注于构建一个集中式的集成平台或架构。

  • 企业服务总线 (ESB) 与中间件:ESB是SOA架构的核心,像一个"消息路由器",在异构系统间转换协议、路由消息。它是企业级集成的重型解决方案。

  • ETL工具 (Extract, Transform, Load):专注于数据层面的集成。从源系统抽取数据,按规则转换(清洗、格式化为目标结构),再加载到目标系统(如数据仓库),常用于数据迁移和商业智能项目。

REST (openfeign调用 遵循的架构风格)

  • REST (Representational State Transfer,表述性状态转移)

  • REST是一种架构风格,而非严格协议。它围绕资源(Resource)设计,每个资源由唯一的URL标识。

  • 核心特点与优势:通过HTTP标准方法(GET, POST, PUT, DELETE)操作资源;支持JSON、XML等多种数据格式,其中轻量级的JSON最常用;无状态,每个请求独立,易于水平扩展。

  • 局限与适用场景:自身不提供安全与事务标准,依赖HTTPS等。它灵活性高、性能好,非常适合互联网应用、移动端API、微服务等场景。

SOAP (Simple Object Access Protocol,简单对象访问协议)

  • SOAP是一种严格的协议,定义了极其规范的消息格式和通信规则。

  • 核心特点与优势:仅支持XML格式,消息结构严谨;不绑定HTTP,可通过SMTP、JMS等多种协议传输;通过WS-*系列标准提供企业级安全(WS-Security) 和事务(WS-AtomicTransaction) 支持。

  • 局限与适用场景:消息体庞大,解析复杂,性能开销高;设计固定,灵活性较差。它标准、安全、可靠,适用于金融、银行、电信等对安全性、事务完整性要求极高的企业级核心系统。