OpenResty 从入门到实战
温铭
OpenResty 软件基金会第一任主席,Apache APISIX 项目 VP
20903 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 52 讲
结束语 (1讲)
OpenResty 从入门到实战
15
15
1.0x
00:00/00:00
登录|注册

47 | 微服务API网关搭建三步曲(一)

传统IT巨头布局
重要性
复杂的代码结构
插件不能热加载
关系型数据库依赖
无法二次开发
平台锁定问题
状态无关
混合云部署
Serverless支持
身份认证
gRPC代理和协议转换
统计、监控组件对接
云原生友好
API管理平台
健康检查和服务熔断
动态功能
反向代理和负载均衡
Upstream
Service
Route
存储
Schema
插件
路由
API网关的地位
开源产品不足
商业产品痛点
新需求
传统功能
安全、快速、准确处理请求
流量入口
技术选型时的思考
API网关处理流量
核心概念
API网关的核心组件和概念
CNCF全景图
为什么要新造轮子
微服务API网关的作用
思考题
技术选型
介绍
微服务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
立即购买
登录 后留言

全部留言(9)

  • 最新
  • 精选
  • helloworld
    老师,最后说的api网关的抽象概念,service是不是应该只包含插件信息,不应该包含upstream信息吧,也就是最终形态为: route:/a service_id:s1 upstream_id:up1

    作者回复: service 中也可以包含上游的信息,如果两个 route 中的上游是一样的,就可以把上游信息放到 service中。当然,你也可以把 service 和上游分开。这两种方式都是可以的。

    2019-09-14
    4
  • 五年
    实战会有能够跑起来的真是项目实现吗?

    作者回复: 有在 github 开源出来的项目

    2019-09-11
    4
    4
  • Rye
    温老师,我在写OR插件的时候想要获取当前nginx的IP地址,用来做灰度发布,可nginx好像没有相关的方法,是否只能通过执行shell来获取呢?

    作者回复: 本机的 ip 地址吗?现在只能借助外部的 shell 来完成

    2019-09-17
    2
    1
  • titi
    个人认为api网关都可以处理,但东西向流量请求均交给网关处理,则会将原本调用逻辑已经非常复杂的链路拉的更长。并且在一些场景下,会增加不必要的鉴权、认证等,但总体来说还是基于业务需求而定
    2019-12-09
    6
  • tina
    请问老师说的在 github 开源出来的项目,是指 APISIX 吗
    2020-01-11
    1
    4
  • Geek_267887
    老师好,我是这么理解的传统的南北向流量是数据中心内部机器和数据中心外(互联网)的流量,这个通过api网关来进行通信是毋庸置疑的,而对于传统的东西向流量则是数据中心内部机器之间流量,这个是无需通过网关,当然了对于微服务来说确实是需要网络来为其进行路由选择,正因为如此,api网关就可以对其流量的行为进行管理
    2020-11-24
    3
  • Jaime
    大神麻烦问一下,http到grpc的转换是怎么做到自动转换的?困扰好多天了,没想通。我现在想到的是提供sdk出来,给各个的微服务去调用,然后做一次json跟protobuf的映射,不知道我的想法对不对?
    2020-06-20
    1
    1
  • 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
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部