美文网首页
微服务架构设计模式(三)微服务间通信

微服务架构设计模式(三)微服务间通信

作者: Billy_Wang | 来源:发表于2020-08-28 00:39 被阅读0次

微服务架构中的进程间通信

1、交互方式

1.1 一对一交互

每个客户端请求由一个服务实例处理

  • 请求/响应:发起请求,等待响应。等待过程可能造成线程阻塞
  • 异步请求/响应:客户端发请求,服务端异步响应请求,非阻塞。
  • 单向通知:只发请求,不期望服务端响应

1.2 一对多交互

每个客户端请求由多个服务实例处理

  • 发布/订阅:客户端发通知,被零个或多个感兴趣的服务订阅
  • 发布/异步响应:客户端发通知,等待被感兴趣的服务发回响应

2、同步远程调用模式

2.1 REST API

REST 中的关键概念是资源,使用HTTP动词来操作资源,使用URL引用这些资源
GET:请求返回资源 GET/orders/{orderId}
POST:请求创建资源 POST/order
PUT:更新资源 PUT/orders/{orderId}

2.2 gRPC

gRPC使用Protocol Buffers作为消息格式,支持请求/响应方式,还支持流式RPC

2.3 同步通信的可靠性问题

  • 网络超时策略
  • 限制访问数量
  • 断路器

2.4 服务发现策略

  • 客户端发现策略:应用层服务发现,如Eureka
  • 平台层服务发现:Docker和Kubernetes

3、异步通信模式

3.1 交互方式

  • 无代理


    image.png
  • 消息代理:Kafka、RabbitMQ


    image.png

3.2 并发和消息顺序

  • 消息分片:每个分片类似于一个通道

3.3 重复消息

  • 幂等处理:幂等处理程序、跟踪并丢弃重复消息

3.4 事务性消息

  • 使用数据库作为消息队列,与业务表在同一事务中保存


    image.png

3.5 消除同步交互

  • 使用异步交互模式
  • 复制数据

相关文章

网友评论

      本文标题:微服务架构设计模式(三)微服务间通信

      本文链接:https://www.haomeiwen.com/subject/riqksktx.html