lagom - 在生产中为 Lagom 部署动态服务网关
问题描述
我开发了一套 Lagom 微服务。开发环境提供了默认的服务网关和服务定位器。
在生产环境中,我希望我的服务能够:
- 注册到服务注册表
- 通过使用此注册表的服务定位器可用于 Web 应用程序
我应该使用什么作为服务注册表/服务定位器/服务网关?
一个简单的 NGINX 将是一个合理的服务网关,但它意味着基于重定向规则的非常静态的配置(没有实际注册)。
我找不到关于这个主题的任何代码示例,并且文档很差(它描述了很好的开发工具,但在实际生产中没有帮助)。
解决方案
该领域的文档故意含糊不清,因为生态系统非常庞大且变化迅速。
例如,您可以使用 Consul 或 ZooKeeper 来跟踪为每个服务运行的实例以及它们运行的位置(where
意味着IP:PORT
)。然后你需要使用基于 Consul 或 ZooKeeper 的Service Locator
实例。目前首选的目标部署环境是 Kubernetes(任何风格),因此服务位置基于 k8s 提供的 DNS 服务器上的 DNS-SRV 查找。注册步骤在每个 pod 的 k8s 设置中自动发生,因此您无需关心。
然后,边缘上能够将每个请求定向到适当进程的反向代理是一个普通的 HTTP 代理,它可以检查您的服务位置(或缓存服务位置信息)。这些天来,建议为您的每个 lagom 服务配置Ingress
/ Route
(用于 k8s 或OpenShift
)边缘代理。
有关详细说明,请参阅将Lagom 应用程序部署到 Openshift的指南。
推荐阅读
- javascript - Angular 5 - 带有管道和点击事件的 ngFor
- django - Postgresql + Django:非空字段空值
- vue.js - vuejs:如何让我的数据对道具变化做出反应?
- android - Android:尝试下载我新发布的应用程序时“从服务器 DFDFERH-01 检索信息时出错”
- c# - 从缩放的单位位图不同的场景中删除颜色渐变
- react-native - 如何在反应原生应用程序中使用 Geolocation 获取设备的当前位置
- google-cloud-platform - 具有多个应用程序和端口的 GCP 负载均衡器
- r - 在 Rcpp 中选择 NumericVector 和 arma::vec
- c# - 如何在 ASP.NET webconfig 中禁用视图状态大小限制
- python - 我可以停止 tensorflow 训练并仍然安全地关闭摘要编写器的 tfrecords 文件吗?