47 | 微服务API网关搭建三步曲(一)
温铭
该思维导图由 AI 生成,仅供参考
你好,我是温铭。
今天这节课,OpenResty 专栏就要进入实战的章节了。我会用三节课的内容,来为你介绍如何实现一个微服务 API 网关。在这个过程中,我们不仅会涉及到前面学过的 OpenResty 知识,我也会从行业、产品、技术选型等多个维度,为你展示下,如何从头做一个新的产品和开源项目。
微服务 API 网关有什么用?
让我们先来看下微服务 API 网关的作用。下面这张图,是一个简要的说明:
众所周知,API 网关并非一个新兴的概念,在十几年前就已经存在了,它的作用主要是作为流量的入口,统一处理和业务相关的请求,让请求更加安全、快速和准确地得到处理。它有以下几个传统功能:
反向代理和负载均衡,这和 Nginx 的定位和功能是一致的;
动态上游、动态 SSL 证书和动态限流限速等运行时的动态功能,这是开源版本 Nginx 并不具备的功能;
上游的主动和被动健康检查,以及服务熔断功能;
在 API 网关的基础上进行扩展,成为全生命周期的 API 管理平台。
在最近几年,业务相关的流量,不再仅仅由 PC 客户端和浏览器发起,更多的来自手机、IoT 设备等,未来随着 5G 的普及,这些流量会越来越多。同时,随着微服务架构的结构变迁,服务之间的流量也开始爆发性地增长。在这种新的业务场景下,自然也催生了 API 网关更多、更高级的功能:
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了微服务API网关的重要性以及当前解决方案存在的问题,并提出了对API网关技术选型的参考。作者首先介绍了微服务API网关的核心组件和概念,包括路由、插件、schema和存储等组件,以及抽象概念中的Route、Service和Upstream。这些组件和概念构成了API网关的基础,为读者提供了对API网关技术的全面了解。文章还提出了一个思考题,探讨传统的南北向流量和微服务之间的东西向流量是否都可以由API网关处理。通过对现有解决方案的不足进行分析,文章引导读者深入了解API网关的特点,并寻求更适合当前业务需求的解决方案。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《OpenResty 从入门到实战》,新⼈⾸单¥59
《OpenResty 从入门到实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(9)
- 最新
- 精选
- helloworld老师,最后说的api网关的抽象概念,service是不是应该只包含插件信息,不应该包含upstream信息吧,也就是最终形态为: route:/a service_id:s1 upstream_id:up1
作者回复: service 中也可以包含上游的信息,如果两个 route 中的上游是一样的,就可以把上游信息放到 service中。当然,你也可以把 service 和上游分开。这两种方式都是可以的。
2019-09-144 - 五年实战会有能够跑起来的真是项目实现吗?
作者回复: 有在 github 开源出来的项目
2019-09-1144 - Rye温老师,我在写OR插件的时候想要获取当前nginx的IP地址,用来做灰度发布,可nginx好像没有相关的方法,是否只能通过执行shell来获取呢?
作者回复: 本机的 ip 地址吗?现在只能借助外部的 shell 来完成
2019-09-1721 - titi个人认为api网关都可以处理,但东西向流量请求均交给网关处理,则会将原本调用逻辑已经非常复杂的链路拉的更长。并且在一些场景下,会增加不必要的鉴权、认证等,但总体来说还是基于业务需求而定2019-12-096
- tina请问老师说的在 github 开源出来的项目,是指 APISIX 吗2020-01-1114
- Geek_267887老师好,我是这么理解的传统的南北向流量是数据中心内部机器和数据中心外(互联网)的流量,这个通过api网关来进行通信是毋庸置疑的,而对于传统的东西向流量则是数据中心内部机器之间流量,这个是无需通过网关,当然了对于微服务来说确实是需要网络来为其进行路由选择,正因为如此,api网关就可以对其流量的行为进行管理2020-11-243
- Jaime大神麻烦问一下,http到grpc的转换是怎么做到自动转换的?困扰好多天了,没想通。我现在想到的是提供sdk出来,给各个的微服务去调用,然后做一次json跟protobuf的映射,不知道我的想法对不对?2020-06-2011
- Wowking老师你好,关于 nginx 迁移到 openretry 有几个疑问: 1.location 里面的 break 等语法应该怎么替换呢? 2.route、service 都可以绑 域名跟 upstream,不知道实际使用是哪种方式? 3.当 nginx 里的 域名、location 比较多的情况下,有没有更好的迁移方案?(非通过 .conf 文件的方式)2021-12-17
- 曹斌温老师,你好,很感谢您课程的分享。有2个问题想请教 1. apisix的学习难度打吗?其是否解决了您在文中说到的各类问题,如是否方便进行二次开发? 2. 对于一般项目,apisix的可扩展性如何,如果可以扩展,怎么入手?2021-05-07
收起评论