【问题标题】:Microservice design with Kubernetes - API gateway, communication, service discovery and db issues使用 Kubernetes 进行微服务设计 - API 网关、通信、服务发现和数据库问题
【发布时间】:2019-01-12 19:49:00
【问题描述】:

最近一直在研究微服务和kubernetes。我在网上阅读的所有教程和文章都是关于普通员工的。我有几个关于在 Kubernetes 上构建微服务应用的具体问题。

  1. API 网关: API 网关是我为我的应用构建的可以自动扩展的微服务吗?还是已经是kubernetes的内置功能了?我问的原因是因为很多文章都说负载平衡是 API 网关的一部分,这让我感到困惑,因为在 kubernetes 中,负载平衡由 service 处理。还有,这和AWS上的API网关一样吗,为什么不用AWS API网关呢?
  2. 服务内的通信:从我只读的内容来看,有Rest/RPC方式和消息队列方式。但是为什么有人说Rest方式是为了同步操作呢?我们可以构建服务并让它们使用Nodejs async/await 函数与rest api 通信吗?
  3. 服务发现:这是 Kubernetes 的问题吗? Kubernetes 会自动为您解决这个问题吗?
  4. 数据库:部署数据库的最佳做法是什么?在其中一个节点上部署为微服务?此外,一些文章说每个服务都应该与不同的数据库通信。所以把一个db的表分成几个db就行了?

【问题讨论】:

  • 1. Kubernetes 有一个“Ingress”资源类型,您可以将其与反向代理“Ingress Controller”结合使用,或者您可以使用第三方 API 网关:Ambassador、KrakenD 等。

标签: node.js database rest kubernetes microservices


【解决方案1】:

API 网关是我为我的应用构建的微服务吗? 自动缩放?还是它已经是 Kubernetes?

Kubernetes 没有自己的 API 网关服务。它有一个 Ingress 控制器,作为反向代理运行,并将 Kubernetes 资源暴露给外界。和服务,它在链接到它们的 Pod 之间对流量进行负载平衡。

此外,Kubernetes 还根据 Pod 消耗的资源、内存使用量或 CPU 使用率以及一些自定义指标提供自动缩放功能。它被称为 Horizo​​ntal Pod Autoscaler,您可以阅读更多关于它的信息here 或official documentation。

服务发现:这完全是 Kubernetes 的问题吗? Kubernetes 会自动为您解决这个问题吗?

服务发现在 Kubernetes 中不是问题,它有一个名为 Services 的实体负责。更多信息,您可以浏览link。

您的其他问题更多地涉及您的应用程序的架构。

【讨论】:

  • 您好 Artem,非常感谢您的回答。那么你可以将入口控制器与服务结合起来形成一个 API 网关,还是首选构建为一个微服务。我正在尝试构建的应用程序是一个传统的电子商务应用程序。它具有身份验证、管理、订单处理、支付处理等功能。我查看了 GCP 会议,似乎Istio 是沟通的方式。
  • 您可以使用自己的 API-gateway 微服务并使用 Ingress 将其暴露在 Kubernetes 集群之外。或者,您可以尝试使用 Ingress 将请求路由到您的后端,而无需 API-gateway 微服务。这个问题再次涉及您的应用程序的体系结构。 Kubernetes 和 Istio 应该都适合你。注意,Istio 在底层集群管理平台(如 Kubernetes、Mesos 等)之上提供了一个抽象层。
猜你喜欢
  • 2019-10-01
  • 1970-01-01
  • 2019-10-27
  • 2019-05-01
  • 2017-06-25
  • 1970-01-01
  • 2020-09-27
  • 2020-07-24
  • 2021-06-20
相关资源
最近更新 更多