使用Kubernetes进行微服务设计-API网关,通信,服务发现和数据库问题

时间:2018-08-05 19:42:13

标签: node.js database rest kubernetes microservices

最近,我一直在研究微服务和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 个答案:

答案 0 :(得分:1)

  

API网关是我为我的应用程序构建的微服务,可以   自动缩放?还是已经内置的功能   kubernetes?

Kubernetes没有自己的API网关服务。它具有一个Ingress控制器,该控制器充当反向代理并将Kubernetes资源公开给外界。和服务,可在与它们链接的Pod之间负载均衡流量。

此外,Kubernetes根据Pod消耗的资源,内存使用或CPU使用率以及一些自定义指标提供自动缩放。它称为Horizo​​ntal Pod Autoscaler,您可以在hereofficial documentation中了解有关它的更多信息。

  

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

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

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