前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >公司常用的第3套API网关。简历没业务项目时,就卷下API网关源码吧!

公司常用的第3套API网关。简历没业务项目时,就卷下API网关源码吧!

作者头像
小傅哥
发布2024-06-07 16:52:36
1500
发布2024-06-07 16:52:36
举报
文章被收录于专栏:CodeGuide | 程序员编码指南

作者:小傅哥 博客:https://bugstack.cn

❝沉淀、分享、成长,让自己和他人都能有所收获!😜 ❞

大家好,我是技术UP主小傅哥。

HigressSpringCloud Gateway,再到今天这套 Apisix 小傅哥就把市面上非常常用的3套 API 网关服务就全部都展示给大家了。其实所有的 API 网关都有一个共同的目的,就是做统一的 API 管理,包括;协议转换、负载均衡、动态路由、灰度发布、服务熔断、统一认证等。

像是这些组件化的 API 网关,使用起来其实都挺容易的,就有点像是使用了一个可视化的 Nginx 一样。但这些 API 看着简单,但有时候没有一个不错的资料对照搭建、配置和使用,也是挺难下手的。所以小傅哥把这些内容,成体系的展示给你,让你可以对照学习使用。

  • 官网:https://apisix.apache.org/zh/
  • 部署:https://github.com/apache/apisix-docker - 官网提供了 Docker 脚本,但也有一些注意事项才能使用
  • 脚本:https://gitcode.net/KnowledgePlanet/road-map/xfg-dev-tech-apisix - 可执行使用的部署脚本

一、APISIX 介绍

这款老6API,是阿帕奇下的开源项目。最初由 api7.ai 创建,于 2019 年开源并捐献给 Apache 软件基金会,使服务全球一半 API 请求的愿景成为可能。自那时起,API7.ai一直投入最优秀的人才和资源来支持 Apache APISIX 及其社区,该社区由来自世界各地的数千名贡献者和用户加入。

Apache APISIX 是一个动态、实时、高性能的云原生 API 网关,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。

为什么选择 Apache APISIX?

  • 简单易用的 Dashboard:Apache APISIX Dashboard 可以让用户尽可能直观、便捷地通过可视化界面操作 Apache APISIX。作为 Apache 软件基金会中持续迭代的开源项目,欢迎你随时提出新的想法。
  • 友好的用户体验:Apache APISIX Dashboard 极大地满足了用户需求,不仅提供了清晰的组织架构以适配二次开发,而且可以借助插件编排能力释放想象力!
  • 可视化配置:拒绝重复造轮子。借助 Apache APISIX 内置插件,可以在极短时间内创建灵活、可靠、高性能的网关。无需编写代码,只需在编辑器中拖拽插件、配置条件,便可通过可视化的方式打造专属的 API 管理系统。
  • 极致的性能体验:Apache APISIX 基于 Radixtree Route 和 etcd 提供路由极速匹配与配置快速同步的能力。从路由到插件,所有的设计和实现都是为了极速性能和超低延迟。
  • 阻拦恶意程序:Apache APISIX 提供了多款身份认证与接口验证的插件,我们将稳定、安全放在首位。

二、环境部署

  • 云服务器:2c2g 最低,我是用的 2c8g 体验的。https://yun.xfg.plus - 价格实惠。
  • 基础环境:Docker、Portainer、Git 【在小傅哥的 bugstack.cn 路书中都有讲解安装和使用】

1. 脚本配置

官网中提供了 docker 的安装脚本,但不能直接使用,需要如图做下复制操作。小傅哥已经把这部分复制的内容,到脚本工程里了。

  • 你可以知道有这么一个地方,将来如果版本更新了,也可以做下配置操作。

2. 可用脚本 - 准备好的

  • 这个是小傅哥帮你准备好的脚本,可以直接安装使用。
  • 这里涉及了 docker、portainer 的使用,在《bugstack.cn 路书》中,已经完整配置提供,可以查看。

