没有合适的资源?快使用搜索试试~ 我知道了~
微服务架构组件分析,看这篇就够了
13 下载量 47 浏览量
2021-02-24
22:56:12
上传
评论
收藏 2.14MB PDF 举报
温馨提示
试读
15页
服务描述:服务调用首先解决的问题就是服务如何对外描述。常用的服务描述方式包括RESTfulAPI、XML配置以及IDL文件三种。主要被用作HTTP或者HTTPS协议的接口定义,即使在非微服务架构体系下,也被广泛采用优势:HTTP协议本身是一个公开的协议,对于服务消费者来说几乎没有学习成本,所以比较适合用作跨业务平台之间的服务协议。劣势:-性能相对比较低一般是私有RPC框架会选择XML配置这种方式来描述接口,因为私有RPC协议的性能比HTTP协议高,所以在对性能要求比较高的场景下,采用XML配置比较合适。这种方式的服务发布和引用主要分三个步骤:服务提供者定义接口,并实现接口服务提供者进程启动时,
资源推荐
资源详情
资源评论
微服务架构组件分析,看这篇就够了微服务架构组件分析,看这篇就够了
1. 如何发布和引用服务
服务描述:服务调用首先解决的问题就是服务如何对外描述。 常用的服务描述方式包括 RESTful API、XML 配置以及 IDL 文
件三种。
RESTful API
主要被用作 HTTP 或者 HTTPS 协议的接口定义,即使在非微服务架构体系下,也被广泛采用
优势:
HTTP 协议本身是一个公开的协议,对于服务消费者来说几乎没有学习成本,所以比较适合用作跨业务平台之间的服务协议。
劣势: -性能相对比较低
XML 配置
一般是私有 RPC 框架会选择 XML 配置这种方式来描述接口,因为私有 RPC 协议的性能比 HTTP 协议高,所以在对性能要求
比较高的场景下,采用 XML 配置比较合适。这种方式的服务发布和引用主要分三个步骤:
服务提供者定义接口,并实现接口
服务提供者进程启动时,通过加载 server.xml 配置文件将接口暴露出去。
服务消费者进程启动时,通过加载 client.xml 配置文件引入要调用的接口。
优势:
私有 RPC 协议的性能比 HTTP 协议高,所以在对性能要求比较高的场景下,采用 XML 配置方式比较合适 劣势:
对业务代码侵入性比较高
XML 配置有变更的时候,服务消费者和服务提供者都要更新(建议:公司内部联系比较紧密的业务之间采用)
IDL 文件
IDL 就是接口描述语言(interface description language)的缩写,通过一种中立的方式来描接口,使得在不同的平台上运行
的对象和不同语言编写的程序可以相互通信交流。常用的 IDL:一个是 Facebook 开源的 Thrift 协议,另一个是 Google 开源
的 gRPC 协议。无论是 Thrift 协议还是 gRPC 协议,他们的工作原来都是类似的。
优势:
用作跨语言平台的服务之间的调用
劣势:
在描述接口定义时,IDL 文件需要对接口返回值进行详细定义。如果接口返回值的字段比较多,并且经常变化时,采用 IDL 文
件方式的接口定义就不太合适了。
一方面会造成 IDL 文件过大难以维护
另一方面只要 IDL 文件中定义的接口返回值有变更,都需要同步所有的服务消费者都更新,管理成本太高了。
总结
具体采用哪种服务描述方式是根据实际情况决定,通常情况下, 如果只是企业内部之间的服务调用,并且都是 Java 语言的
话,选择 XML 配置方式是最简单的。如果企业内部存在多个服务,并且服务采用的是不同语言平台,建议使用 IDL 文件方式
进行描述服务。如果还存在对外开放服务调用的情形的话,使用 RESTful API 方式则更加通用。
2. 如何注册和发现服务
注册中心原理
在微服务架构下, 主要有三种角色:服务提供者(RPC Server)、服务消费者(RPC Client)和服务注册中心(Registry),三者的
交互关系如图
RPC Server 提供服务,在启动时,根据服务发布文件 server.xml 中配置的信息,向 Registry 注册服务,把 Registry 返回的
服务节点列表缓存在本地内存中,并于 RPC Server 建立连接。
RPC Client 调用服务,在启动时,根据服务引用文件 client.xml 中配置的信息,向 Registry 订阅服务,把 Registry 返回的服
务节点列表缓存在本地内存中,并于 RPC Client 建立连接。
当 RPC Server 节点发生变更时,Registry 会同步变更,RPC Client 感知后会刷新本地内存中缓存的服务节点列表。
RPC Client 从本地缓存的服务节点列表中,基于负载均衡算法选择一台 RPC Server 发起调用。
注册中心实现方式
注册中心API
服务注册接口:服务提供者通过调用注册接口来完成服务注册
服务反注册接口:服务提供者通过调用服务反注册接口来完成服务注销
心跳汇报接口:服务提供者通过调用心跳汇报接口完成节点存货状态上报
服务订阅接口:服务消费者调用服务订阅接口完成服务订阅,获取可用的服务提供者节点列表
服务变更查询接口:服务消费者通过调用服务变更查询接口,获取最新的可用服务节点列表
服务查询接口:查询注册中心当前住了哪些服务信息
服务修改接口:修改注册中心某一服务的信息
集群部署
注册中心一般都是采用集群部署来保证高可用性,并通过分布式一致性协议来确保集群中不同节点之间的数据保持一致。
Zookeeper 的工作原理:
每个 Server 在内存中存储了一份数据,Client 的读请求可以请求任意一个 Server
Zookeeper 启动时,将从实例中选举一个 leader(Paxos 协议)
Leader 负责处理数据更新等操作(ZAB 协议)
一个更新操作方式,Zookeeper 保证了高可用性以及数据一致性
目录存储
ZooKeeper作为注册中心存储服务信息一般采用层次化的目录结构:
每个目录在 ZooKeeper 中叫作 znode,并且其有一个唯一的路径标识
znode 可以包含数据和子 znode。
znode 中的数据可以有多个版本,比如某一个 znode 下存有多个数据版本,那么查询这个路径下的数据需带上版本信息。
服务健康状态检测
注册中心除了要支持最基本的服务注册和服务订阅功能以外,还必须具备对服务提供者节点的健康状态检测功能,这样才能保
证注册中心里保存的服务节点都是可用的。
剩余14页未读,继续阅读
资源评论
weixin_38653691
- 粉丝: 6
- 资源: 961
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功