Lagom核心概念(三)

注册和发现服务

为了具有弹性和可伸缩性,系统必须支持位置透明性。这使您可以在多个主机上运行同一微服务的实例,在发生故障时将实例从一台主机移到另一台主机,并随着负载的变化上下扩展主机的数量。在这样的响应式系统中,微服务实例不断移动,产生和死亡,客户端和其他微服务都需要一种方法来定位可用的服务实例。

Lagom在开发过程中为您的微服务系统提供以下功能:

注意:此页面使用HTTP示例,但是这些概念适用于任何类型的流量,例如基于TCP的二进制流量。

服务注册

服务注册中心与微服务实例协作以维护最新的查找表。该表包括每个可用微服务实例的主机和端口。随着负载的变化,系统可以在继续满足请求的同时在任何位置生成或销毁实例。您可以设计一个系统来启用微服务自注册,也可以使用3rd Party Registration服务

在启动Lagom微服务实例时,注册服务商将在服务注册表中注册微服务的名称,URL和可定位的服务描述符的名称,以便可以找到它们。关闭服务实例的电源时,注册服务商也必须更新服务注册表。Lagom的开发人员环境提供了服务注册表和注册器的实现,因此您可以在本地运行微服务。

许多可用的技术都提供Service Registry功能。您将需要选择和/或开发服务定位器,以便在部署环境中运行服务(例如,参见Lagom ZooKeeper服务定位器)。您可能需要找出一种方法来将Lagom服务与注册商联系。

客户端服务发现

来自Bonér的响应式微服务体系结构:分布式系统的设计原理

一旦存储了有关每个服务的信息,便可以通过服务注册表使服务可用,该服务可以使用服务注册表来查找信息-使用称为客户端服务发现的模式。

Lagom为每个服务描述符创建服务客户端,以便应用程序可以与Lagom Services进行交互。假设非Lagom应用程序想要使用hello服务。它可以使用Welcome Service Client并仅调用该hello方法。欢迎服务客户端将使用服务注册表在welcome可用的地方找到有效的URL 并满足请求。这种方法需要使用Lagom提供的代码。在生产中,插入到您的服务中的服务定位器将成为参与此客户端发现的元素。有关更多信息,请参见与非Lagom服务集成

服务器端服务发现

来自Bonér的响应式微服务体系结构:分布式系统的设计原理

另一种策略是使用称为服务器端服务发现的模式将信息存储并维护在负载均衡器中。

如果不能在每个客户端上都嵌入服务定位器,则可以使用服务器端服务发现。此模式使用服务网关来允许客户端使用服务描述符注册提供的端点。在此模型中,浏览器仅需要知道服务网关在哪里。使用服务器端发现时,仅当将服务描述符的调用添加到ACL时才能到达该调用。

例如,浏览器可以通过/hello/steve从服务网关请求路径来向用户显示问候消息。服务网关将知道哪个服务提供了该终结点,并会向服务注册表询问该服务的实例。服务注册表将以可以满足请求的实例的主机和端口作为响应。最后,服务网关将执行请求,并将结果返回到浏览器。

为了简化服务器端服务发现的测试,Lagom开发环境将启动所有服务以及服务注册表和服务网关。

推荐阅读更多精彩内容