microservices - 玩微服务——api网关和服务发现
问题描述
我们计划基于play框架开发一些微服务。他们将提供rest apis,其中许多将在后台使用akka cluster/cluster-sharding。
我们希望有一个 api 网关来公开我们内部服务的 api,但我们面临一个大问题:
- 每个服务的多个实例将在某个 ip 和端口下运行。
- api 网关如何知道服务实例在哪里运行?
- 是否有类似负载平衡器的东西来跟踪所有正在运行的服务?
哪些解决方案可能填补“API 网关”/“负载均衡器”的位置?
解决方案
你问的问题与游戏框架并没有真正的关系。没有单一的答案可以解决您的需求。
您可以从阅读 akka Service Discovery开始,然后根据更适合您的方式做出选择。
我们正在构建服务akka-http
并使用akka-cluster
但使用不相关的技术来公开和运行服务。
查看
- 用于 API 网关的Kong
- 基于 DNS 的服务发现的Consul
- docker swarm使用网状网络运行容器以实现负载平衡
推荐阅读
- javascript - 如何使用 JQuery 更改图像的“src”(具有多个 ID)
- php - Oauth - 在默认登录令牌中应该给予什么样的权限?
- docker - Docker exec 仅包含最后构建步骤的结果
- node.js - 使用 auth.user().onCreate 时无法读取未定义的属性“uid”
- android - Kotlin 类转换异常
- reactjs - 使用 polyfill 的 IE11 中的 SCRIPT1002/1010 错误
- go - "..." undefined ("..." 类型没有字段或方法 "...")
- ios - 为什么 appdelegate.m 中无法识别新的 firebase 动态链接格式?
- openmdao - 使用分析梯度与复杂步骤相比,compute_totals 需要更长的时间
- sails.js - 在sailsjs 中,路由匹配但导致404 未调用动作