ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

nginx-我真的需要Web服务器以及API-微服务架构中的网关

2019-11-08 07:10:11  阅读:447  来源: 互联网

标签:nginx microservices gunicorn api-gateway


在我们的高素质主持人基于各种原因拒绝这个问题之前,我想强调一下,这主要是为了重新设计当前项目.
因此,在我当前的python应用程序中,我正在使用gunicorn和nginx.现在,当我们迁移到云时,这让我觉得我真的需要nginx或其他任何Web服务器.
在我们的云架构中,我们将使用API​​网关,我们计划通过该API网关:1)通过Internet公开api 2)负载平衡3)身份验证和授权
网络服务器还有其他目的无法通过api-gateway来实现吗?api-gateway只是网络服务器的另一个奇特名称吗?

解决方法:

我将通过解决术语“ API网关”来回答. API网关是外观设计模式的实现.顾名思义,这种模式仅意味着将某个组件放在其他组件的前面.在Web应用程序的上下文中,网关API是位于Web服务/端点前面的模块.但是,与您所描述的相反,身份验证和授权通常最适合作为体系结构中单独的模块/微服务.这是设置网关API服务的一种方法:

┌──────────────┐         (1)          ┌────────────────┐
│              ├─── authenthicate ──> │                │
│  gateway API │                      │ authentication │
│              │ <──── yes/no ────────┤                │
└───────┬───┬──┘                      └────────────────┘
        │   │         (2)
        │   └─────────────────────┐
    (3) │                         │
        │                         │
┌───────┴──────┐          ┌───────┴───────┐
│              │          │               │
│ web services │          │ authorization │
│              │          │               │
└──────────────┘          └───────────────┘

在这种设计下,您的所有组件现在都具有一个用于登录/身份验证的点.身份验证模块基本上只是说是或否,这也意味着您只需要维护一组逻辑或代码即可处理所有身份验证.这看似微不足道,但想像一下这将为谷歌或微软这样的公司节省多少工作,该公司拥有数十种可公开获得的产品和服务.请注意,实际上,您的身份验证可能是分层的或分层的.例如,您可能具有1FA和2FA身份验证级别,或其他级别.

发生的下一步是网关API将访问授权模块,以找出传入的请求是否具有足够的权限来访问所请求的端点/服务.如果不是,则网关将拒绝该请求.如果是这样,那么它将允许请求访问相应的Web服务.

意识到一旦身份验证和授权不起作用,网关API基本上就是一个大型路由器,它将传入的请求映射到您的一个或多个应用程序中的某个特定端点.值得一提的这种微服务设计的另一个好处是,如果您不得不更改身份验证提供程序或授权逻辑,则只需更改该模块.假设您明智地编写了接口代码,则应用程序中所需的更改应该很小.

Here is a link到Spring的Cloud Gateway框架文档.在这种情况下,将使用Spring Boot应用程序作为网关API的实现.

标签:nginx,microservices,gunicorn,api-gateway
来源: https://codeday.me/bug/20191108/2006066.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有