微服务系列:服务发现模式的快速了解

介绍

在典型的单片分层体系结构中,表示层或控制器层通过功能调用与服务层进行通信。 请求URL具有固定的端点地址,该端点地址用于调用不同的服务或服务功能。 使用微服务时,您要处理大量具有动态端点地址和服务实例数量的服务。

基于微服务的应用程序通常部署在服务器环境中,例如分配了动态IP地址的容器或虚拟主机。 服务实例本身可以根据负载均衡器配置动态更改。 借助微服务的这些动态特性,必须找到一种模式,在该模式中可以以与位置无关的方式查找服务,而无需真正担心其实际端点地址。 解决方案是在设计基于微服务的体系结构时应用服务发现模式。

可以使用不同变体之一来应用服务发现模式。 这些变化本身也称为模式。 其中一些模式如下:

服务器端服务发现

此模式使客户端应用程序可以通过路由器或负载平衡器发现服务。 路由器的端点地址是众所周知的。 路由器依次查找服务注册表以向适当的服务实例发出请求。 查找逻辑内置在路由器中。

优点

  • 它使客户端应用程序变得更轻便,因为它不必处理查找过程,而只是向路由器发出服务请求。

缺点

  • 路由器或负载平衡器是部署环境中需要安装和配置的另一个组件。 此外,可能必须将路由器节点本身放置在高可用性和容错设置的范围内。
  • 它增加了发现服务的额外网络跳的开销。


AWS弹性负载平衡(ELB)

客户端服务发现

此模式使客户端应用程序可以通过查找或查询服务注册表来发现服务。 服务实例及其端点已向注册表注册,后者是服务的存储库或数据库。

优点

  • 与服务器端服务发现模式不同,客户端应用程序不必通过路由器或负载平衡器进行路由,因此可以避免多余的跃点。

缺点

  • 您必须构建和维护服务注册表存储库,这可能是维护服务实例的额外开销。
  • 查找过程是客户端驱动的。 根据所使用的编程语言,您必须设计服务发现逻辑。 因此,需要花费额外的精力为每种类型的客户端应用程序构建查找组件。


Netflix Eureka(服务注册中心)和Netflix Ribbon(客户端)

服务注册

服务发现发生在服务注册表上,因此有必要实现一个包含服务实例及其端点地址的注册表或存储库。 注册表组件本身可以部署在单独的节点上。 您可以使用客户端或服务器端查找机制来查询服务注册表以获取适当的服务。

优点

  • 为客户端提供独立的基础结构,以客户端独立于位置的方式发现服务。

缺点

  • 服务注册表是一个单独的组件,需要在专用节点上进行维护和配置。 注册表节点本身必须置于高可用性和容错设置的范围之内。 由于注册表节点的故障,人们无法承受丢失服务实例的麻烦。


Netflix Eureka,Apache Zookeeper,领事等

自我注册

该模式建议在服务注册表启动时注册服务实例,以便它们准备好进行查找,并且类似地允许在注册表关闭时注销服务。

优点

  • 服务知道其更改状态,例如“可用”,“启动”,“启动”,“关闭”。 可以实施更详尽的生命周期事件。

缺点

  • 服务注册显然不会自动发生。 在服务组件中编写适当的注册逻辑需要额外的开销。
  • 如果服务正在运行,但可能无法服务于客户端的请求,则该服务可能变得一文不值。 此类服务可能无法自行注销。


Netflix Eureka,Apache Zookeeper

第三方注册

与自我注册不同,此处的服务是由第三方注册商组件注册和注销的。 第三方注册服务商在启动服务实例时会对其进行注册,而在关闭或破坏该服务实例时会对其进行注销。

优点

  • 现在,由第三方注册服务商处理该服务组件中编写注册逻辑的操作不会产生额外的开销。
  • 就其运行状况检查而言,可以进行有效的服务监视,并且可以根据运行状况检查参数来处理适当的事件。

缺点

  • 根据使用的第三方注册商,服务健康检查可能会或可能不会。 一些注册服务商可能不具备了解服务价值的能力。 这就是说,服务一旦注册便能够服务请求。
  • 服务注册与第三方注册服务商组件紧密耦合,因此它成为部署环境中的另一个实体。 需要安装和配置充当注册服务商的专用节点,并且还应将其置于高可用性设置的范围之内,以避免出现故障情况。


Netflix Prana,AWS自动缩放,注册器

翻译自: https://www.javacodegeeks.com/2016/11/microservices-series-quick-look-service-discovery-patterns.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值