三、网关配置

  • 网关的登录密码是在 dev-ops/apisix-dashboard/conf.yaml 中配置的。默认的是 admin/admin
  • 另外注意 conf.yml 中 etcd:2379 的配置,这里从 127.0.0.1 调整为 etch 应用名称。这样能保证在同一个 docker 配置的网络下,可以直接连接使用。如果是分布式部署,则要改为具体的IP。
  • 这套按照学习脚本中提供了 web1、web2 两个 nginx 的配置,可以测试使用。

1. 访问网关

地址:http://127.0.0.1:9093/

  • 访问后就可以看到左侧的目录,可以配置;服务、上游、路由,以及插件等功能。
  • 路由是入口,从路由可以访问到配置的服务,服务是每个应用的访问地址,可以配置权重轮训和一致性哈希。插件主要是提供的是;身份验证、安全防护、流量控制、无服务架构、可观测性功能。

2. 服务配置

  • 配置后,一直点击就可以了。

3. 配置路由

4. 插件配置

  • 你可以按需测试各种插件,还可以通过编排让各个要执行的插件串联起使用。

四、服务验证

地址:http://192.168.1.105:9080/api

- 刷新网关接口,不停的刷新,会看到接口访问值的变化。

有了这个大厂网关的体验,大家就了解了一套网关是如何使用的,作用是什么啦。接下来,如果感兴趣技术的积累,想扩展下自己,也可以学习一套网关代码的实现。

五、网关学习

除了业务开发,小傅哥自己也是非常感兴趣于这样的网关技术组件的实现,所以在日常的工作中也积累了很多网关的设计。后来在22年做了一套轻量的网关系统,把核心的内核逻辑实现出来让大家学习。帮助了很多伙伴学习项目后找到了不错的工作。

1. 项目架构

图片

整个API网关设计核心内容分为这么五块;

  • 第一块:是关于通信的协议处理,也是网关最本质的处理内容。这里需要借助 NIO 框架 Netty 处理 HTTP 请求,并进行协议转换泛化调用到 RPC 服务返回数据信息。
  • 第二块:是关于注册中心,这里需要把网关通信系统当做一个算力,每部署一个网关服务,都需要向注册中心注册一个算力。而注册中心还需要接收 RPC 接口的注册,这部分可以是基于 SDK 自动扫描注册也可以是人工介入管理。当 RPC 注册完成后,会被注册中心经过AHP权重计算分配到一组网关算力上进行使用。
  • 第三块:是关于路由服务,每一个注册上来的Netty通信服务,都会与他对应提供的分组网关相关联,例如:wg/(a/b/c)/user/... a/b/c 需要匹配到 Nginx 路由配置上,以确保不同的接口调用请求到对应的 Netty 服务上。PS:如果对应错误或者为启动,可能会发生类似B站事故。
  • 第四块:责任链下插件模块的调用,鉴权、授信、熔断、降级、限流、切量等,这些服务虽然不算是网关的定义下的内容,但作为共性通用的服务,它们通常也是被放到网关层统一设计实现和使用的。
  • 第五块:管理后台,作为一个网关项目少不了一个与之对应的管理后台,用户接口的注册维护、mock测试、日志查询、流量整形、网关管理等服务。

2. 项目流程

API网关除了基础的功能模块以外,还需要重点考虑负载均衡的设计,只有这样才能被横向扩展支撑高并发的吞吐量。所在负载设计这块,小傅哥也是花了不少的时间来构建,让负载可以被动态的管理。

图片

这是一整套API网关的核心通信模型结构图,以API网关算力的多套服务注册到网关中心开始,拉取RPC应用接口并完成映射HTTP调用操作。最终允许用户通过 Nginx 访问和路径重写的负载均衡管理,调用到具体的网关算力中执行协议解析和RPC接口的泛化调用并最终返回结果数据。—— 就这套架构设计学习完,就够你晋升到P7岗了!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 bugstack虫洞栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、APISIX 介绍
  • 二、环境部署
    • 1. 脚本配置
      • 2. 可用脚本 - 准备好的
      • 三、网关配置
        • 1. 访问网关
          • 2. 服务配置
            • 3. 配置路由
              • 4. 插件配置
              • 四、服务验证
              • 五、网关学习
                • 1. 项目架构
                  • 2. 项目流程
                  相关产品与服务
                  负载均衡
                  负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档