写点什么

APISIX 进入 Apache 孵化器

  • 2019-10-25
  • 本文字数:1578 字

    阅读完需:约 5 分钟

APISIX 进入 Apache 孵化器

美国时间 2019 年 10 月 17 日,开源微服务 API 网关 APISIX 正式进入 Apache 孵化器。


根据 Apache 基金会邮件列表显示,11 个约束性 (binding votes) 和 1 个无约束性 (non-binding vote) 的投票全部持赞同意见,无弃权票和反对票,投票顺利通过。



由初创公司深圳支流科技贡献的 APISIX 是一个高性能、可扩展的微服务 API 网关。它是基于 Nginx 和 etcd 来实现,和传统 API 网关相比,APISIX 具备动态路由、插件热加载、gRPC 协议转换等功能,适合微服务体系下的 API 管理。


APISIX 的开发原因

API 网关并非一个新兴概念,在十几年前就已经存在了,它的作用主要是作为流量入口,统一处理和业务相关的请求,让请求更加安全、快速和准确得到处理。它有以下传统的功能:


  • 反向代理和负载均衡,这和 Nginx 的定位和功能是一致的;

  • 动态上游、动态 SSL 证书和动态限流限速等运行时动态功能,这是开源版本 Nginx 并不具备的功能;

  • 上游主动和被动健康检查,以及服务熔断;

  • 在 API 网关基础之上进行扩展,成为全生命周期的 API 管理平台。


在最近几年,业务相关流量不再仅仅是由 PC 客户端和浏览器发起,更多来自手机、IoT 等设备。未来随着 5G 的普及,这些流量会越来越多。同时,伴随微服务架构的结构变迁,服务之间的流量也开始爆发性增长。在这种新的业务场景下,催生了 API 网关更多功能:


  • 云原生友好,架构要变得轻巧,便于容器化;

  • 对接 Prometheus、Zipkin、Skywalking 等统计、监控组件;

  • 支持 gRPC、Dubbo、websocket、MQTT 等协议的代理,以及 http 到 gRPC 之间的协议转换,以便适应更广泛场景;

  • 承担 OpenID Relying Party 的角色,对接 Auth0、okta 等身份认证提供商的服务,把流量的安全作为头等大事来对待;

  • 通过运行时动态执行用户函数的方式来实现 Serverless,让网关的边缘节点更加灵活;

  • 支持插件的热加载,新增、删除和修改插件,都不用重启服务;

  • 不锁定用户,支持混合云的部署架构;

  • 最后就是网关节点要状态无关,可以随意扩容和缩容。


有了这些功能,用户的服务就只用关心业务本身,而和业务实现无关的功能,比如服务发现、服务熔断、身份认证、限流限速、统计、性能分析等,就可以在独立的网关层面来解决。从这个角度来看,API 网关既可以替代 Nginx 的所有功能,来处理南北向的流量,也可以完成 Istio 控制面和 Envoy 数据面的角色,来处理东西向的流量。


而现有的开源 API 网关并不能很好的满足,所以支流的技术团队决定自己实现,也就是 APISIX。


APISIX 的发展历程

APISIX 在 2019 年 6 月 6 号开源后,很快就获得了开发者的关注,并在一个月之后被收录到 CNCF(云原生软件基金会) 全景图中。


现在 APISIX 在 GitHub 有 800 多个 star,近 30 名代码贡献者,并聚集了 500 多人的开发者社区。从开源之初,APISIX 就保持每个月发布一个版本,并坚持测试驱动开发、自动化 CI/CD 等理念,来保证代码的质量和稳定性。


目前,参与开发、测试和使用 APISIX 的公司包括:贝壳找房、魅族、大搜车、租租车、腾讯云、海尔优家、泰康云、中国航信、HelloTalk、fansup 等。


APISIX 的特点

Apache APISIX 在技术上与其他 API 网关相比,有以下几个不同之处:


一是使用 etcd 而不是关系型数据库来保存配置,大大降低使用、部署和维护的复杂度,也让代码变得更加易读,核心代码只有 3892 行,有利于二次开发和扩展。下图是 Apache APISIX 的部署架构图:



二是插件可以热插拔,不用重启服务。并且已经内置了常见的限流限速、身份认证、请求改写、URI 重定向、opentracing、serverless 等插件,开箱即用:



