[摘]为什么微服务需要 API 网关?
摘录地址:https://kaiwu.lagou.com/course/courseInfo.htm?courseId=69#/detail/pc?id=1913
为什么需要网关
在微服务架构中,一个大应用被拆分成多个小的服务,这些微服务自成体系,可以独立部署和提供对外服务。一般来说,微服务的调用规范主要有 RPC 和 Restful API 两种,API 网关主要针对的是后面一种,也就是以 Spring Cloud 为代表的微服务解决方案。
应用网关的优劣
API 网关在微服务架构中并不是一个必需项目,而是系统设计的一个解决方案,用来整合各个不同模块的微服务,统一协调服务。
API 网关自身也是一个服务,网关封装了系统内部架构,为每个客户端提供了一个定制的 API。从面向对象设计的角度看,它与外观模式(Facade Pattern)类似,外观模式的定义是,外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,这一点和 API 网关的作用非常类似。
除了封装内部系统之外,API 网关作为一个系统访问的切面,还可以添加身份验证、监控、负载均衡、限流、降级与应用检测等功能。
通过在微服务架构中引入 API 网关,可以带来以下的收益:
- API 服务网关对外提供统一的入口供客户端访问,隐藏系统架构实现的细节,让微服务使用更为友好;
- 借助 API 服务网关可统一做切面任务,避免每个微服务自己开发,提升效率,使系统更加标准化;
- 通过 API 服务网关,可以将异构系统进行统一整合,比如外部 API 使用 HTTP 接口,内部微服务可以使用一些性能更高的通信协议,然后在网关中进行转换,提供统一的外部 REST 接口;
- 通过微服务的统一访问控制,可以更好地实现鉴权,提高系统的安全性。
API 网关并不是一个必需的角色,在系统设计中引入网关,也会导致系统复杂性增加,带来下面的问题:
- 在发布和部署阶段需要管理网关的配置,保证外部 API 访问的是正常的服务实例;
- API 服务网关需要实现一个高可用伸缩性强的服务,避免单点失效,否则会成为系统的瓶颈;
- 引入API 服务网关额外添加了一个需要维护的系统,增加了开发和运维的工作量,提高了系统复杂程度。
可以看到,应用API 网关需要权衡带来的收益和因此增加的复杂性,这也是我们前面说的,分布式系统是复杂性和收益的平衡,需要针对具体业务进行合理的架构设计。
微服务网关选型
在微服务领域,有许多开源网关实现,应用比较多的是 Spring Cloud Zuul 和 Spring Cloud Gateway。
标题:[摘]为什么微服务需要 API 网关?
作者:mmzsblog
地址:https://www.mmzsblog.cn/articles/2021/04/14/1618388248364.html
如未加特殊说明,文章均为原创,转载必须注明出处。均采用CC BY-SA 4.0 协议!
本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。若本站转载文章遗漏了原文链接,请及时告知,我们将做删除处理!文章观点不代表本网站立场,如需处理请联系首页客服。• 网站转载须在文章起始位置标注作者及原文连接,否则保留追究法律责任的权利。
• 公众号转载请联系网站首页的微信号申请白名单!