在生产中为 Lagom 部署动态服务网关

Deploy a dynamic Service Gateway for Lagom in production

我开发了一套Lagom微服务。开发环境默认提供Service Gateway和Service Locator。

在生产环境中,我希望我的服务:

我应该使用什么作为服务注册中心/服务定位器/服务网关?

一个简单的 NGINX 将是一个合理的服务网关,但它意味着基于重定向规则的非常静态的配置(没有实际注册)。

我找不到关于这个主题的任何代码示例,而且 documentation 非常差(它描述了很好的开发工具,但对实际生产没有帮助)。

关于该领域的文档故意含糊不清,因为生态系统非常庞大且变化很快。

例如,您可以使用 Consul 或 ZooKeeper 来跟踪为每个服务运行的实例以及它们所在的位置 运行(where 表示 IP:PORT)。那么您将需要使用基于 Consul 或基于 ZooKeeper 的 Service Locator 实例。目前首选的目标部署环境是 Kubernetes(任何一种),因此服务位置基于 k8s 提供的 DNS 服务器上的 DNS-SRV 查找。注册步骤会在每个 pod 的 k8s 设置中自动发生,因此您无需关心它。

然后,边缘上能够将每个请求定向到适当进程的反向代理是一个普通的旧 HTTP 代理,可以检查您的服务位置(或缓存服务位置信息)。这些天,建议为每个 lagom 服务配置 Ingress/Route(对于 k8s 或 OpenShift)边缘代理。

有关详细说明,请参阅 Deploying a Lagom application to Openshift 上的指南。