微服务间通信:API接口详解

服务间通信:API接口

目录

服务间通信:API接口

概述

同步通信

使用REST API

使用gRPC API

断路器模式(Circuit breaker pattern)

服务发现模式

异步通信

使用异步消息模式

消息


概述

  • 单块应用

    • 运行在同一个进程中,直接使用函数调用进行通信

    • 需要与其他应用集成时,采用 REST Api 进行通信

  • 微服务应用

    • 被分解出来的服务之间需要协作

    • 分布式环境下,协作会跨主机、跨进程

    • 当前最流行的进程间通信方式是 REST

    • 服务间的通信方式对于应用的可用性至关重要

  • 可选项

    • 同步通信:如基于HTTP的 REST 和 gRPC

    • 异步通信:如基于消息的的AMQP 和 STOMP

    • 通信内容类型:

      • 基于文本:JSON、XML

      • 基于字节:Avro,Protocol Buffers

  • 微服务的API 可发为两类

    • 操作:由客户端调用,包括名字,参数,返回类型

    • 事件:包括类型和字段集,发布到消息通道(Message Channel)

  • 跟单块应用不同,编译期无法发现微服务 API 的问题,只有在运行期才能发现

  • 最佳实践

    • 使用某种接口定义语言(IDL)对服务接口进行定义,如 Swagger

      Swagger:Rest API的描述语言

       

       

    • API-First:先定义 API,再进行开发

  • 微服务 API 的演进

    • 当加入新功能时,或功能变更时,API 需随着时间而演进

    • 不应该,也不可能强制所有调用者同步更新

    • 应采用滚动升级(Rolling Update),确保新旧版本同时在线

    • 当所有调用者都完成升级后,再撤回旧版本

同步通信

使用REST API

  • Roy Fielding. Architectural Styles and the Design of Network-based Software Architectures. 2000

     

  • 资源的定义、URI标识符(一对多)、表示(JSON),操作/Http动词(请求方式),状态码

  • REST成熟度模型

    • 0级:没有资源概念。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值