三是从路由、jsonschema 校验,到插件运行,都采用了性能优先的解决方案,在性能测试跑满 CPU 的情况下,请求的平均延时不到 0.7 毫秒,不到同类开源项目的十分之一。(下图的横坐标表示 CPU 的核数)




关于 Apache APISIX 的更多功能,可以访问项目主页来查看。


有兴趣的开发者可以关注 APISIX,加入 APISIX 社区。


2019-10-25 15:4612496

评论 7 条评论

发布
用户头像
666
2019-11-05 11:49
回复
用户头像
api666!
2019-11-04 08:58
回复
用户头像
好厉害~
2019-10-25 22:39
回复
用户头像
我是来说 six six six的
2019-10-25 17:08
回复
用户头像
Authing 下一波重构将采纳 APISIX:)
2019-10-25 16:18
回复
用户头像
恭喜恭喜,666
2019-10-25 16:13
回复
用户头像
赞👍
2019-10-25 16:08
回复
没有更多了
发现更多内容

前端食堂技术周刊第 45 期:Vite3.0、第91次TC39会议、Figma背后的CSS、B 站事故复盘、图片优化工具

童欧巴

前端 deno vite TC39 figma

java零基础入门-异常、线程(上)

喵手

Java 7月月更

2B和2C

白粥

Qt | 关于如何使用事件过滤器 eventFilter

YOLO.

qt 7月月更

vue2升级vue3:vue3创建全局属性和方法

zhoulujun

Vue3 全局变量 全局方法

模块二作业

薛敏

为啥谷歌的内部工具不适合你?

laofo

DevOps cicd 研发效能 工具链 谷歌

语音聊天app源码——钠斯直播系统源码

开源直播系统源码

直播系统源码 语音聊天系统 语音聊天软件 一对一语音聊天系统

vue2升级vue3:composition api中监听路由参数改变

zhoulujun

Vue3 路由参数 参数监听 路由跳转

STM32+MFRC522完成IC卡号读取、密码修改、数据读写

DS小龙哥

7月月更

vue2升级vue3: h、createVNode、render、createApp使用

zhoulujun

Vue3

Prometheus 运维工具 Promtool (二)Query 功能

耳东@Erdong

Prometheus 7月月更 Promtool

Kubernetes网络插件详解 - Calico篇 - 概述

巨子嘉

如何使用Docker内的kafka服务

程序员欣宸

Java kafka 7月月更

C#入门系列(三十一) -- 运算符重载

陈言必行

7月月更

面试突击68:为什么 TCP 需要 3 次握手?

王磊

Java 面试题 网络

vue2升级vue3:Vue Router报错,directly inside <transition> or <keep-a

zhoulujun

Vue3 router JSX tsx

vue2升级vue3:vue3 hooks库选用

zhoulujun

Vue3 Hooks vueuse ahooks

vue2升级vue3:Vue Demij打通vue2与vue3壁垒,构建通用组件

zhoulujun

Vue3 vue2 demij vue2有vue3兼容

第二届中国Rust开发者大会来啦,完整议程大曝光!

Mike Tang

rust rust conf

入门前端 -- CSS

bo

CSS 前端 7月月更

万字详解“用知识图谱驱动企业业绩增长”

博文视点Broadview

莫慌!Java 多商户外贸版系统这不就来了么

CRMEB

vue2升级vue3:provide与inject 使用注意事项

zhoulujun

Vue3 provide inject

vue2升级vue3:单文件组件概述 及 defineExpos/expose

zhoulujun

Vue3 expose

一种分布式深度学习编程新范式:Global Tensor

OneFlow

深度学习 编程 分布式

如何写一篇百万阅读量的文章

六月的雨在InfoQ

内容 个人提升 写作技巧

LeetCode-67. 二进制求和(java)

bug菌

Leet Code 7月月更

算法题每日一练---第10天:时间显示

知心宝贝

算法 前端 后端 7月月更

C# Serialport的发送和接收

IC00

C# 7月月更

服务器内存故障预测居然可以这样做!

vivo互联网技术

运维 内存监控 EDAC 内存预测

APISIX 进入 Apache 孵化器_语言 & 开发_温铭_InfoQ精选文章