服务间通信:API接口
目录
断路器模式(Circuit breaker pattern)
概述
-
单块应用
-
运行在同一个进程中,直接使用函数调用进行通信
-
需要与其他应用集成时,采用 REST Api 进行通信
-
-
微服务应用
-
被分解出来的服务之间需要协作
-
分布式环境下,协作会跨主机、跨进程
-
当前最流行的进程间通信方式是 REST
-
服务间的通信方式对于应用的可用性至关重要
-
-
可选项
-
同步通信:如基于HTTP的 REST 和 gRPC
-
异步通信:如基于消息的的AMQP 和 STOMP
-
通信内容类型:
-
基于文本:JSON、XML
-
基于字节:Avro,Protocol Buffers
-
-
-
微服务的API 可发为两类
-
操作:由客户端调用,包括名字,参数,返回类型
-
事件:包括类型和字段集,发布到消息通道(Message Channel)
-
-
跟单块应用不同,编译期无法发现微服务 API 的问题,只有在运行期才能发现
-
最佳实践
-
使用某种接口定义语言(IDL)对服务接口进行定义,如 Swagger
-
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动词(请求方式),状态码
-
-
0级:没有资源概念。
-