apisix/docs/zh/latest/README.md
kwanhur 96838b9b47
docs(lint): import Chinese copywriting autocorrect linter (#6568)
Co-authored-by: leslie <59061168+leslie-tsang@users.noreply.github.com>
Co-authored-by: 琚致远 <juzhiyuan@apache.org>
2022-03-24 15:19:39 +08:00

17 KiB
Raw Blame History

title
Apache APISIX
APISIX logo

Build Status License

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

你可以使用 Apache APISIX 来处理传统的南北向流量,以及服务间的东西向流量, 也可以当做 k8s ingress controller 来使用。

Apache APISIX 的技术架构如下图所示:

Apache APISIX 的技术架构

社区

特性

你可以把 Apache APISIX 当做流量入口,来处理所有的业务数据,包括动态路由、动态上游、动态证书、 A/B 测试、金丝雀发布(灰度发布)、蓝绿部署、限流限速、抵御恶意攻击、监控报警、服务可观测性、服务治理等。

  • 全平台

    • 云原生:平台无关,没有供应商锁定,无论裸机还是 KubernetesAPISIX 都可以运行。
    • 支持 ARM64不用担心底层技术的锁定。
  • 多协议

    • TCP/UDP 代理:动态 TCP/UDP 代理。
    • Dubbo 代理:动态代理 HTTP 请求到 Dubbo 后端。
    • 动态 MQTT 代理:支持用 client_id 对 MQTT 进行负载均衡,同时支持 MQTT 3.1.*5.0 两个协议标准。
    • gRPC 代理:通过 APISIX 代理 gRPC 连接,并使用 APISIX 的大部分特性管理你的 gRPC 服务。
    • gRPC Web 代理:通过 APISIX 代理 gRPC Web 请求到上游 gRPC 服务。
    • gRPC 协议转换:支持协议的转换,这样客户端可以通过 HTTP/JSON 来访问你的 gRPC API。
    • Websocket 代理
    • Proxy Protocol
    • HTTP(S) 反向代理
    • SSL:动态加载 SSL 证书。
  • 全动态能力

    • 热更新和热插件:无需重启服务,就可以持续更新配置和插件。
    • 代理请求重写:支持重写请求上游的hosturischemaenable_websocketheaders信息。
    • 输出内容重写:支持自定义修改返回内容的 status codebodyheaders
    • Serverless:在 APISIX 的每一个阶段,你都可以添加并调用自己编写的函数。
    • 动态负载均衡:动态支持有权重的 round-robin 负载平衡。
    • 支持一致性 hash 的负载均衡:动态支持一致性 hash 的负载均衡。
    • 健康检查:启用上游节点的健康检查,将在负载均衡期间自动过滤不健康的节点,以确保系统稳定性。
    • 熔断器:智能跟踪不健康上游服务。
    • 代理镜像:提供镜像客户端请求的能力。
    • 流量拆分:允许用户逐步控制各个上游之间的流量百分比。
  • 精细化路由

  • 安全防护

  • 运维友好

  • 高度可扩展

    • 自定义插件:允许挂载常见阶段,例如initrewriteaccessbalancerheader filterbody filterlog 阶段。
    • 插件可以用 Java/Go/Python 编写
    • 自定义负载均衡算法:可以在 balancer 阶段使用自定义负载均衡算法。
    • 自定义路由:支持用户自己实现路由算法。
  • 多语言支持

  • Apache APISIX 是一个通过 RPCWasm 支持不同语言来进行插件开发的网关。 Multi Language Support into Apache APISIX

    • RPC 是当前采用的开发方式。开发者可以使用他们需要的语言来进行 RPC 服务的开发,该 RPC 通过本地通讯来跟 APISIX 进行数据交换。到目前为止APISIX 已支持Java, Golang, Python 和 Node.js。
    • Wasm 或 WebAssembly 是实验性的开发方式。 APISIX 能加载运行使用Proxy Wasm SDK编译的 Wasm 字节码。开发者仅需要使用该 SDK 编写代码,然后编译成 Wasm 字节码,即可运行在 APISIX 中的 Wasm 虚拟机中。
  • Serverless

    • Lua functions:能在 APISIX 每个阶段调用 lua 函数。
    • Azure functions:能无缝整合进 Azure Serverless Function 中。作为动态上游,能将特定的 URI 请求全部代理到微软 Azure 云中。
    • Apache OpenWhisk:与 Apache OpenWhisk 集成。作为动态上游,能将特定的 URI 请求代理到你自己的 OpenWhisk 集群。

立刻开始

  1. 安装

    APISIX 在以下操作系统中可顺利安装并做过测试:

    CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS, ARM64 Ubuntu 18.04

    请参考安装文档

  2. 入门指南

    入门指南是学习 APISIX 基础知识的好方法。按照 入门指南的步骤即可。

    更进一步,你可以跟着文档来尝试更多的插件

  3. Admin API

    Apache APISIX 提供了 REST Admin API,方便动态控制 Apache APISIX 集群。

  4. 插件二次开发

    可以参考插件开发指南,以及示例插件 example-plugin 的代码实现。 阅读插件概念 会帮助你学到更多关于插件的知识。

更多文档请参考 Apache APISIX 文档站

性能测试

使用 AWS 的 8 核心服务器来压测 APISIXQPS 可以达到 140000同时延时只有 0.2 毫秒。

性能测试脚本 已经开源,欢迎补充。

贡献者变化

访问此处 使用贡献者数据服务。

贡献者变化

视频和文章

用户实际使用案例

APISIX 的用户有哪些?

有很多公司和组织把 APISIX 用于学习、研究、生产环境和商业产品中,包括:

欢迎用户把自己加入到 Powered By 页面。

全景图

  

APISIX 被纳入 云原生软件基金会 API 网关全景图

贡献

我们欢迎来自开源社区、个人和合作伙伴的各种贡献。

致谢

灵感来自 Kong 和 Orange。

协议

Apache 2.0 License