服务路由概述

懒驴 2021年12月14日 132次浏览

服务路由的定义

服务的路由:服务消费者通过服务名称,在众多服务中找到要调用的服务是我地址列表,称为服务的路由。
透明化路由:服务消费者只知道当前服务者提供了哪些方法,并不知道服务具体在什么位置,这就是透明化路由。

服务信息存放方式

服务都是多实例部署的,每个部署实例都有对应的地址信息,服务的地址信息有以下存放方式:

  • 硬编码:将服务的地址信息存放在服务消费者一端,服务消费者发起调用时,读取服务地址配置进行调用。缺点是服务地址发送变化是,需要维护服务提供者地址,灵活性差。
  • 数据库存储:将服务地址信息存放到数据库中,服务调用方通过查询数据库获取服务地址信息,避免使用硬编码地址方式。这种方式虽然比硬编码方式好,但是服务消费者还是需要感知服务提供者的地址信息。
  • 服务注册中心: 服务注册中心可以用来保存服务提供者的地址信息,以及服务发布相关的属性信息。服务消费者无须知道服务提供者的地址信息,只需要知道当前系统发布了哪些服务。目前服务注册中心的产品很多,常用的服务注册中心有ZooKeeper。服务提供者将需要发布的服务地址信息和属性写入注册中心,服务消费者根据本地引用的接口等信息,从服务注册中心获取服务提供者列表缓存到本地。当服务注册中心检测到服务提供者列表发生变化后,会主动将变更后的服务列表推送给消费者,不需要每次调用时都去服务注册中心查询服务提供者地址列表,消费者直接从本地缓存的服务提供者路由表中查询地址信息,根据路由策略进行服务选择。采用客户端缓存服务提供者地址的方案,不仅能够提升消费者调用性能,还能提高系统的可靠性。当注册中心全部宕机后,消费者可以通过缓存的地址信息和服务提供者之间进行通信,只是影响新服务的上线和老服务的下线,不影响已发布的和运行的服务。