java架构师如何用微服务发布和引用服务

服务描述:服务调用解决的第一个问题是如何对外描述。常用的服务描述方法包括RESTfulAPI,XML配置和IDL文件。
  java架构师如何用微服务发布和引用服务

RESTfulAPI
  主要被用作HTTP或者HTTPS协议的接口定义,即使在非微服务架构体系下,也被广泛采用
  优势:
  HTTP协议本身是一个公开的协议,对于服务消费者来说几乎没有学习成本,所以比较适合用作跨业务平台之间的服务协议。
  劣势:-性能相对比较低
  XML配置
  通常,私有RPC框架会选择XML配置来描述接口,因为私有RPC协议的性能高于HTTP协议,因此在对性能有较高要求的情况下,使用XML配置更为合适。适。这种方式的服务发布和引用主要分三个步骤:
  服务提供者定义接口,并实现接口
  服务提供者进程启动时,通过加载server.xml配置文件将接口暴露出去。
  服务消费者进程启动时,通过加载client.xml配置文件引入要调用的接口。
  优势:
  私有RPC协议的性能比HTTP协议高,所以在对性能要求比较高的场景下,采用XML配置方式比较合适劣势:
  对业务代码侵入性比较高
  XML配置有变更的时候,服务消费者和服务提供者都要更新(建议:公司内部联系比较紧密的业务之间采用)
  IDL文件
  IDL就是接口描述语言(interfacedescriptionlanguage)的缩写,以中立的方式描述接口,以便在不同平台上运行的对象和不同语言编写的程序可以相互通信。常用的IDL:一种是Facebook的开源Thrift协议,另一种是Google的开源gRPC协议。无论是Thrift协议还是gRPC协议,它们的工作都非常相似。
  优势:
  用作跨语言平台的服务之间的调用
  劣势:
  在描述接口定义时,IDL文件需要对接口返回值进行详细定义。如果接口返回值的字段比较多,并且经常变化时,采用IDL文件方式的接口定义就不太合适了。
  一方面会造成IDL文件过大难以维护
  另一方面只要IDL文件中定义的接口返回值有变更,都需要同步所有的服务消费者都更新,管理成本太高了。
  总结
  根据实际情况确定具体的业务描述方法。通常,如果仅是企业之间的服务调用,并且使用Java语言,则XML配置方法是最简单的选择。如果企业中有多个服务,并且这些服务使用不同的语言平台,则建议使用IDL文件来描述服务。如果仍然有打开的服务调用,则RESTfulAPI方法更为通用。
  推荐阅读:《java架构师指南》架构师需要掌握的知识结构有哪些