最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

NodeJS中的微服务架构

运维笔记admin12浏览0评论

NodeJS中的微服务架构

NodeJS中的微服务架构

我正在进行一个侧面项目,并且我将我的Skelton项目重新设计为微服务,到目前为止我没有找到任何遵循这种模式的开源项目。经过大量的阅读和搜索,我总结了这个设计,但我仍然有一些问题和想法。

以下是我的问题和想法:

  • 如果我有来自同一微服务的2个节点,如何使API网关足够智能以负载平衡请求?
  • 如果其中一个微服务失效,发现应该知道什么?
  • 有没有类似的实施?我的设计是对的吗?
  • 我应该使用尤里卡或类似的东西吗?
回答如下:

你的设计似乎没问题。我们还使用API​​网关方法构建我们的微服务项目。包括网关服务(GW)在内的所有服务都是容器化(我们使用docker)Java应用程序(spring boot或dropwizard)。也可以使用nodejs构建类似的体系结构。与您的问题相关的一些主题:

  • 身份验证/授权:GW服务是客户端的单一入口点。使用具有nodejs libray的JSON Web令牌(JWT)在GW中处理所有身份验证/授权操作。我们在JWT令牌中保留用户角色等授权信息。一旦在GW中生成令牌并返回到客户端,在每个请求时客户端在HTTP头中发送令牌,然后我们检查令牌是否客户端具有调用特定服务或令牌已过期所需的角色。在这种方法中,您不需要在服务器端跟踪用户的会话。实际上没有会话。所需信息位于JWT令牌中。
  • 服务发现/负载平衡:我们使用docker,docker swarm,它是docker引擎中捆绑的docker引擎集群工具(在docker v.12.1之后)。我们的服务是码头集装箱。使用docker的容器化方法可以轻松部署,维护和扩展服务。在项目开始时,我们一起使用Haproxy,Registrator和Consul来实现服务发现和负载平衡,类似于您的绘图。然后我们意识到,只要我们创建一个docker网络并使用docker swarm部署我们的服务,我们就不需要它们来进行服务发现和负载平衡。通过这种方法,您可以通过为每个环境创建不同的网络,轻松地为一台或多台计算机中的dev,beta,prod等服务创建隔离环境。创建网络并部署服务后,您不关心服务发现和负载平衡。在同一个docker网络中,每个容器都有其他容器的DNS记录,并且可以与它们通信。使用docker swarm,您可以使用一个命令轻松扩展服务。在每次请求服务时,docker会将请求分配(加载平衡)到服务实例。

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论