1 | @startmindmap |
想要构建微服务,首先要解决的问题是,服务提供者如何发布一个服务,服务消费者如何引用这个服务。最常见的服务发布和引用的方式有三种:
- RESTful API
- XML 配置
- IDL 文件
RESTful API
RESTful API 的方式,主要被用作 HTTP 或者 HTTPS 协议的接口定义。
RESTful API 的优点:
- 因为 HTTP 协议本身是一个公开的协议,对于服务消费者来说几乎没有学习成本,比较适合用作跨业务平台之间的服务协议。
- 行为和资源分离,更容易理解。
- 提出使用版本号(例如v1、v2),更加规范。
XML 配置
XML 配置方式的服务发布和引用主要分三个步骤:
- 服务提供者定义接口,并实现接口。
- 服务提供者进程启动时,通过加载 server.xml 配置文件将接口暴露出去。
- 服务消费者进程启动时,通过加载 client.xml 配置文件来引入要调用的接口。
一般是私有 RPC 框架会选择 XML 配置这种方式来描述接口,因为私有 RPC 协议的性能要比 HTTP 协议高,所以在对性能要求比较高的场景下,采用 XML 配置的方式比较合适。
IDL 文件
IDL 就是接口描述语言(interface description language)的缩写,通过一种中立的方式来描述接口,使得在不同的平台上运行的对象和不同语言编写的程序可以相互通信交流。
IDL 主要是用作跨语言平台的服务之间的调用,有两种最常用的 IDL:一个是 Facebook 开源的 Thrift 协议,另一个是 Google 开源的 gRPC 协议。
一般是私有 RPC 框架会选择 XML 配置这种方式来描述接口,因为私有 RPC 协议的性能要比 HTTP 协议高,所以在对性能要求比较高的场景下,采用 XML 配置的方式比较合适。
gRPC 协议的服务描述是通过 proto 文件来定义接口的,然后再使用 protoc 来生成不同语言平台的客户端和服务端代码,从而具备跨语言服务调用能力。
参考
- [从 0 开始学微服务 - 极客时间 - 胡忠想]