关于apisix:APISIX-可观测性最佳实践

APISIX 介绍Apache APISIX 是一个动静、实时、高性能的云原生 API 网关。它构建于 NGINX + ngx_lua 的技术根底之上,充分利用了 LuaJIT 所提供的弱小性能。 APISIX 次要分为两个局部: APISIX 外围:包含 Lua 插件、多语言插件运行时(Plugin Runner)、Wasm 插件运行时等;功能丰富的各种内置插件:包含可观测性、平安、流量管制等。APISIX 在其外围中,提供了路由匹配、负载平衡、服务发现、API 治理等重要性能,以及配置管理等基础性模块。除此之外,APISIX 插件运行时也蕴含其中,提供原生 Lua 插件的运行框架和多语言插件的运行框架,以及实验性的 Wasm 插件运行时等。APISIX 多语言插件运行时提供多种开发语言的反对,比方 Golang、Java、Python、JS 等。 APISIX 目前也内置了各类插件,笼罩了 API 网关的各种畛域,如认证鉴权、平安、可观测性、流量治理、多协定接入等。本文中的可观测性就是基于APISIX 的插件来实现数据上报。 案例介绍本 demo 案例采纳了 Ruoyi 零碎 + APISIX 的最佳实际,采纳了Opentelemetry + DDtrace 多链路协定的形式,以下是具体版本信息: DataKit Agent:v1.22.1 DataKit Operator:v1.2.1 APISIX:v3.2 (LTS) Opentelemetry-pluginRuoyi:v3.6.3 Vue 前端 SDK:OpentelemetryJava 后端 SDK:DDtrace如何接入APISIX 的可观测性有多种插件和接入形式,咱们以上面的几种插件来举例说明: 品种接入形式(插件)Tracersopentelemetry 插件,可用于依据 OpenTelemetry specification 协定标准上报 Tracing 数据。(该插件目前仅反对 http 申请上报)Loggers1、file-logger 插件,可用于将日志数据存储到指定地位。2、console 输入形式,可用于批改 APISIX 的 access_log 文件格式Metricsprometheus 插件,以规定的格局上报指标到 Prometheus 中。Tracing1、RUM 接入革新前端 npm sdk 版本 放弃最新版本即可RUM 接入时须要批改 traceType 批改为 w3c_traceparent 。 ...

February 20, 2024 · 3 min · jiezi

关于apisix:API7-助力头部券商实现数字化转型

背景随着中国经济步入高质量倒退阶段,数字化转型正在被更多的企业提上议程。2021 年证监会出台的《证券期货行业科技倒退“十四五”布局》中指出,需“晋升证券期货业数据治理程度”,“深入数字化转型规范建设,推动行业数据接口的互联互通,避免技术垄断,升高信息壁垒”。 国内某头部券商为应答行业内外在业务层、数据层和流量层愈发强烈的竞争,迫切需要进行通过晋升其对 API 的注册治理、认证受权,以及限流、熔断等公共性能的反对来实现数字化转型。API 治理是技术转型中的重中之重 ,API 治理的问题成为了亟待解决的首要难题。通过严格的技术选型,该头部券商最终抉择了以新一代云原生 API 网关 APISIX 为根底的 API7 企业版,解决了业务侧、技术侧和治理侧一系列的难题。 对立 API 网关,晋升业务管理效率在该头部券商外部,不同业务线应用着泛滥简单且扩散的 NGINX/OpenResty/Kong 服务,治理老本、危险始终较高,保护起来比拟艰难。应用 NGINX 配置时须要手动填写配置文件,流程简短,高低线治理简单,人员保护形式和效率均不佳。尤其是在运维人员流动的状况下,经常出现问题难解决的状况。而且 NGINX 的配置无奈动静失效,单点的批改对整个零碎的影响很大。 总结来说,次要有以下痛点: 泛滥底层逻辑不一的服务简单且扩散,治理老本和危险很高各零碎之间定制性能差别较大,无奈进行对立保护审批严格且环节多,且各个环节的操作对整体流程影响较大无任何零碎和数据隔离的能力,业务线之间存在相互影响的可能无对立监控、告警、鉴权、灰度等计划以凋谢证券为大指标,数据安全存在隐患因此该头部券商通过应用对立 API 网关平台,为其对内对外的信息系统提供对立 API 网关服务,蕴含的服务有公共的 API 治理、路由、负载平衡、访问控制、认证管制、流量管制、熔断、接口编排、协定转换、日志、统计、监控等性能。从而使 API 根底性能与业务性能拆散实现,根底性能更弱小,让业务开发更专一于业务,晋升效力,促成相干信息系统建设欠缺。 业务选型最佳实际 — API7 企业版为解决该券商的痛点,在新网关技术选型中,该证券严格审查了 API7 企业版在高牢靠、高性能、低延时、部署简略、反对程度扩容等方面的要求。心愿新的 API 网关: 能逐渐替换各类应用 NGINX/OpenResty/Kong 等开源 API 网关,作为互联网 API 网关具备欠缺的治理后盾,不便对 API 网关进行治理保护具备可维护性及可扩展性,不便后续进行性能定制那么,API7 企业版到底是什么样的 API 网关?它又是如何轻松解决如此多且简单的问题,满足该头部券商的需要,在泛滥的 API 产品中怀才不遇的呢? APISIX 是全球性能最好、社区最沉闷、最凋谢的云原生 API 网关。内置近百开源插件开箱即用,反对多语言形式满足企业二次扩大。API7 企业版是基于 Apache APISIX 构建的 API 网关产品,是能为用户提供生产可用的七层全流量解决平台,提供审计日志、SSL 证书治理、权限管制、统计报表等多项企业级 API 对立治理性能。 它有以下技术个性: ...

April 18, 2023 · 1 min · jiezi

关于apisix:2023-年十大-API-管理趋势

本文探讨了 API 治理在数字化转型中的重要性,以及 API 治理面临的挑战和倒退时机。文章重点介绍了十大 API 治理发展趋势,包含 API 安全性、API 标准化、云端 API 治理解决方案、低代码 API 平台、API 市场、新兴 API 协定、人工智能与 API、开发者体验、API 剖析和无服务器架构等。通过关注这些趋势,企业能更好地应答将来挑战,抓住倒退时机,实现业务的持续增长和翻新。 作者郑玩星,API7.ai 技术工程师。浏览原文 什么是 API?什么是 API 治理?近期,AIGC(AI Generated Content,生成式人工智能)在各行业的利用日趋遍及。AIGC 服务提供商通过 API 向内部提供其内容生成能力,使得用户可能便捷地获取 AIGC 利用相干内容。显然,API 成为 AIGC 利用的重要支柱。那么,到底什么是 API 呢? API(Application Programming Interface,利用程序接口)是一系列事后定义的规定和约定,目标是用于不同软件应用之间的通信。API 使得一个软件应用程序(即客户端)可能申请另一个软件应用程序(即服务器)的性能与数据,从而促成不同零碎间的互动和数据共享。借助 API,开发者可能利用其余应用程序的性能,从而更疾速地构建和公布新利用。 API 治理包含创立和公布 API、制订应用策略、管制拜访权限、造就用户社区、收集与剖析应用统计数据以及报告性能等过程,通常蕴含 API 网关、开发者门户等组件。其中,API 网关作为要害组件,负责解决和转发申请,同时执行平安和性能策略,而开发者门户则是一个在线平台,为开发者提供 API 文档、密钥治理和其余相干资源。 随着企业日益依赖 API 推动数字化转型,API 治理的重要性空前晋升。在简要介绍了相干概念之后,接下来咱们将探讨 API 治理的十大发展趋势。 一、API 安全性越来越重要API 安全性是指爱护应用程序和零碎之间通过 API 替换数据和性能的过程。API 安全性的次要指标是确保数据和性能的正确性、可靠性和私密性,避免未经受权的拜访和潜在的歹意攻打。API 安全性对于古代利用和企业服务至关重要,因为它们大量依赖于 API 进行数据交换和集成。以下是 API 安全性重要的几点起因: 数据保护:API 通常用于传输敏感数据,如用户信息、交易细节和领取信息。确保 API 安全性能够避免数据泄露、篡改和失落,保障用户和企业的信息安全。零碎完整性:通过确保 API 只能被非法用户和合规利用拜访,能够保护零碎完整性。这有助于避免歹意攻击者通过 API 毁坏或控制系统。信赖和名誉:一个平安的 API 能够进步用户对企业服务的信任度,有助于建设良好的品牌名誉。相同,如果 API 安全性有余,可能导致企业名誉受损,用户散失。为了保障 API 的安全性,通常咱们能够利用 API 网关来治理平安性能,例如身份验证和访问控制,以爱护 API 免受未经受权的拜访和攻打。市场上已有许多 API 网关提供这些性能,其中之一便是 Apache APISIX。Apache APISIX 是 Apache 软件基金会下的云原生 API 网关,兼具动静、实时、高性能等特点。它提供了一系列平安性能,以确保 API 的安全性。例如,Apache APISIX 反对通过 key-auth、jwt-auth 等插件进行身份验证,以及通过 consumer-restriction 等插件进行访问控制。这些性能帮忙企业避免数据泄露,爱护用户隐衷及企业利益。 ...

April 12, 2023 · 2 min · jiezi

关于apisix:景顺长城基于-Apache-APISIX-在金融云原生的生产实践

本文介绍了景顺长城在金融云原生架构演进中抉择 APISIX 作为网关工具的技术细节,同时分享了应用 APISIX 的实际细节,并对 APISIX 的将来瞻望进行了探讨。 作者李奕浩,景顺长城信息技术部研发工程师,负责公司网关和业务零碎上云等工作。业务背景景顺长城基金治理有限公司成立于 2003 年,是一家专一于资产治理畛域的企业。目前,公司次要业务涵盖量化投资、被动收益和固定收益,领有超过 6200 亿的资金治理规模,为超过 6000 万的投资者提供服务。作者所在的信息技术部门为投资交易、产品经营、市场营销等服务零碎提供技术支持和开发业务需要。 公司内泛滥业务都须要流量网关作为重要撑持,然而在采纳 APISIX 之前,咱们遇到了不少问题和痛点: 痛点 1:网关不对立,保护老本高首先介绍景顺长城业务零碎在架构上的演进,分为 3 大阶段,本文基于阶段 2 到 3 的转变背景: 单体服务形式。服务利用部署在物理机上,然而随着服务利用和业务的一直增长,运维和开发成本开始激增;虚拟机形式。在虚拟机阶段,各业务零碎应用的网关不对立,业务各自为政,网关相干的机器服务也很多,保护老本始终很高。在基金证券行业,网络分区方面存在肯定的监管要求,每个网络分区都须要依照信息安全级别划分为不同的逻辑平安区域,或者是物理隔离平安的区域,各个区域应用防火墙达到网络隔离的目标。联合在金融科技云策略以及数字化转型的需要,启动了上云工程。以后业务零碎大抵分为了三个分区:交易区、生产区、管理区,每个分区部署的网关都不一样。本来景顺长城应用 NGINX 作为 Web 服务器和反向代理,在同网络分区中的业务,都是应用了同一个 NGINX,导致了每次服务变更或路由更新,都须要在这个 NGINX 下面手动更新和重载。 上图就是以后的零碎架构,从上往下别离是用户接入层、负载平衡层、网关集群层以及业务零碎层,其中网关平安集群层应用了 Zuul、Spring Cloud Gateway、Kong 还有 NGINX 等多个框架,架构治理不对立,治理起来比拟繁琐。 痛点 2:网关承载能力弱现存的网关只应用了很根本的能力,比方负载平衡、路由转发,鉴权、灰度公布、熔断能力都没有。 后面提到的繁多的 NGINX 服务,每次服务变更和路由更新都须要在 NGINX 下面进行配置。因为业务前端的服务都集成在 NGINX 下面,没有对接 DevOps 平台生产环境,NGINX 的配置项数量现在曾经相当宏大了,单个 Server 模块超过 700 行,保护老本相当高。 痛点 3:限流熔断、灰度公布配置繁琐限流熔断能力缺失灰度能力配置繁琐:需同步改变多个利用代码和数据库变更。当初应用的网关须要独自做对应的开发,并且业务侧也要做对应的代码批改,能力实现不同服务的灰度能力(全链路灰度)。痛点 4:新增服务波及步骤繁多 在新增服务的状况下,须要手动增加 NGINX、Gateway、业务零碎等各个模块的配置步骤,无奈配置自动化。这就意味着新增服务的一系列配置批改很是繁琐,导致在服务公布时面临很高的人力老本。 痛点 5:接口调用存在安全隐患此外,以后应用的网关未波及鉴权能力,各接口可间接调用,业务零碎存在很高的平安危险。 发现并抉择 APISIX基于上述痛点,景顺长城在 API 网关产品选型过程中对以下几点更为关注。 因为金融畛域对服务的稳定性相较其余行业更加器重,因而稳定性放在第一位,另外也看重网关的扩展性,对于在虚拟机期间横蛮成长的网关服务,都须要一一满足其中的业务需要,这里就是比拟考验所选网关的扩展性;再有就是可观测性,对业务零碎的日志、链路追踪、监控都有很强烈要求;最初就是热更新的能力。 ...

April 4, 2023 · 2 min · jiezi

关于apisix:WebAssembly-助力云原生APISIX-如何借助-Wasm-插件实现扩展功能

本文将介绍 Wasm,以及 Apache APISIX 如何实现 Wasm 性能。 作者朱欣欣,API7.ai 技术工程师原文链接 什么是 WasmWasm 是 WebAssembly 的缩写。WebAssembly/Wasm 是一个基于堆栈的虚拟机设计的指令格局。在 Wasm 未呈现之前,浏览器中只能反对运行 Javascript 语言。当 Wasm 呈现之后,使得高级语言例如 C/C++/Golang 可能在浏览器中运行。以后,支流的浏览器包含 Chrome、Firefox、Safari 等浏览器都已实现对 Wasm 的反对。并且得益于 WASI 我的项目的推动,服务端也曾经可能反对运行 Wasm 指令。现在在网关侧,Apache APISIX 也已实现对 Wasm 的反对,开发者能够通过高级语言 C/C++/Go/Rust 并依照 proxy-wasm 标准来实现 Wasm 插件的开发。 为什么 APISIX 要反对 Wasm 插件相比拟原生的 Lua 插件,Wasm 插件存在如下劣势: 可扩展性:APISIX 通过反对 Wasm,咱们能够联合 proxy-wasm 提供的 SDK,应用 C++/Golang/Rust 等语言进行插件开发。因为高级语言往往领有更加丰盛的生态,所以咱们能够依靠于这些生态来实现反对更多功能丰盛的插件。安全性:因为 APISIX 和 Wasm 之前的调用依靠于 proxy-wasm 提供的 ABI(二进制利用接口),这部分的拜访调用更为平安。Wasm 插件只容许对申请进行特定的批改。另外,因为 Wasm 插件运行在特定的 VM 中,所以即便插件运行呈现解体也不会影响 APISIX 主过程的运行。APISIX 如何反对 WASM理解完 Wasm,当初咱们将从自顶向下的角度来看 APISIX 是如何反对 Wasm 插件性能的。 ...

April 4, 2023 · 4 min · jiezi

关于apisix:备战一年半我们让最火的开源网关上了云

这是最好的时代,咱们满怀信心施展才华;这也是最坏的时代,咱们遇到了前所未有的竞争。工程师们从不畏惧艰难,因为酷爱能化解所有艰难。本文源于对张超(API7 Cloud 团队负责人,Apache APISIX PMC member)的采访,这是一个对于 API7 Cloud 诞生的故事,路转峰回,寻寻觅觅。一年半后,咱们舒颜感叹:莫愁千里路,自有到来风! 一款优良的产品只须要一个契机云原生时代风云变幻,开源产品层出不穷。 2019 年 APISIX 在温铭和院生的代码下诞生,6 月过后仍处于 Demo 阶段的 APISIX 便在 GitHub 上开源。一经开源,APISIX 的独特性让它迅速席卷开源畛域。2019 年 8 月,APISIX 胜利进入了 Apache 孵化器,次年 7 月 APISIX 顺利毕业,并成为了 Apache 软件基金会的顶级开源我的项目。 Apache APISIX 的诞生打响了 API7.ai 商业化幅员的“第一枪”。API7.ai 基于对市场倒退的了解,定位 SaaS 将来能成为倒退的方向,可能真正给公司带来增长,开始投入商业化。咱们 API7 Cloud 团队的负责人张超示意,“咱们也十分心愿可能基于 Apache APISIX 这样一个优良的 API 网关去做一款 SaaS 产品”。 在发现这个机会之后,咱们很快进入了调研阶段。2021 年 6-7 月,API7 Cloud 实现了最后的提议,下半年定了一个 MVP(最简化可履行产品),随即工程师们乐此不疲地投入开发。一方面,咱们逐渐调整产品的稳定性和可用性;另一方面,一直地往 MVP 里加一些新性能。起初又找到了一些试用客户,和客户一起应用并打磨产品。 API7 Cloud 的呈现为云原生时代多云与混合云场景下治理 API 提供了最佳实际,这么一款优良的产品背地,是一群热血的年轻人,撑起了 SaaS 产品新理念的一片天。 一群热血且以用户为核心的工程师正如团队负责人的飞书签名所言:“I wanna create a great SaaS product”,简短的一句话背地是无数个勤勤恳恳加班加点的日夜。 ...

March 21, 2023 · 2 min · jiezi

关于apisix:Apache-APISIX-320-LTS-正式发布

APISIX 3.2.0 是 3.0 大版本以来的第一个 LTS 版本。此次发版,是 3.x 时代更替 2.x 时代的一大里程碑。从此之后,新的一系列 patch 版本将会在 3.2 的根底上公布。本次公布一如平常一样带来了许多新的插件和个性,为 APISIX 的使用者带来不一样的新玩法。 原文链接 新个性:四层上的服务发现只有多数网关反对服务发现,APISIX 就是其中之一。在 3.2.0 版本中,APISIX 把原来七层上的服务发现的性能也做到了四层上。这样一来,将 APISIX 作为 TCP/UDP 代理时也能享受到服务发现带来的便利性。和在七层上的服务发现一样,要想用上服务发现,咱们须要先在 config.yaml 中配置服务发现服务器的地址: discovery: nacos: host: - "http://192.168.33.1:8848"而后在具体的 upstream 上配置 discovery_type 和 service_name: $ curl http://127.0.0.1:9180/apisix/admin/stream_routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -i -d '{ "remote_addr": "127.0.0.1", "upstream": { "scheme": "tcp", "discovery_type": "nacos", "service_name": "APISIX-NACOS", "type": "roundrobin" }}'这样拜访 stream_routes 时,上游的节点会从 Nacos 的 APISIX-NACOS 服务中获取。 ...

March 17, 2023 · 2 min · jiezi

关于apisix:无需二次开发SOAPtoREST-简化企业用户的业务迁移和整合

本篇文章剖析了 SOAP-to-REST 的多种实现形式,并介绍如何应用 APISIX 做零代码代理。 作者罗锦华,API7.ai 技术专家/技术工程师,开源我的项目 pgcat,lua-resty-ffi,lua-resty-inspect 的作者。原文链接 1. 什么是 Web ServiceWeb Service 由万维网联盟 (W3C) 定义为一种软件系统,旨在反对通过网络进行可互操作的计算机间交互。 Web Service 实现特定工作或工作集,并且由名称为 Web Service 描述语言 (WSDL) 的规范 XML 表示法中的服务形容进行形容。服务形容提供了与服务交互必须的所有详细信息,包含音讯格局(用于具体阐明操作)、传输协定和地位。 其余零碎应用 SOAP 音讯与 Web Service 进行交互,通常是通过将 HTTP 与 XML 序列化和其余 Web 相干规范一起应用。 Web Service 的架构图(留神事实中 Service broker 是可选的): 图片起源(遵循 CC 3.0 BY-SA 版权协定): https://en.wikipedia.org/wiki/Web_service WSDL 接口暗藏服务实现形式的详细信息,这样服务的应用便独立于实现服务的硬件或软件平台,以及编写服务所应用的编程语言。 基于 Web Service 的应用程序是松耦合、面向组件和跨技术的实现。 Web Service 能够独自应用,也能够与其余 Web Service 一起用于执行简单的汇集或业务事务。 Web Service 是 Service-oriented architecture (SOA) 的实现单元,SOA 是用来替换单体零碎的一种设计办法,也就是说,一个宏大的零碎能够拆分为多个 Web Service,而后组合起来对外作为一个大的黑盒提供业务逻辑。风行的基于容器的微服务就是 Web Service 最新替代品,然而很多旧零碎都曾经基于 Web Service 来实现和运作,所以尽管技术突飞猛进,兼容这些零碎也是一个刚性需要。 ...

March 16, 2023 · 5 min · jiezi

关于apisix:马蜂窝如何利用-APISIX-网关实现微服务架构升级

作者:董红帅,马蜂窝微服务体系建设以及根底服务能力建设专家。马蜂窝作为旅行社交平台,是数据驱动的新型旅行电商。基于十余年的内容积攒,马蜂窝通过 AI 技术与大数据算法,将个性化旅行信息与来自寰球各地的游览产品供应商实现连贯,为用户提供不同凡响的旅行体验。 随着业务的倒退,马蜂窝架构也在追随技术步调进行更迭,开始基于 Kubernetes 进行更多的延展。在这个技术背景下,须要针对云服务开启新一轮的架构更新,比方:微服务场景建设新的蜂效平台及周边设施来反对迭代和流量泳道的能力,在多 Kubernetes 集群场景引入 Karmada 实现多集群治理,在微服务网关畛域将 Istio + Envoy 的架构替换为 Apache APISIX 与 Envoy 共存的微服务网关模式。 微服务 1.0 模式现状目前马蜂窝外部的微服务架构经验了两次迭代,本文中将针对原有架构的第一次调整定义为 1.0 版本。在进行微服务 1.0 架构的搭建之前,咱们从公布零碎能力、Kubernetes 容器、服务发现和微服务网关等角度进行了一些考量与指标对齐。比方 Kubernetes 的广泛应用,须要开始思考基于容器做多语言反对,在 CI/CD 环节实现全面容器化,并反对多 Kubernetes 集群等。 在进行第一次迭代之前,外部架构的微服务网关应用的是 NGINX Ingress,但它其实是存在问题的。比方配置变更基于 NGINX reload,会造成业务有损;同时在利用范畴内仅反对单 Kubernetes 集群,场景受限;内置资源过于简略,大量匹配规定依赖 Annotations,配置繁冗不敌对,尤其是对外部服务发现能力反对很弱。 因而在进行微服务 1.0 迭代落地的过程中,为了满足一些业务需要,咱们进行了如下动作(选取局部操作列举): 在 Kubernetes 容器内,基于 macvlan 革新容器网络,IDC 机房网络与云厂商网络互通(容器互通的通信根底);借助网关或容器直连实现服务互访,不再应用 Kubernetes Service。基于 Kubernetes 容器场景部署;基于 Consul 物理机虚拟机部署。减少对立服务发现能力,基于 Kubernetes、Consul 建设对立的发现核心 — Atlas;同时基于 Atlas 扩大微服务网关、Java 生态、监控体系等。在微服务网关的抉择上,基于 Istio + Envoy 架构进行构建。对 Istio 中 Pilot 进行二次开发,对接 Atlas 发现核心,因为 Atlas 数据来源于多套 Kubernetes 和 Consul,进而将实例发现与 Kubernetes 集群解耦,间接做到网关对接多 Kubernetes 集群的能力,实现整个网关动静感常识别的变动。 ...

January 17, 2023 · 3 min · jiezi

关于apisix:服务网格|如何使用-Amesh-配置插件

作者@lingsamuel,API7.ai 云原生技术专家,Apache APISIX Committer。在上一篇 Amesh 产品介绍中,咱们有提到在 Amesh v2.0 版本新增了一个可选的管制面组件,即 amesh-controller 及相应的 CRD。Amesh controller 为用户提供了配置 APISIX 插件的能力,使 APISIX 泛滥的插件在服务网格场景下也能开箱即用,而无需用户进行自定义的开发。 那么如何应用这些组件,来进行 APISIX 插件能力的应用呢?本文在假如曾经胜利装置 Amesh 后,如何在 Amesh 中进行部署、配置和更新插件等操作。 部署 Amesh Controller 与 CRD应用如下命令部署 Amesh Controller 与 CRD: cd controllerkubectl apply -k ./config/crd/helm install amesh-controller -n istio-system ./charts/amesh-controller默认状况下,Amesh 将会主动连贯到位于 istio-system namespace 下的 amesh-controller 服务 15810 端口,而无需重启 Sidecar。 如需自定义,能够应用 AMESH_GRPC_SOURCE 环境变量进行配置。该变量默认值为 "grpc://amesh-controller.istio-system.svc:15810",按需指定到对应的 amesh-controller 即可。 部署示例利用这里咱们以 Istio 提供的 Bookinfo 利用为测试用例。 # 在 Istio 目录下执行kubectl -n test apply -f samples/bookinfo/platform/kube/bookinfo.yamlkubectl -n test run consumer --image curlimages/curl --image-pull-policy IfNotPresent --command sleep 1d测试是否可能失常拜访: ...

January 12, 2023 · 2 min · jiezi

关于apisix:为什么-APISIX-Ingress-是比-Ingress-NGINX-更好的选择

作者容鑫,API7.ai 云原生技术工程师,Apache APISIX Committer。本文将会比照两个比拟风行的 Ingress controller 实现,心愿能对读者进行 Ingress controller 选型中有所帮忙。 Ingress NGINX 是 Kubernetes 社区实现的 Ingress controller,在社区中被宽泛应用。Apache APISIX Ingress 则是 Apache 软件基金会下的开源我的项目,应用 APISIX 作为数据面的 Kubernetes Ingress controller。Ingress NGINX vs APISIX Ingress性能比照下列表格中,比照了 Ingress NGINX 和 APISIX Ingress 基本功能,包含协定反对、鉴权形式、上游探针/策略、负载平衡策略、Kubenertes 集成等。以下表格数据取自 learnk8s.io。 Product/Project Ingress NGINXApache APISIX Ingress1. General info Based onnginxnginx2. Protocols HTTP/HTTPS✔️✔️ HTTP2✔️✔️ gRPC✔️✔️ TCPPartial✔️ TCP+TLS✖︎✔️ UDPPartial✔️ Websockets✔️✔️ Proxy Protocol✔️✔️ QUIC/HTTP3PreviewPreview3. Clients Rate limiting (L7)✔️✔️ WAF✔️Partial Timeouts✔️✔️ Safe-list/Block-list✔️✔️ Authentication✔️✔️ Authorisation✖︎✔️4. Traffic routing Host✔️✔️ Path✔️✔️ Headers✔️✔️ Querystring✔️✔️ Method✔️✔️ ClientIP✔️✔️5. Upstream probes/resiliency Healthchecks✖︎✔️ Retries✔️✔️ Circuit Breaker✖︎✔️6.Load balancer strategies Round robin✔️✔️ Sticky sessions✔️✔️ Least connections✖︎✔️ Ring hash✔️✔️ Custom load balancing✖︎✔️7. Authentication Basic auth✔️✔️ External Auth✔️✔️ Client certificate - mTLS✔️✔️ OAuth✔️✔️ OpenID✖︎✔️ JWT✖︎✔️ LDAP✖︎✔️ HMAC✖︎✔️8. Observability Logging✔️✔️ Metrics✔️✔️ Tracing✔️✔️9. Kubernetes Integration StateKubernetesKubernetes CRD✖︎✔️ ScopeClusterwidenamespacenamespace Support for the Gateway API✖︎Preview Integrates with service meshes✔️✔️10. Traffic shaping Canary✔️✔️ Session Affinity✔️✔️ Traffic Mirroring✔️✔️11. Other Hot reloading✔️✔️ LetsEncrypt Integration✔️✔️ Wildcard certificate support✔️✔️ Configure hot reloadingPreview✔️ Service Discovery✖✔️性能差别通过下图,能够粗略看到 APISIX Ingress 内置的性能和个性相比 Ingress NGINX 更加丰盛,其中包含服务发现、协定反对、认证鉴权等等。 ...

January 11, 2023 · 3 min · jiezi

关于apisix:基于-APISIX-的服务网格方案-Amesh-积极开发中

作者@lingsamuel,API7.ai 云原生技术专家,Apache APISIX Committer。在云原生疾速倒退的前提下,服务网格畛域也开始逐步炽热。目前阶段,大家所熟知的服务网格解决方案很多,每种产品又各有其劣势。因而在面对不同的行业或者业务背景时,每个人的选型想法都各不相同。 Apache APISIX 是一个动静、实时、高性能的云原生 API 网关,提供负载平衡、动静上游、灰度公布、服务熔断、身份认证、可观测性等丰盛的流量治理性能。基于 APISIX 的扩大路线上,除了 APISIX Ingress 在云原生畛域被各大厂商开始关注外,基于 APISIX 的服务网格计划也在踊跃迭代中。 基于 APISIX 的服务网格计划Amesh 是 Apache APISIX 的服务网格库。它适配了 xDS 协定,能够从诸如 Istio 的管制立体中接收数据,并生成 APISIX 所需的数据结构,使得 APISIX 可能在服务网格畛域作为数据面发挥作用。 依附 Amesh,APISIX 能够工作在服务网格模式下,不应用传统的 etcd 作为数据中心,而是应用 shdict 与 Amesh 库间接进行数据交换,防止了额定的性能损耗,使得大规模部署成为可能。 通过应用 Amesh,能够在服务网格畛域取得 APISIX 具备的高性能、丰盛的流量治理性能、易扩展性等多种劣势。 Amesh 的架构Amesh 通过适配 xDS 协定,能够让 APISIX 代替 Istio 所应用的 envoy 组件来接管集群流量。在理论应用中,APISIX 将作为 Pod 的 Sidecar 接管网格内的所有流量。目前 Amesh 的架构如下图所示: 通过架构图能够看到,通过 xDS 协定,Amesh 能够将 Istio 作为管制面,从 Istio 侧获取配置信息,并将其本义为 APISIX 所需的配置。 ...

January 11, 2023 · 2 min · jiezi

关于apisix:盘点微服务架构下的诸多身份验证方式

联结作者:罗泽轩,API7.ai 技术专家、Apache APISIX PMC 成员联结作者:赵士瑞,API7.ai 技术工程师,Apache APISIX Committer身份认证是授予用户拜访零碎并授予应用零碎的必要权限的过程。而提供了这一性能的服务,就是身份认证服务。 在传统的单体软件应用程序中,所有这些都产生在同一个应用程序中。但在微服务架构中,零碎由多个服务组成,在这样的架构中,每个微服务都有本人的工作,因而为每个微服务别离实现受权和身份验证过程并不完全符合此准则。 本文将从传统服务架构和微服务架构下的身份认证形式区别进行探讨,并最终掂量微服务架构中身份认证服务的各种实现形式的优劣。 传统服务架构中的身份认证服务在企业开发服务的晚期,所有性能都是做到同一个应用程序外面的。咱们把这种模式称之为 “单体”,以跟当下更为支流的 “微服务” 架构辨别开来。 单体利用由单个不可分割的单元组成。它通常由各个业务线各自开发,然而部署时放入到同一个环境中。所有这些都严密集成以在一个单元中提供所有性能。这一单元里领有所需的所有资源。单体利用的益处在于部署迭代简略,适宜业务线较少且比拟独立的公司采纳。 随着企业开发进去的业务越来越简单,咱们会发现单体服务曾经无奈满足现实生活外面疾速迭代的须要了。咱们须要把这个单体的巨无霸拆分一下,同时保障现有的各个性能间的调用能失常进行。这时候,ESB(企业服务总线)便应运而生了。 所谓的 “企业服务总线”,就是一根连贯各个企业服务的管道。ESB 的存在是为了集成基于不同协定的不同服务,ESB 做了音讯的转化、解释以及路由的工作,以此来让不同的服务互联互通。从名称就能晓得,它的概念借鉴了计算机组成原理中的通信模型 —— 总线,所有须要和内部零碎通信的零碎,通通接入 ESB,就能够利用现有的零碎构建一个全新的松耦合的异构的分布式系统。 ESB 做了音讯的转换解释与路由等工作,让不同的服务互联互通。传统的 ESB 的服务调用形式是,每一次服务的调用者要向服务提供者进行服务交互申请时都必须通过核心的 ESB 来进行路由。 接下来将依照这两种状况,别离形容对应的身份认证性能的实现。 单体架构单体架构下,用户身份验证和会话治理绝对简略。身份认证和受权产生在同一个应用程序中,通常应用基于 session 的认证计划。一旦通过身份验证,就会创立一个会话并将其存储在服务器上,任何须要它的组件都能够拜访它并用于告诉和受权后续要求。会话 ID 被发送到客户端并用于应用程序的所有后续申请,以将申请与以后会话相关联。 ESB 架构在 ESB 架构下,所有用户与服务之间,服务与服务之间全副通过 ESB 总线进行解决。因为 ESB 的架构是从单体拆分下来的,身份认证形式绝对于单体架构并没有变动。 微服务架构中的身份认证服务从单体架构迁徙到微服务架构有很多劣势,但微服务架构作为一种分布式架构,会存在更大的攻击面,共享用户上下文更加艰难。因而微服务架构下须要有跟传统架构不一样的身份认证服务,能力响应更大的安全性挑战。 目前,咱们能够把微服务架构下的身份认证服务分为以下三类: 通过每个微服务实现身份认证;通过身份认证服务实现身份认证;通过网关实现身份认证。当然,每种做法都有本人特定的优缺点。通过每个微服务实现身份认证既然微服务架构是从单体架构拆分进去的,因而比拟天然的过渡形式就是由每个微服务本人实现身份认证。 每个微服务都须要实现本人独立的安全性保障,并在每个入口点上强制执行。此办法使微服务团队可能自主决定如何实现其平安解决方案。然而,这种办法有几个毛病: 平安逻辑须要在每个微服务中反复实现,这会导致服务之间的代码反复。它扩散了开发团队的注意力,使其无奈专一于其次要服务。每个微服务都依赖于它不领有的用户身份验证数据。很难保护和监控。欠缺这个解决方案的抉择之一就是应用一个加载在每个微服务上的共享认证库。这个操作能够避免代码反复,开发团队将只关注他们的业务畛域,但依然存在这种改良无奈解决的毛病。因为共享的认证库依然须要有对应的用户身份数据,而且还须要保障各个微服务应用同样版本的认证库。诚实说,共享认证库更像是服务拆分不透彻的后果。 因而这种形式总结来说,劣势在于施行速度快,独立性强;而劣势也比拟显著,服务之间的代码反复、违反繁多职责准则,较难保护。 通过身份认证服务实现身份认证既然每个微服务本人实现身份认证难以保护,而应用共享认证库又违反了微服务拆分的本意,那么能不能把共享认证库升级成专门的身份认证服务呢? 在这种状况下,所有拜访都通过同一服务进行管制,相似于单体利用外面的身份认证性能。每个业务服务都必须在执行操作时,向访问控制模块发送独自的受权申请。 然而,这种办法在肯定水平上减慢了服务的运行速度,并减少了服务之间的互连量。并且各个微服务会依赖这个“单点”的身份认证服务。万一对立的身份认证服务出问题,会造成链式反应,带来二次挫伤。 所以总结来看,这种形式尽管确保了每个微服务职责繁多,使得身份认证性能更加集中。然而仍会造成单点依赖,进而减少申请提早。 通过网关实现身份认证迁徙到微服务体系结构时,须要答复的问题之一是微服务之间如何通信。后面提到的 ESB 是种计划,然而更常见的抉择则是采纳 API 网关。 API 网关是所有申请的单个终端节点入口,它通过充当应用这些微服务的地方接口来提供灵活性。某个须要拜访其余微服务的微服务(以下称之为“客户端”,以跟被它拜访的微服务相辨别)无权拜访多个服务,而是须要向负责将其路由到上游服务的 API 网关发送申请。 因为 API 网关位于客户端拜访的必经之路上,因而它是强制施行身份验证问题的绝佳抉择。应用 API 网关能够缩小提早(调用身份验证服务),并确保身份验证过程在整个应用程序中保持一致。 ...

January 10, 2023 · 1 min · jiezi

关于apisix:Apache-APISIX-Ingress-16-正式发布

间隔上一个版本 v1.5 公布,曾经过了 3 个月,咱们很快乐地发表 Apache APISIX Ingress v1.6 正式公布! 在该版本中,共有 29 位贡献者 参加代码提交,其中 17 位是新晋贡献者 ,感激大家的反对和参加! 本次公布的 Apache APISIX Ingress v1.6 版本带来了泛滥新个性,次要集中在对 Gateway API 的反对,同时也在扩大 APISIX Ingress 的应用场景和易用性方面的晋升。以下是一些重点个性的介绍。 扩大对 Gateway API 的反对Gateway API 是 Kubernetes 中下一代的 Ingress 标准,致力于提供富裕表现力,可扩大和面向角色的接口来倒退 Kubernetes 的网络,各个 Ingress controller 我的项目都在踊跃推动对该标准的反对。Apache APISIX Ingress 我的项目自 2021 年开始就在踊跃地紧跟上游社区的倒退,并踊跃推动 Gateway API 在 APISIX Ingress 我的项目中的实现。 以后,Apache APISIX Ingress 我的项目中通过 Gateway API 进行配置的个性尚处于 beta 阶段,欢送大家在测试环境中踊跃进行测试,并提供反馈,咱们将继续的对此个性进行优化和改良,尽早实现此个性的 GA。 在 APISIX Ingress v1.6 版本中,咱们增加了对 Gateway API 中的 TCPRoute 和 UDPRoute 这两种资源的反对。同时,扩大了对 HTTPRoute 资源中 Filters 的反对,这样用户在应用 HTTPRoute 资源时,就能够在该资源中利用一些重定向、Header 改写等能力了。 ...

January 10, 2023 · 2 min · jiezi

关于apisix:2022-Apache-APISIX-年度记忆

时光已逝,转瞬 2022 年未然落下了帷幕。Apache APISIX 社区在泛滥开源爱好者和开发者的陪伴下,又一起走过了新的四季。 在过来的一年中,咱们的开源我的项目和社区都获得了许多成就,并失去了来自寰球范畴的宽泛关注和反对。2022 年,APISIX 社区依然在为寰球技术开发者和企业提供优质的产品与反对,并不断改进和降级产品。这一年中,APISIX 新增了许多性能,并迈入了全新的 3.0 时代;改善了用户体验,并失去了许多优良贡献者的陪伴与单干。 咱们心愿通过这一份纸上告白,向大家展现 Apache APISIX 在过来一年中获得的成就,并感激所有为 APISIX 我的项目做出奉献的人。 迈进 3.0 大版本,新增超多实用性性能进入 2022 年后,APISIX 从 1 月份开始仍旧放弃着良好的发版速度。这一年中,APISIX 一共公布了 15 个版本,波及 6 个版本的更迭,包含旧版本的保护更新以及失常版本的迭代。 同时,在往年 APISIX 也将产品拉进了新的 3.0 时代,目前已针对 3.x 系列公布了 3 个更新版本。在 3.0 的整体规划中,将会陆续带来更多的针对生态和产品体验上的性能晋升,使 APISIX 的可用性更上一层楼。在新的一年中,APISIX 也会为产品带来更多实用性性能,助力企业在数字化转型的过程中,愈发轻松。 从 2019 年在 Apache 软件基金会毕业成为 Apache 社区顶级我的项目,到当初放弃着稳固发版速度和沉闷社区气氛的三年工夫里,APISIX 我的项目在 GitHub 上已失去 10K+ star 并领有 6 亿多下载量,contributor 数量曾经超过 500 人。同时每月放弃奉献 70+ commit、解决 80+ issue 的响应速度。高活跃度的社区气氛,正是推动产品疾速成长的关键因素。 ...

January 5, 2023 · 2 min · jiezi

关于apisix:聚焦人机交互智能应用领域APISIX-在希沃网关的应用与实践

分享嘉宾简海清,视源股份运维负责人。视源股份(CVTE)自成立以来,依靠在音视频技术、人机交互、利用开发、系统集成等电子产品畛域的软硬件技术积攒,建设了教育数字化工具及服务提供商希沃(seewo)、智慧协同平台 MAXHUB 等多个业内知名品牌。其中希沃从 2012 年到 2021 年间断 10 年蝉联中国交互智能平板行业市占率桂冠,已成为货真价实的行业标杆企业。 为了应答日趋成熟及快速增长的业务现状,希沃又是如何在网关层面进行跟进的呢? 随着技术的飞速发展,在人际交互智能畛域,业务需要也对架构迭代有了更高的要求。为了应答日趋成熟及快速增长的业务现状,希沃又是如何在网关层面进行跟进的呢? 网关往期迭代与痛点希沃网关的倒退经验了四个版本的迭代。2013 年公司开始尝试互联网业务,那时候采纳了 OpenResty + NGINX 动态配置的形式搭建了最后的网关,开发人员通过 SCP(Secure Copy)进行公布。与此同时一个比较严重的问题就是,每次上线公布都须要运维人员的帮助能力保障平滑上线。 随着业务的倒退和人员的裁减,2016 年咱们开发了第二代公布零碎和相干迭代网关。这次是基于 OpenResty 集成了 upsync 模块,同时配合 Consul 来进行服务发现。第二代的零碎解决了上一代开发人员无奈独立公布上线的问题,但仍须要运维帮助能力进行扩容。 之后公司业务开始了迅猛发展,开始对网关以及产品的弹性扩缩能力有了更高的要求。2018 年咱们基于 K8s 开发了第三代零碎。思考到仍有局部利用遗留在数组机上,所以整个网关架构是在 K8s 上应用 Ingress NGINX 来当作第二层的网关,第一层网关仍是 OpenResty 配合的双层网关架构。这种状况下尽管解决了前代公布扩容等自助问题,但又引入了新的麻烦。 业务的疾速裁减以致对于整体稳定性的要求越来越高。采纳这种双层网关架构后,一层 NGINX reload 和二层网关的路由变更,都会造成长连贯断开。这对于一些长连贯应用场景会影响较大,比方软件须要获取老师的授课状态时连贯忽然断开,状态获取中断从而影响授课。 自身双层架构就会带来老本层面的一些减少。同时,从上图的网关流量拓扑图能够看到,除上述遗留问题外也还存在一些架构上的痛点: 在双层网关架构下,不论是在第一层网关增加域名、批改配置或者增加一些非凡规定等,都须要 reload NGINX。同时从整体架构来看,组件的配合对于流量管制层面来说比拟差。尤其是目前咱们的业务用户体量已达到千万级别,一旦客户端呈现不可躲避的异样,就有可能呈现侵蚀服务端的状况,这种时候如果在网关层面没有肯定的流量控制能力,对于后端来说将会造成十分重大的雪崩。因而,基于上述迭代遗留问题和架构痛点,在 2022 年咱们引入了 APISIX 来解决上述问题。同时借助 APISIX,也增强了在网关层面对于流量的控制能力。 然而在迁徙 APISIX 的过程中,也会存在一些已知挑战。比方: ⼀层 NGINX 域名多,定制化规定简单。目前咱们的业务中有 700+ 域名,同时还存在十分多的定制化配置,比方重定向、黑白名单等,这些都须要适配 APISIX 的插件。因为历史遗留问题,⼀层 NGINX 和二层 Ingress 网关还是⼀对多的关系,对于后续的流量切换是不是会很简单,这也是一个待解决问题。外部存在的双层 DNS 架构。目前 DNS 解析次要用于解决公网和服务器外部的解析,所以对于后续的计划咱们更心愿是一个能不便回滚同时能够优化内网调用性能的。迁徙 APISIX 后架构调整面对上述已知的挑战,在迁徙过程中次要进行了以下三个角度的操作。因为整个迁徙过程没有波及到研发内容,所以全部都是由运维人员施行的。 ...

January 4, 2023 · 2 min · jiezi

关于apisix:Apache-APISIX-310-版本正式发布

时隔一个月,新版本又来了。这次的 APISIX 3.1.0 是 3.0 大版本以来的第一个新版本,在 3.x 的新时代里,咱们判若两人地在每个版本中给大家奉上更多的新性能。 此次公布的 3.1.0 版本,增加了对插件配置的加密存储和存储在内部平安服务的反对,着重于让用户可能更平安、更释怀地应用他们的配置。在这之外,咱们还引入了许多新的个性,旨在优化对 APISIX 的应用体验。 新个性:插件配置的加密存储新版本反对将插件的特定字段加密保留到 etcd 中。 在之前的版本中,APISIX 提供了一个 key_encrypt_salt 的配置项,反对对 etcd 外面存储的 SSL key 进行加密,防止明文存储私钥数据。毕竟像私钥这样的敏感数据,少一个中央存储明文,就能多一份安心。那么对于其余同样敏感的配置,比方 jwt-auth 插件中的 secret,咱们能不能也加密起来,防止在 etcd 外面存储明文呢? 3.1 版本中就把加密存储的性能拓展到其余字段上。有了这个性能,咱们能够在某个特定的插件上指定须要加密的字段,而后在 config.yaml 文件中开启加密,即可防止明文存储。 举个例子,咱们给 jwt-auth 插件新增了如下的标记: encrypt_fields = {"secret", "private_key"},当咱们在 config.yaml 里开启了字段的加密性能: apisix: data_encryption: enable: true keyring: - edd1c9f0985e76a2那么写入到 etcd 的 jwt-auth 插件的配置中的 secret 和 private_key,就会被加密存储。通过 etcdctl get --prefix / 看到的配置,会是诸如 “"secret":"77+NmbYqNfN+oL..."” 这样的数据,而不是原始的配置信息。 新个性:将敏感信息存储在内部平安服务除了能够将敏感信息加密存储在 etcd 之外,还能够抉择从别的零碎中动静获取敏感信息,而不再要求敏感信息必须存储在 APISIX 的配置存储(如 etcd)中。 ...

December 30, 2022 · 2 min · jiezi

关于apisix:APISIX-Ingress-对-Gateway-API-的支持和应用

本文介绍了 Gateway API 这个将服务裸露到集群之外的全新标准,并且介绍了如何在 APISIX Ingress Controller 中应用它。 作者@lingsamuel,API7.ai 云原生技术专家,Apache APISIX Committer。Gateway API 是除原生 Service 与 Ingress 之外,APISIX 社区发动的独立标准,帮忙用户将 Kubernetes 中的服务裸露到集群之外,由 sig-network (特地兴趣小组)治理。 Gateway API 反对大部分罕用网络协议(HTTP、TCP、UDP 等)和对 TLS 的反对。此外,Gateway API 中的 Gateway 资源可能通过 Kubernetes API 来治理代理和网关的生命周期。 随着 Gateway API 被宽泛实现与利用,Gateway API 公布了 v0.5.0 版本。在该版本中,一些外围 API 首次进入 Beta 阶段,包含:GatewayClass、Gateway、HTTPRoute。 Gateway API 劣势盘点Gateway API 不仅是 Ingress 的性能父集,还具备如下改良: 面向角色:Gateway 由一组 API 资源组成,不同的 API 资源代表了应用与配置 Kubernetes 网络资源的不同角色。表现力强:Gateway API 的外围性能蕴含基于 Header 匹配、流量加权以及以及其余局部由 annotations 实现的非标准化性能。可扩大:Gateway API 容许不同资源在不同层级一起应用。这使得可能对 API 构造进行更精细化的管制。此外,Gateway API 还蕴含了可移植、网关共享与跨命名空间援用等个性。 ...

December 29, 2022 · 2 min · jiezi

关于apisix:当云原生网关遇上图数据库NebulaGraph-的-APISIX-最佳实践

本文介绍了利用开源 API 网关 APISIX 减速 NebulaGraph 多个场景的落地最佳实际:负载平衡、裸露接口构造与 TLS Termination。API 网关介绍什么是 API 网关API 网关是位于客户端和服务器之间的“中间人”,用于治理、监控和爱护 API。它能够在 API 之前执行一些操作,例如:身份验证、受权、缓存、日志记录、审计、流量管制、平安、防火墙、压缩、解压缩、加密、解密等。 API 网关能够工作在 TCP/IP 4 层和 OSI 7 层。跑在 7 层的 API 网关能够应用多种协定,例如:HTTP、HTTPS、WebSocket、gRPC、MQTT 等。在这些应用层协定中做一些操作,比方,申请的重写、转发、合并、重试、缓存、限流、熔断、降级、鉴权、监控、日志、审计等等。 这里举例一下借助 API 网关能够做的具体的事: 在网关层减少认证层,比方:JWT 认证、OAuth2 认证、OpenID 认证等等,这样不须要在每个服务中都做具体的认证集成工作,进而节俭许多开发成本。借助网关给跳板机 SSH 流量减少无需客户端批改的简单认证,比方:跳转任何客户端的 SSH 登录,给出一个网址或者输入框,疏导登陆者通过网页的 SSO 认证(蕴含多因素认证),再通过网关转发到 SSH 服务。甚至在网关层做 Serverless 数据库!TiDB 社区的同学们就在做这个事儿,他们从一般的 MySQL 客户端的登录申请中解析能推断出转到须要的 TiDB 示例的信息,并且在须要 cold start 唤醒实例的时候把连贯放弃住,能够参考这篇文章:TiDB Gateway。如果你特地惨在保护屎山我的项目,不得不针对旧版本的应用程序对新版本的服务端进行兼容,这时候 API 网关也能够通过一些申请重写,把旧版本的申请转换成新版本的申请。只有脑洞大,实践上 API 网关能够做很多事。但显然不是所有的事件都是适宜在这一层去做的,通常那些比拟通用的事件才适宜在这一层去做,下面我只是给出一些典型和极其的具体例子。 Apache APISIXAPI 网关是从 LB、Reverse Proxy 我的项目演进过去的。随着云原生的衰亡,API 网关也逐步成为了云原生的一部分,风行的开源网关有: NginxApache APISIXKongLuraOpenRestyTykTraefikIstioEnvoy而且其中很多都是基于 Nginx/OpenResty 的上游我的项目。这里就以 Apache APISIX 为例,介绍一下 NebulaGraph 借助 API 网关的几个实际。 ...

December 28, 2022 · 9 min · jiezi

关于apisix:认证鉴权对于-API-网关的重要性

认证鉴权作为 API 网关不可或缺的能力,未然成为用户在选型 API 网关时考量的重要因素之一。 作者钱勇,API7.ai 开发工程师,Apache APISIX Committer在当下云原生越发成熟的环境下,API 网关最外围的性能能够概括为:连贯 API 消费者和 API 提供者。 理论场景中,除去少部分容许匿名拜访的 API 外,提供者往往都会对消费者有所限度,比方只有符合条件的消费者才能够对 API 进行拜访。其次,提供者对于不同的消费者的拜访策略可能并不相同,例如 A、B 消费者都能够拜访 /send_mail API,但每分钟的调用频次须要辨别计算。 从以上两点能够看出在 API 网关层面甄别和验证 API 消费者的身份至关重要。本文将介绍云原生开源 API 网关 Apache APISIX 如何实现对于消费者的认证,以及目前被企业宽泛采纳的认证形式。进一步介绍 APISIX 的用户认证体系是如何与其余平安个性联动应用,从而进一步晋升 API 网关的平安防护能力。 Apache APISIX 的认证鉴权Apache APISIX 是一个动静、实时、高性能的 API 网关,提供负载平衡、动静上游、灰度公布、精细化路由、限流限速、服务降级、服务熔断、身份认证、可观测性等数百项性能。在认证鉴权方面,APISIX 也是提供了十分多且不便的路径。 传统的 HTTP 代理往往只能基于申请域名、客户端 IP 等粗粒度伎俩对申请方进行辨认,这对于一款 API 网关来说是远远不够的,咱们须要有更丰盛的认证形式来解决越来越简单的业务需要。而 APISIX 辨别于传统代理的一大劣势就是灵便的插件扩大能力,这其中就包含一套用于用户认证的插件汇合,这些插件依据实现形式的不同能够分为两大类。 第一种是对接内部认证服务,委托其进行认证。 第二种则是在网关外部认证,配合 APISIX 设计的 Consumer 对象进行认证。 上面将会顺次介绍这两种认证形式。 对接内部认证服务在企业采纳 API 网关之前,零碎中往往曾经部署了独立的认证服务,此时咱们要如何将 APISIX 与已有的认证服务进行对接呢?APISIX 提供了这样一系列插件,它们的工作原理就是通过对接各种内部的认证服务,委托它们实现认证。 ...

December 22, 2022 · 3 min · jiezi

关于apisix:为什么-APISIX-Ingress-是比-Traefik-更好的选择

本文能够为正在选型 Kubernetes Ingress Controller 产品的用户提供一些帮忙。 作者张晋涛,API7.ai 云原生专家,Apache APISIX Committer、Kubernetes Ingress Nginx ReviewerApache APISIX IngressApache APISIX Ingress 是一个应用 Apache APISIX 作为数据面的 Kubernetes Ingress controller 实现。 目前,它反对多种规定的配置形式,包含 Ingress、APISIX Ingress CRD (自定义资源)以及 Gateway API。 其整体采纳数据面与管制面拆散的架构,由 Apache APISIX 承载理论的业务流量。因而大大晋升了整体的安全性,极大防止了因为数据面被攻打而导致 Kubernetes 集群被攻打的可能。 TraefikTraefik 是由 Traefik Labs 开源的一款反向代理和负载均衡器。它在 Kubernetes 中反对多种规定的配置形式,包含 Ingress、Traefik IngressRoute(自定义资源)和 Gateway API。 Traefik 是一个对立的二进制文件,管制面和数据面的代理逻辑均绑定在一起。因而,如果受到攻打或者有近程执行的安全漏洞被利用,极有可能存在 Kubernetes 集群被攻打的状况。 APISIX Ingress vs Traefik接下来我将从以下几个维度对 Apache APISIX Ingress 和 Traefik 进行一些比照,不便大家在选型时对产品有更多的认知。 协定反对作为网关,最为外围的能力便是要可能正确的代理流量。作为 Kubernetes 集群的入口网关,次要解决如下两局部的流量:即 Client 到网关的流量和网关与 Upstream 的流量。如下所示: ...

December 22, 2022 · 2 min · jiezi

关于apisix:马斯克都不懂的-GraphQLAPI-网关又能对其如何理解

作者,罗泽轩上个月马斯克评论 Twitter App 滥用 RPC 后,与一些 Twitter 的技术主管产生了矛盾 —— 婉言马斯克不懂技术。那这个马斯克都不懂的 GraphQL 到底是什么? 什么是 GraphQL?它有多风行?GraphQL 是一套由 Facebook 在 2015 年公布的一套面向 API 的查问操作语言。相比于其余的 API 设计形式,GraphQL 容许客户端依据当时约定的数据结构组建查问语句,由服务端解析这一语句并只返回所需的内容。这么一来,GraphQL 在提供丰富性和灵活性的同时,防止了冗余数据带来的性能损耗。 GraphQL 的这一个性,让它在须要跟许多简单数据对象打交道的利用场景里大行其道,成为该环境下的不二之选。 2018 年 GraphQL 实现了标准的制订工作,并推出了稳固版本。同年,Facebook 将 GraphQL 我的项目募捐给了 Linux 基金会上司的 GraphQL 基金会。自那当前,GraphQL 曾经在许许多多的开源我的项目和商业机构中落地。到目前为止,市面上曾经有了多个 GraphQL 的支流客户端实现。而服务端的实现遍布各大服务端编程语言,甚至连一些小众编程语言如 D 和 R 都有对应的实现。 GraphQL 的一些实在场景和挑战最为出名的采纳 GraphQL 的例子,莫过于 GitHub 的 GraphQL API 了。 在拥抱 GraphQL 之前,GitHub 提供了 REST API 来裸露千千万万托管我的项目所产生的丰盛数据。GitHub 的 REST API 是如此的胜利,以致于它成为了人们设计 REST API 时竞相模拟的榜样。 然而随着数据对象的变多和对象内字段的变大,REST API 开始暴露出越来越多的弊病。在服务端,因为每次调用都会产生大量的数据,GitHub 为了降低成本不得不对调用频率设置严格的限度。 ...

December 16, 2022 · 3 min · jiezi

关于apisix:APISIX-Ingress-如何支持自定义插件

摘要:本篇次要介绍了 Ingress 资源相干的语义,以及如何对 Ingress 资源进行能力的扩大。 作者:张晋涛,API7.ai 云原生技术专家,Apache APISIX PMC 成员,Apache APISIX Ingress Controller 我的项目维护者。Ingress 和 Ingress controllerKubernetes 中的 Ingress 是一种资源对象,用于定义如何从 Kubernetes 集群外拜访到 Kubernetes 集群内的服务,其中蕴含了具体的拜访规定,通常状况下客户端应用 HTTP/HTTPS 协定进行拜访。 客户端可依照 Ingress 资源定义的规定,将客户端申请路由到 Kubernetes 集群中的服务或具体的 Pod中。 以下是一个 Ingress 资源的示例: apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: apisix-gatewayspec: rules: - host: apisix.apache.org http: paths: - backend: service: name: apisix-gateway port: number: 80 path: / pathType: Exact上述示例中蕴含了以下内容: metadata.name:Ingress 资源的名称spec.rules[].host:内部拜访应用的域名spec.rules[].http.paths[].backend:定义了 Kubernetes 集群中服务的相干信息spec.rules[].http.paths[].path:定义了内部服务拜访 Kubernetes 集群中服务时应用的门路spec.rules[].http.paths[].pathType:定义了内部服务拜访 Kubernetes 集群中服务时门路的匹配规定从上述内容能够看到,Ingress 资源的语义是绝对比较简单的。Ingress 仅仅是 Kubernetes 中的一种资源定义,它自身不具备任何流量解决能力。要让 Ingress 资源失效,则必须要有 controller 来解决这些 Ingress 资源,通常这样的 controller 咱们称之为 Ingress controller。 ...

December 15, 2022 · 2 min · jiezi

关于apisix:开源浪潮下Apache-APISIX-如何成为全球最活跃-API-网关

白泽平,Apache APISIX PMC 成员,目前次要在 APISIX 和周边我的项目 APISIX Dashboard 上进行相干奉献。本文整顿自阿里云「中间件开发者 Meetup」中的议题分享。Apache APISIX 是一个高性能的、动静的、实时的 API 网关,它是基于 NGINX 和 OpenResty 进行实现的。 作为一个脱胎于 NGINX 和 OpenResty 的软件,APISIX 人造继承了 NGINX 的性能和 OpenResty 的灵活性,因而,APISIX 的性能在一众 API 网关中都是首屈一指的。 细数 Apache APISIX 劣势架构舍短取长具体来说,像 NGINX + Linux epoll 提供了高性能的网络 IO 基础设施,这些是 C 语言实现的,是动态的。而 OpenResty 则集成了 LuaJIT,它基于 NGINX 提供的生命周期钩子进行扩大,容许用户通过 Lua 代码对 NGINX 进行编程。而 LuaJIT 自身,得益于优良的 JIT 实现,它能够在运行时对代码进行 JIT 编译,当热门路上的内容被编译为机器码后,性能将能够与原生 C 语言相比。 当然,除了 NGINX 与 OpenResty 的人造个性劣势外,APISIX 自身也为性能进行了多处优化。比方没有复用 NGINX 的 location 来解决路由匹配,而是应用了基数树的形式。目前其余很多 API 网关还在应用遍历的形式解决路由,而 APISIX 则不会呈现遍历形式的重大性能消退,在路由很多时(这里指达到数千量级),它也能够提供根本安稳的匹配速度。 ...

October 13, 2022 · 2 min · jiezi

关于apisix:API-网关-Apache-APISIX-集成-CNCF-OpenFunction

在无服务时代,API 网关仍旧是治理和充分利用无服务器平台的要害。因而,Apache APISIX 社区也紧跟趋势,在过来的一年多工夫内集成了无服务器提供商,如 AWS Lambda 和 Azure Functions ,以及开源的无服务平台 Apache OpenWhisk 等。 本月,APISIX 又新增了不少生态插件,其中就包含与 OpenFunction 集成的无服务插件 openfunction。本文将介绍 Apache APISIX 新的无服务插件 openfunction,并带来更多集成细节。 Apache APISIXApache APISIX 是一个动静、实时、高性能的 API 网关,提供负载平衡、动静上游、灰度公布、服务熔断、身份认证、可观测性等丰盛的流量治理性能。Apache APISIX 不仅反对插件动静变更和热插拔,而且领有泛滥实用的插件。 OpenFunctionOpenFunction 是一个云原生的开源 FaaS 平台,旨在让用户专一于本人的业务逻辑,而不用保护底层运行时环境和基础设施。 外围性能包含: 与云提供商的 BaaS 解耦可插入的架构,容许多个函数运行时同时反对同步和异步函数独特的异步函数反对,能够间接应用来自事件源的事件反对间接从函数源代码生成兼容 OCI 的容器镜像。灵便的从 0 到 n 的主动缩放反对基于事件源的特定指标的高级异步性能主动缩放通过引入 Dapr 简化同步和异步性能的 BaaS 集成K8s Gateway API 提供的高级函数入口和流量治理(进行中)灵便易用的事件治理框架集成原理该插件会将正在进行的申请转发到用户定义的特定 URI,并提供相干的受权细节、申请头、申请注释和查问字符串,而后将响应返回给原始的客户端。 无服务具备高度可扩大和成本低等劣势,应用这种形式部署业务服务可能极大升高资源应用和投入老本。如果你正在应用 OpenFunction 作为无服务平台,你就能够应用 Apache APISIX 去代理这些函数的申请,为函数申请追加服务治理的能力。 正如前文提到的 OpenFunction 外围性能,K8s Gateway API 提供了函数的入口。OpenFunction 的认证形式取决于 K8s 网关,且随网关的抉择而变动。因而这个插件只反对规范的 Basic Auth 认证形式。 ...

October 12, 2022 · 2 min · jiezi

关于apisix:代理类型升级APISIX-支持-Kafka-作为上游

Apache Kafka 是一个开源流解决平台,是一种高吞吐量的分布式公布订阅音讯零碎,能够解决消费者在网站中的所有动作流数据,其所有性能都是以分布式、高度可扩大、弹性、容错和平安的形式提供的。 在 Apache APISIX 2.14 版本中公布了一个新性能,即提供 Kafka 类型的上游,用户能够通过在路由中配置 scheme 为 Kafka 的上游开启 Kafka 消费者性能,从而在各种环境中实现音讯订阅。 本文将介绍 Kafka 公布订阅性能及 kafka-proxy 插件的应用细节,为大家出现如何将 APISIX 与 Kafka 联合应用在浏览器等连贯受限的场景,实现对 Kafka 中音讯的生产。 原理Kafka 应用自定义的 TCP 协定实现 Broker 与消费者之间的通信。在 Apache APISIX 中,你能够通过四层代理实现这部分的代理,但对于终端用户(如浏览器等)与 Broker 通信这种无奈间接应用 TCP 连贯的场景,则没有方法进行很好的反对。 而当初,客户端可通过 WebSocket 连贯到 APISIX,在 APISIX 外部建设与 Kafka 的连贯,进而解决客户端的命令(如获取偏移量、获取音讯等)。通过 WebSocket 的连贯,能够防止在浏览器这种无奈间接应用 TCP 连贯的场景中从 Kafka 中拉取音讯。 通过上述流程图能够看到,这里外部应用自定义的 Protobuf 协定作为通信协议,通过便捷的编译过程,使其后续可在多种语言的程序中应用。在过程中,次要通过 ListOffsets 命令来获取偏移量,通过 Fetch 命令来获取音讯。 除此之外,因为 Kafka 消费者的性能是基于 APISIX 的 PubSub 框架,所以你也能够基于该框架扩大其余音讯零碎,实现更丰盛的公布订阅能力。 ...

June 28, 2022 · 2 min · jiezi

关于apisix:APISIX-助力中东社交软件实现本地化部署

Beeto 是一款面向中东市场主打阿拉伯语言的社交软件,在产品设计和技术架构上都是本地化落地施行的。曾在沙特 iOS 利用商店 Top Charts 榜单中超过老牌社交巨头 Facebook,位列第 4 名。其实中东在互联网畛域算是倒退较成熟的区域,在社交网络中的沉闷用户渗透率十分高,尤其在沙特区域,2019 年的互联网用户就曾经达到了 90%,沉闷用户渗透率在 2020 年就曾经排到了第 9 位。 互联网市场的成熟,带来的是国际性软件的笼罩,像 WhatsApp、YouTube 和 Instagram 等都是当地支流的社交软件。但回过头看,你会发现在中东地区根本没有相似国内微博这种本地化的社交类软件。所以在 Beeto 产品诞生之前,就瞄准了「中东互联网成熟、渗透率高,但本地化少」的方向,并开启了专一「本地化特色」的产品筹备。 Beeto 在中东其实对标的是 Twitter 和 Facebook 这种 Feed 流利用,所以在业务架构的部署上一开始就布局好了绝对残缺的框架。比方满足社交属性的关系互动、内容生产(图文、视频直播、同城广告等),还有金融类和服务类的打赏、提现、投票和抽奖等等各种业务,甚至包含平台侧的监管、内容平安审核等要求。 在前文咱们也提到过,中东市场的互联网成熟度势必对一个产品的公布有着高质量的要求,所以想要切实打入中东市场,不可能先做一个简略性能的利用间接上线。 所以 Beeto 的第一版业务架构就是一个残缺,并且合乎支流社交软件应该具备的各种功能集一身的产品。同时 Beeto 的指标也很明确,就是要用「本地化特色」成为中东地区最大的阿拉伯语社交平台和最好的阿拉伯语社区。 Beeto 架构设计中的痛点Beeto 产品要走本地化模式,除了在业务层面要满足当地现有的社交需要外,在技术层面也须要做一些本地化操作,比方服务部署和数据存储等都要要本地化。相熟微博或者 Twitter 的技术敌人应该都晓得,想要实现这种宏大信息流产品的背地,其实是须要几十甚至上百个架构零碎来合作实现的。 单体服务架构设计 目前 Beeto 产品的业务次要可划分为以上这些。这些业务的实现其实都须要在中东地区进行本地化部署。如果把每项业务依照服务进行拆分的话,那每个服务其实就是独立的单体架构。 上图展现的是一个很常见的部署架构。拿 Beeto 的 Feed 流服务来说,想要实现用户浏览 Feed 流需要,就必须要反对公网拜访,即南北向流量的拜访;同时 Feed 流服务还会提供一些相似话题业务等模式的外部调用,即东西向流量调用。所以整体的服务属性是明确反对内部和外部两种调用模式,用户流量通过七层负载平衡,调配到不同的服务器再调用不同的存储资源,东西向也相似。整个七层集群负责解决南北和东西向流量,进行负载平衡、平安认证和节点监控。 当把多项业务的的服务组合在一起时,就会造成如下所示的整体架构: 能够看到,无论是适配层、业务层还是根底服务层,都存在着若干服务。每项服务的部署架构都领有前文提到的单体架构细节,所以两头就会存在着若干个七层集群,这其实曾经是一套十分宏大且简单的零碎架构了。 但因为目前 Beeto 产品还处于守业阶段,尤其是产品自身在中东外乡落地,而研发人员在中国的情景,依照上述这个规模部署,须要投入十分大的服务器老本和保护老本。同时前期随着业务减少,单体服务的数量势必也会一直减少,不论在老本还是运维操作上都会变得更难管制。 多服务落地艰难除了上述提到的架构部署简单外,其实在集群外部服务之间的调用也是非常复杂的。 南北向流量扩散到各个服务池,东西向流量也交织在各个服务之间,这些服务的调用关系之间错综相交。对每一套服务而言都须要去保护这些调用关系,从而导致调用链路不清晰且不好治理。 除了调用关系简单外,每个服务之间还存在技术栈的差别。比方在调用协定上,有些服务提供的是 HTTP,有些则是 RPC;而在开发语言上,则会呈现 Java、Go 等多语言混合的状况。 ...

June 15, 2022 · 1 min · jiezi

关于apisix:API-网关-Apache-APISIX-在-AWS-Graviton3-上的安装与性能测试

目前 Apache APISIX 进行了 ARM64 平台下的残缺回归测试,修复了构建脚本在 ARM64 平台下的一些兼容性问题。本文通过简要的部署测试形容,出现了在 AWS Graviton 环境下,无论是稳定性还是流量解决层面,APISIX 的体现都非常亮眼。 背景AWS 在 2022 年 5 月底公布了最新的基于 ARM 架构的 AWS Graviton 系列处理器——AWS Graviton3。据 AWS 官网数据显示,与 Graviton2 处理器相比,基于当先的 DDR5 内存技术,Graviton3 处理器可提供高达 25% 的性能晋升、高达 2 倍的浮点性能以及 50% 的内存访问速度;在性能与同类 EC2 实例雷同的状况下,Graviton3 还可缩小 60% 的能源。那么理论数据会怎么呢?让咱们以 CPU 密集型的 API 网关为例,来看看 AWS Graviton3 的体现如何。在这里咱们应用 Apache APISIX 在 AWS Graviton2(C6g)和 AWS Graviton3(C7g) 两种服务器环境下进行性能比照测试。Apache APISIX 是一个云原生、高性能、可扩大的 API 网关。基于 NGNIX+LuaJIT 和 etcd 来实现,和传统 API 网关相比,APISIX 具备动静路由和插件热加载的特点,特地适宜云原生架构下的 API 治理。AWS 在 2022 年 5 月底公布了最新的基于 ARM 架构的 AWS Graviton 系列处理器——AWS Graviton3。据 AWS 官网数据显示,与 Graviton2 处理器相比,基于当先的 DDR5 内存技术,Graviton3 处理器可提供高达 25% 的性能晋升、高达 2 倍的浮点性能以及 50% 的内存访问速度;在性能与同类 EC2 实例雷同的状况下,Graviton3 还可缩小 60% 的能源。那么理论数据会怎么呢?让咱们以 CPU 密集型的 API 网关为例,来看看 AWS Graviton3 的体现如何。在这里咱们应用 Apache APISIX 在 AWS Graviton2(C6g)和 AWS Graviton3(C7g) 两种服务器环境下进行性能比照测试。Apache APISIX 是一个云原生、高性能、可扩大的 API 网关。基于 NGNIX+LuaJIT 和 etcd 来实现,和传统 API 网关相比,APISIX 具备动静路由和插件热加载的特点,特地适宜云原生架构下的 API 治理。AWS 在 2022 年 5 月底公布了最新的基于 ARM 架构的 AWS Graviton 系列处理器——AWS Graviton3。据 AWS 官网数据显示,与 Graviton2 处理器相比,基于当先的 DDR5 内存技术,Graviton3 处理器可提供高达 25% 的性能晋升、高达 2 倍的浮点性能以及 50% 的内存访问速度;在性能与同类 EC2 实例雷同的状况下,Graviton3 还可缩小 60% 的能源。那么理论数据会怎么呢?让咱们以 CPU 密集型的 API 网关为例,来看看 AWS Graviton3 的体现如何。在这里咱们应用 Apache APISIX 在 AWS Graviton2(C6g)和 AWS Graviton3(C7g) 两种服务器环境下进行性能比照测试。Apache APISIX 是一个云原生、高性能、可扩大的 API 网关。基于 NGNIX+LuaJIT 和 etcd 来实现,和传统 API 网关相比,APISIX 具备动静路由和插件热加载的特点,特地适宜云原生架构下的 API 治理。 ...

June 8, 2022 · 2 min · jiezi

关于apisix:APISIX-jwtauth-插件存在错误响应中泄露信息的风险公告CVE202229266

问题形容jwt-auth 插件存在泄露用户秘钥的平安问题,因为从依赖库 lua-resty-jwt 返回的错误信息中蕴含敏感信息。 影响版本Apache APISIX 2.13.0 及其之前全副版本 解决方案请立刻降级至 Apache APISIX 2.13.1 及以上版本。如果不不便更新版本,请在 Apache APISIX 上装置对应版本的补丁包,实现重构,以绕过该破绽(补丁包装置且失效后,调用方接管到的错误信息将为修复后的错误信息,不再蕴含敏感信息)。以下补丁包实用于 LTS 2.13.x 或主版本: https://github.com/apache/api...https://github.com/apache/api...https://github.com/apache/api...以下补丁包实用于最新的 LTS 2.10.x 版本: https://github.com/apache/api...https://github.com/apache/api...破绽详情破绽优先级:紧急 破绽公开工夫:2022 年 4 月 20 日 CVE 详细信息:https://nvd.nist.gov/vuln/det... 贡献者简介该破绽由金蝶软件(中国)有限公司的唐忠远、谢鸿峰和陈兵发现并报告,感激各位对 Apache APISIX 社区的奉献。

April 22, 2022 · 1 min · jiezi

关于apisix:Apache-APISIX-2130-发布

间隔 Apache APISIX 上一次公布 LTS 版本曾经过来了大半年的工夫,明天,Apache APISIX 社区带来了一个全新的 LTS 版本——2.13.0。该 LTS 版本不仅性能更加稳固,而且反对了更多的可观测性、服务发现插件和更欠缺的多语言开发体系。 如果你在谋求整体稳定性的同时,也想尝试一下新性能,无妨思考将现有的 Apache APISIX 降级到 2.13.0。后续社区也会在 2.13.0 版本的根底上公布一系列 patch 版本。 性能更新新变动:不再默认裸露 API在 2.13.0 之前的版本中,咱们容许插件注册可供客户端调用的 API。例如,jwt-auth 插件会注册一个 JWT 签名的接口,客户端能够拜访该接口,以生成用于校验的签名。但这个设计有一个潜在的缺点——因为裸露进去的是接口而不是路由,因而无奈像看待路由一样为其增强平安防护。尽管现有的机制容许用户通过编写对应的 plugin interceptor 来拦挡接口拜访,但这种形式依然存在安全隐患。 所以从 2.13.0 版本开始,咱们决定做出重大变更,不再默认裸露 API。如果用户须要裸露接口,则须要通过 public-api 插件将接口绑定到对应的路由上。这种形式会带来两个益处: 注册的 API 会有更高的能见度,目前注册的 API 只有通过显示配置才会失效,拜访形式也是由用户自定义。容许采纳更多的平安防护选项,注册的 API 和路由领有同样的权限管制。当然,2.13.0 版本还有其余的新变动,比方修复了历史版本的不合理行为。如需理解具体优化信息,请查阅 2.13.0 Changelog。 新性能:可观测性层面对接更多的监控体系作为 API 网关,Apache APISIX 始终致力于连贯更多的服务,买通更多的可观测性上下游。咱们在每个版本都会为此添砖加瓦,2.13.0 版本也不例外。 这次咱们新增了一个 tracing 插件:**opentelemetry**,容许发送 OpenTelemetry tracing 数据到配置的 collector。上面简略通过一个示例来看一下。 在动态配置外面设置了 collector: plugin_attr: opentelemetry: resource: service.name: APISIX tenant.id: business_id collector: address: "127.0.0.1:4317" batch_span_processor: drop_on_queue_full: false max_queue_size: 6 batch_timeout: 2 inactive_timeout: 1 max_export_batch_size: 2之后就能够在特定的路由上开启 tracing: ...

March 29, 2022 · 2 min · jiezi

关于apisix:可观测性能力升级Apache-APISIX-集成-OpenTelemetry

本文为您介绍 Apache APISIX opentelemetry 插件概念以及如何如何开启和部署 opentelemetry 插件。 背景信息Apache APISIX 是一个动静、实时、高性能的 API 网关,提供负载平衡、动静上游、灰度公布、服务熔断、身份认证、可观测性等丰盛的流量治理性能。作为 API 网关,Apache APISIX 不仅领有泛滥实用的插件,而且反对插件动静变更和热插拔。 OpenTelemetry 是一个开源的遥测数据采集和解决零碎,它不仅提供了各种 SDK 用于利用端遥测数据的收集和上报,以及数据收集端用于数据接管、加工和导出,还反对通过配置导出到任意一个或者多个曾经适配 OpenTelemetry Exporter 的后端,比方 Jaeger、Zipkin、OpenCensus 等。您能够在 opentelemetry collector contrib 库中查看曾经适配 OpenTelemetry Collector 的插件列表。 插件介绍Apache APISIX opentelemetry 插件是基于 OpenTelemetry 原生规范(OTLP/HTTP)实现的 Tracing 数据采集,并通过 HTTP 协定发送至 OpenTelemetry Collector。该性能将在 Apache APISIX 2.13.0 版本中上线反对。 因为 OpenTelemetry 的 Agent/SDK 与后端实现无关,当利用集成了 OpenTelemetry 的 Agent/SDK 之后,用户可能在利用侧无感知的状况下轻松地、自在地变更可观测性后端服务,比方从 Zipkin 切换成 Jaeger。 opentelemetry 插件在 Apache APISIX 中集成了 OpenTelemetry Agent/SDK,能够实现采集被追踪的申请生成 trace 后转发到 OpenTelemetry Collector。 ...

March 8, 2022 · 3 min · jiezi

关于apisix:Apache-APISIX-集成-Open-Policy-Agent

Open Policy Agent(OPA)是一个开源的轻量级通用策略引擎,能够代替软件中内置的策略功能模块,帮忙用户实现服务与策略引擎的解耦。得益于 OPA 欠缺的生态系统,用户能够很容易地集成 OPA 和其余服务,例如程序库、HTTP API 等。 如下图所示,OPA 首先通过策略语言 Rego 形容策略;而后通过 JSON 存储策略数据,之后用户就能够发送查问申请。收到查问申请后,OPA 将联合策略、数据和用户输出的查问申请内容生成策略决策,并将决策发送至服务。 插件介绍Apache APISIX 提供了一个 opa 插件,用户能够应用这个插件,便捷地将 OPA 提供的策略能力引入到 Apache APISIX,实现灵便的身份认证与准入管制性能。 将 opa 插件配置在路由上后,Apache APISIX 会在解决响应申请时,将申请信息、连贯信息等组装成 JSON 数据,并将其发送到策略决策 API 地址。只有在 OPA 中部署的策略合乎 Apache APISIX 设定的数据标准,就能够实现如通过申请、拒绝请求、自定义状态码、自定义响应头、自定义响应头等性能。 本文以 HTTP API 为例为大家介绍 opa 插件,并具体阐明如何将 Apache APISIX 与 OPA 进行集成,实现后端服务的认证受权解耦。 如何应用步骤一:搭建测试环境应用 Docker 构建 OPA 服务。# 应用 Docker 运行 OPAdocker run -d --name opa -p 8181:8181 openpolicyagent/opa:0.35.0 run -s创立 example 策略。# 创立策略curl -XPUT 'localhost:8181/v1/policies/example' \--header 'Content-Type: text/plain' \--data-raw 'package exampleimport input.requestimport data.usersdefault allow = falseallow { # 具备名为 test-header 值为 only-for-test申请头 request.headers["test-header"] == "only-for-test" # 申请办法为 GET request.method == "GET" # 申请门路以 /get 结尾 startswith(request.path, "/get") # GET 参数 test 存在且不等于 abcd request.query["test"] != "abcd" # GET 参数 user 存在 request.query["user"]}reason = users[request.query["user"]].reason { not allow request.query["user"]}headers = users[request.query["user"]].headers { not allow request.query["user"]}status_code = users[request.query["user"]].status_code { not allow request.query["user"]}'创立 users 数据。# 创立测试用户数据curl -XPUT 'localhost:8181/v1/data/users' \--header 'Content-Type: application/json' \--data-raw '{ "alice": { "headers": { "Location": "http://example.com/auth" }, "status_code": 302 }, "bob": { "headers": { "test": "abcd", "abce": "test" } }, "carla": { "reason": "Give you a string reason" }, "dylon": { "headers": { "Content-Type": "application/json" }, "reason": { "code": 40001, "desc": "Give you a object reason" } }}'步骤二:创立路由并开启 opa 插件curl -XPUT 'http://127.0.0.1:9080/apisix/admin/routes/r1' \--header 'X-API-KEY: <api-key>' \--header 'Content-Type: application/json' \--data-raw '{ "uri": "/*", "methods": [ "GET", "POST", "PUT", "DELETE" ], "plugins": { "opa": { "host": "http://127.0.0.1:8181", "policy": "example" } }, "upstream": { "nodes": { "httpbin.org:80": 1 }, "type": "roundrobin" }}'步骤三:测试申请# 容许申请curl -XGET '127.0.0.1:9080/get?test=none&user=dylon' \ --header 'test-header: only-for-test' { "args": { "test": "abcd1", "user": "dylon" }, "headers": { "Test-Header": "only-for-test", "with": "more" }, "origin": "127.0.0.1", "url": "http://127.0.0.1/get?test=abcd1&user=dylon"}# 拒绝请求并重写状态码和响应头curl -XGET '127.0.0.1:9080/get?test=abcd&user=alice' \ --header 'test-header: only-for-test'HTTP/1.1 302 Moved TemporarilyDate: Mon, 20 Dec 2021 09:37:35 GMTContent-Type: text/htmlContent-Length: 142Connection: keep-aliveLocation: http://example.com/authServer: APISIX/2.11.0# 拒绝请求并返回自定义响应头curl -XGET '127.0.0.1:9080/get?test=abcd&user=bob' \ --header 'test-header: only-for-test'HTTP/1.1 403 ForbiddenDate: Mon, 20 Dec 2021 09:38:27 GMTContent-Type: text/html; charset=utf-8Content-Length: 150Connection: keep-aliveabce: testtest: abcdServer: APISIX/2.11.0# 拒绝请求并返回自定义响应(字符串)curl -XGET '127.0.0.1:9080/get?test=abcd&user=carla' \ --header 'test-header: only-for-test'HTTP/1.1 403 ForbiddenDate: Mon, 20 Dec 2021 09:38:58 GMTContent-Type: text/plain; charset=utf-8Transfer-Encoding: chunkedConnection: keep-aliveServer: APISIX/2.11.0Give you a string reason# 拒绝请求并返回自定义响应(JSON)curl -XGET '127.0.0.1:9080/get?test=abcd&user=dylon' \ --header 'test-header: only-for-test'HTTP/1.1 403 ForbiddenDate: Mon, 20 Dec 2021 09:42:12 GMTContent-Type: application/jsonTransfer-Encoding: chunkedConnection: keep-aliveServer: APISIX/2.11.0{"code":40001,"desc":"Give you a object reason"}补充:敞开插件得益于 Apache APISIX 的动态化个性,只须要移除路由配置中 opa 插件相干配置并保留,即可敞开路由上的 OPA 插件。 ...

February 23, 2022 · 2 min · jiezi

关于apisix:Apache-APISIX-社区双周报-功能亮点更新进行中

导语Apache APISIX 从开源第一天就以社区形式成长,迅速成为全世界最沉闷的开源 API 网关我的项目。这些成就,离不开社区小伙伴们的共同奋斗。 “独行者速,众行者远”。Apache APISIX 社区周报心愿能够帮忙社区小伙伴们更好地把握 Apache APISIX 社区的每周停顿,不便大家参加到 Apache APISIX 社区中来。 咱们还整顿了一些适宜新来社区的小伙伴们加入的 Issue !感兴趣的同学们,走过路过不要错过! 贡献者统计 Good First IssueIssue #5861 链接: https://github.com/apache/api... 问题形容:有些状况下,残缺的 CI "linux\_openresty" 须要 50 分钟能力实现: - linux_openresty 咱们能够把它分成多个局部,这样能够缩小最大的单项工作工夫。 能够在下方中传递一个环境变量作为测试文件的范畴: FLUSH_ETCD=1 PERL5LIB=.:$PERL5LIB prove -Itest-nginx/lib -r tIssue #5900 链接: https://github.com/apache/api... 问题形容:应用 base-auth 插件时,不想将 Authentication 头传递给上游。 上游不须要感知这些身份验证头。 如下所示,应用 proxy-rewrite 插件重写 Authentication 头部: "plugins": { "basic-auth": {}, "proxy-rewrite": { "headers": { "Authorization": "" } } },咱们能够在 basic-auth 插件中增加一个配置来暗藏身份验证头。这样的话,应用这些插件会更不便。同理,key-auth 插件也是。 ...

January 6, 2022 · 1 min · jiezi

关于apisix:Apache-APISIX-结合-Authing-实现集中式身份认证管理

我的项目介绍对于 Apache APISIXApache APISIX 是一个动静、实时、高性能的 API 网关,提供负载平衡、动静上游、灰度公布、服务熔断、身份认证、可观测性等丰盛的流量治理性能。Apache APISIX 不仅反对插件动静变更和热插拔,而且领有泛滥实用的插件。Apache APISIX 的 OpenID Connect 插件反对 OpenID Connect 协定,用户能够应用该插件让 Apache APISIX 对接 Authing 服务,作为集中式认证网关部署于企业中。 对于 AuthingAuthing 是国内首款以开发者为核心的全场景身份云产品,集成了所有支流身份认证协定,为企业和开发者提供欠缺平安的用户认证和拜访治理服务。以「API First」作为产品基石,把身份畛域所有罕用性能都进行了模块化的封装,通过全场景编程语言 SDK 将所有能力 API 化提供给开发者。同时,用户能够灵便的应用 Authing 凋谢的 RESTful APIs 进行性能拓展,满足不同企业不同业务场景下的身份治理需要。 什么是集中式身份认证传统身份认证在传统认证模式下,各个后端应用服务须要独自开发性能以反对身份认证性能,例如与身份提供商进行交互、获取用户的身份信息等性能。 集中式身份认证 与传统认证模式不同,集中身份认证模式把用户认证从应用服务中抽离了进去。以 Apache APISIX 为例,集中认证的流程如上图所示:首先由用户发动申请(request),而后由前置的网关负责用户认证流程,与身份提供方对接,向身份提供方发送身份认证(authorization)申请。身份提供方返回用户身份信息(user info)。网关实现用户身份辨认后,将用户身份信息通过申请头的模式转发至后端利用。 集中式身份认证治理的长处相比拟传统认证模式,集中认证模式下有如下长处: 简化利用开发流程,升高开发利用工作量和保护老本,防止各个利用反复开发身份认证逻辑。进步业务的安全性,集中身份认证模式在网关层面可能及时拦挡未经身份认证的申请,爱护后端的利用。同时联合 Authing 弱小的身份认证治理性能,可实现如下性能: 通过控制台对身份认证服务进行生命周期治理,包含创立、启用、禁用等。提供实时、可视化的利用监控,包含:接口申请次数、接口调用提早和接口错误信息,并且进行实时告警告诉。集中式日志,能够不便地查看用户登录、登出以及对利用的调整和批改信息。更多具体内容可参考 Authing 利用集成网关。 如何应用步骤一:配置 Authing1. 登录 Authing 账号,抉择自建利用,并填入利用名称和认证地址。如果你没有 Authing 账号,请拜访 Authing 官网,单击右上角 “登录/注册”,注册一个 Authing 账号。 2. 单击“创立”,创立一个 Authing 利用。 3. 设置登录和登出的跳转 URL。在认证过程中,Authing 将会回绝除配置以外的回调 URL,因为本次为本地测试,所以将登录回调 URL 和登出回调 URL 都设置为 APISIX 拜访地址 http://127.0.0.1:9080/ 。 ...

January 5, 2022 · 3 min · jiezi

关于apisix:Apache-APISIX-Dashboard-未授权访问漏洞公告CVE202145232

问题形容攻击者无需登录 Apache APISIX Dashboard 即可拜访某些接口,从而进行未受权更改或获取 Apache APISIX Route、Upstream、Service 等相干配置信息,并造成 SSRF、攻击者搭建歹意流量代理和任意代码执行等问题。 影响版本Apache APISIX Dashboard 2.7 - 2.10 版本 解决方案请及时更新至 Apache APISIX Dashboard 2.10.1 及以上版本。 平安倡议倡议用户及时更改默认用户名与明码,并限度起源 IP 拜访 Apache APISIX Dashboard。 破绽详情破绽公开工夫:2021 年 12 月 27 日 CVE 详细信息:https://nvd.nist.gov/vuln/det... 贡献者简介该破绽由源堡科技平安团队的朱禹成发现,并向 Apache 软件基金会上报该破绽。感激各位对 Apache APISIX 社区的奉献。 对于 Apache APISIXApache APISIX 是一个动静、实时、高性能的开源 API 网关,提供负载平衡、动静上游、灰度公布、服务熔断、身份认证、可观测性等丰盛的流量治理性能。 Apache APISIX 能够帮忙企业疾速、平安地解决 API 和微服务流量,包含网关、Kubernetes Ingress 和服务网格等。目前已被普华永道数据安全团队、腾讯蓝军、安全河汉实验室、爱奇艺 SRC 和源堡科技平安团队等业余网络安全机构测试,并给予了高度认可。 Apache APISIX 落地用户(仅局部) Apache APISIX GitHub:https://github.com/apache/apisixApache APISIX 官网:https://apisix.apache.org/Apache APISIX 文档:https://apisix.apache.org/zh/...

December 29, 2021 · 1 min · jiezi

关于apisix:Apache-APISIX-社区双周报-功能亮点更新进行中

导语Apache APISIX 从开源第一天就以社区形式成长,迅速成为全世界最沉闷的开源 API 网关我的项目。这些成就,离不开社区小伙伴们的共同奋斗。 “独行者速,众行者远”。Apache APISIX 社区周报心愿能够帮忙社区小伙伴们更好地把握 Apache APISIX 社区的每周停顿,不便大家参加到 Apache APISIX 社区中来。 咱们还整顿了一些适宜新来社区的小伙伴们加入的 Issue !感兴趣的同学们,走过路过不要错过! 贡献者统计 Good First IssueIssue #5795 链接: https://github.com/apache/api... 问题形容:在某些场景下,咱们只须要装置 etcd。但 install\_dependencies.sh 不反对这个性能,它默认装置 APISIX 的所有依赖项。咱们能够在 install\_dependencies.sh 中独自反对装置 etcd 吗? 例如: bash install_dependencies.sh etcdIssue #5756 链接: https://github.com/apache/api... 问题形容:目前的 OpenWhisk 插件会从 Apache OpenWhisk 获取响应,并间接返回,而不进行解析。这个申请可能蕴含简单的数据,重写状态码、响应头和响应体。咱们须要解析它并扭转 APISIX 的响应。 像这样的简单数据: { "statusCode": 401, "headers": { "addition-header": "a-header" }, "body": "xxx" | {"xxx":"xxx"}}咱们须要确定 OpenWhisk 响应是否蕴含它们,如果它们存在,就把它们写入 APISIX 响应。 Issue #5634 ...

December 21, 2021 · 2 min · jiezi

关于apisix:再下一城两大社区携手打造-API-日志监控新利器

Apache RocketMQ 自 2016 年走入寰球开发者视线以来,目前已倒退成为电商、金融、教育、科技等多畛域技术中台的外围数据底座。 据不齐全统计,国内用户(包含金融、保险、财产和券商等各畛域百强企业)超过 70% 的企业都在外围利用链路上规模化部署了 Apache RocketMQ,包含寰球 5 大云厂商也纷纷上线了无关 Apache RocketMQ 的云产品服务。 除了惯例利用于外围业务音讯的解决,也有十分多的公司开始应用 Apache RocketMQ 进行日志解决与剖析。 插件介绍为了满足宽广企业用户对于日志解决的需要,Apache APISIX 公布了基于 Apache RocketMQ 的日志插件 rocketmq-logger,反对将 API 接口申请日志以 JSON 模式推送给 RocketMQ 集群。 该插件应用 RocketMQ 原生反对的 TCP 协定,通过 OpenResty 提供的无阻塞 TCP Socket API,实现了高并发、高性能拜访等性能个性。 同时,应用 rocketmq-logger 插件发送的 API 日志格局与其余日志插件雷同,同样反对批量发送日志、自定义日志格局、反对重试等性能。 此外,该插件还反对 TLS 加密传输,以及配置 AK、SK 认证形式拜访 Apache RocketMQ,满足用户对于数据安全的需要。 如何应用启动 RocketMQ首先在本地利用下述命令来启动 RocketMQ,具体具体步骤可参考官网文档。 wget https://dlcdn.apache.org/rocketmq/4.9.2/rocketmq-all-4.9.2-bin-release.zipunzip rocketmq-all-4.9.2-bin-release.zipcd rocketmq-4.9.2/nohup sh bin/mqnamesrv &nohup sh bin/mqbroker -n 127.0.0.1:9876 -c conf/broker.conf &在 Apache APISIX 中开启插件在生产环境中只需执行一条命令,就能够为指定路由启用 rocketmq-logger 插件。 ...

December 16, 2021 · 1 min · jiezi

关于apisix:百万级-QPS-业务新宠金山办公携手-Apache-APISIX-打造网关实践新体验

背景介绍金山办公是目前国内最大的办公软件厂商,旗下产品波及 WPS、金山文档、稻壳等。在业务层面上由数千个业务以容器化部署在外部云原生平台,目前 Apache APISIX 在金山办公次要负责为中台部门业务(百万级 QPS )提供相干网关服务。 金山办公的网关演进在 1.0 阶段时,咱们对于 API Gateway 的个性没有什么强需要,只是想解决运维问题,所以基于 OpenResty 与 Lua 进行了自研,实现了动静 Upstream、黑名单、waf 等性能。 尽管自研胜利,但在性能上却遗留了一些问题,比方: 动态化只做到到 Upstream 维度须要 Reload 能力带出新域名底层设计简略,性能扩大能力不强后续咱们对 API Gateway 性能有了强需要后,开始去调研相干的开源网关产品。 为什么抉择了 Apache APISIX?实际上 2019 年年底开始调研网络产品时,Kong 算是一个比拟风行的抉择。 但后续通过测试发现,Kong 的性能不太能满足咱们的需要,同时咱们认为 Kong 的架构不是很优良:因为其配置核心选用 PostgreSQL,所以 Kong 只能利用非事件驱动去更新路由,依赖每个节点去刷新路由。 进一步调研时,咱们发现了 Apache APISIX。首先 Apache APISIX 的性能比 Kong 强,在 Apache APISIX 的 GitHub Readme 中有个十分具体的比照图,列出了两者的性能测试差距,这与咱们本人测试下来的数据基本一致。 更多对于 Apache APISIX 与 Kong 的性能测试数据参考,能够查阅:https://gist.github.com/membp...在架构方面,Apache APISIX 的 etcd 配置对咱们而言是一项更优的抉择。 当然,最次要的起因是咱们感觉社区也很重要。社区如果沉闷,在版本更新迭代、问题解决和性能优化上的速度就会很快。从 GitHub 和平时的邮件反馈中咱们看到了 Apache APISIX 社区的沉闷,为产品性能和稳定性提供了强有力的保障。 ...

December 9, 2021 · 2 min · jiezi

关于apisix:想在-KubeSphere-中进行自定义监控来瞧瞧这

11月初,KubeSphere 公布了 3.2.0 版本,新版本为我的项目网关增配了整套监控及治理页面,同时引入了集群网关来提供集群层面全局的 Ingress 网关能力。 为了让用户更理解如何在新版 KubeSphere 中部署应用第三方 Ingress Controller,本文将以 Apache APISIX Ingress Controller 为例,为大家展现通过 KubeSphere 疾速为 Kubernetes 集群应用不同类型的网关并进行状态监控。 筹备工作装置 KubeSphere装置 KubeSphere 有两种办法: 在 Linux 上间接装置在已有 Kubernetes 中装置[2]KubeSphere 最小化装置版本曾经蕴含了监控模块,因而不须要额定启用,能够通过「零碎组件」页面中的「监控」标签页确认装置状态。 部署 httpbin 演示利用因为须要演示网关的访问控制能力,咱们必须要先有一个能够拜访的利用作为网关的后盾服务。这里咱们应用 httpbin.org 提供的 kennethreitz/httpbin 容器利用作为演示利用。 在 KubeSphere 中,咱们能够先创立新的我的项目或应用已有的我的项目,进入我的项目页面后,抉择「利用负载」下的「服务」间接创立无状态工作负载并生成配套服务。 应用 kennethreitz/httpbin 容器默认的 80 端口作为服务端口,创立实现后确保在「工作负载」和「服务」页面下都能够看到 httpbin 的对应条目,如下图所示。 ### 我的项目网关细节补充 我的项目网关是 KubeSphere 3.0 之后上线的性能:KubeSphere 我的项目中的网关是一个 NGINX Ingress 控制器。KubeSphere 内置用于 HTTP 负载平衡的机制称为利用路由,它定义了从内部到集群服务的连贯规定。如需容许从内部拜访服务,用户可创立路由资源来定义 URI 门路、后端服务名称等信息。 承接上文中已部署的 httpbin 服务项目,在「我的项目设置」中关上「网关设置」页面,而后执行「开启网关」操作。不便起见,间接抉择 NodePort 作为「拜访形式」即可。 ...

December 7, 2021 · 4 min · jiezi

关于apisix:Apache-APISIX-社区双周报-11151130-功能亮点更新进行中

导语Apache APISIX 从开源第一天就以社区形式成长,迅速成为全世界最沉闷的开源 API 网关我的项目。这些成就,离不开社区小伙伴们的共同奋斗。 “独行者速,众行者远”。Apache APISIX 社区周报心愿能够帮忙社区小伙伴们更好地把握 Apache APISIX 社区的停顿,不便大家参加到 Apache APISIX 社区中来。 咱们还整顿了一些适宜新来社区的小伙伴们加入的 Issue !感兴趣的同学们,走过路过不要错过! 贡献者统计 Good First IssueIssue #5451 链接: https://github.com/apache/api... 问题形容: Nginx 自带的响应内容替换库能够替换部分内容,如下:(http://nginx.org/en/docs/http...\_http\_sub\_module.html) sub_filter '<a href="http://127.0.0.1:8080/' '<a href="https://$host/';有个反对正则替换的库(印象中 Openresty 已默认反对):ngx\_http\_substitutions\_filter\_module,能够通过正则表达式来替换内容: subs_filter_types text/html text/css text/xml;subs_filter st(\d*).example.com $1.example.com ir;subs_filter a.example.com s.example.com;subs_filter http://$host https://$host;然而 APISIX 的 response-rewrite 插件文档,如同只能反对残缺替换,相当于间接将所有响应都换成插件设置的返回,并不反对局部内容替换: curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{ "methods": ["GET"], "uri": "/test/index.html", "plugins": { "response-rewrite": { "body": "{\"code\":\"ok\",\"message\":\"new json body\"}", "headers": { "X-Server-id": 3, "X-Server-status": "on", "X-Server-balancer_addr": "$balancer_ip:$balancer_port" }, "vars":[ [ "status","==","200" ] ] } }, "upstream": { "type": "roundrobin", "nodes": { "127.0.0.1:80": 1 } }}'这个插件是否反对局部替换或正则替换?如果不反对,APISIX 有没有其余解决方案呢? ...

December 2, 2021 · 2 min · jiezi

关于apisix:APISIXDatadog-插件发布助力用户提高系统的可观测性

随着利用开发的复杂度减少,监控成为了利用的一个重要组成部分。及时、精确的监控既能满足疾速迭代的周期性需要,又可能确保利用的稳定性和流畅性。如何抉择一个适宜的监控,以晋升利用的可观测性,成为了每个开发者都必须面临的一道难题。 Apache APISIX 将监控和可观测性从利用中解耦了进去,给开发人员带来了一个劣势:在构建利用的时候,只须要关注业务逻辑,而 Apache APISIX 能够和开发人员选定的监控平台对接,解决可观测性的问题。 Apache APISIX 最近公布了一个新的插件:APISIX-Datadog,以提供与 Datadog 监控平台的集成。这篇文章介绍了 APISIX-Datadog 插件的实现原理及性能。 APISIX-Datadog plugin 工作原理 APISIX-Datadog 插件将其自定义指标推送到 DogStatsD server。而 DogStatsD server 通过 UDP 连贯与 Datadog agent 捆绑在一起。DogStatsD 是 StatsD 协定的一个实现。它为 Apache APISIX agent 收集自定义指标,将其聚合成一个数据点,并将其发送到配置的 Datadog server。要理解更多对于 DogStatsD 的信息,请拜访 DogStatsD 文档。 当你启用 APISIX-Datadog 插件时,Apache APISIX agent 会在每个申请响应周期向 DogStatsD server 输入以下指标: 这些指标将被发送到 DogStatsD agent,并带有以下标签。如果任何特定的标签没有适合的值,该标签将被间接省略。 APISIX-Datadog 插件保护了一个带有 timer 的buffer。当 timer 生效时,APISIX-Datadog 插件会将 buffer 的指标作为一个批量处理程序传送给本地运行的 DogStatsD server。这种办法通过重复使用雷同的 UDP 套接字,对资源的占用较少,而且因为能够配置 timer,所以不会始终让网络过载。 ...

December 2, 2021 · 2 min · jiezi

关于apisix:Apache-APISIX-2110-正式发布蓄力两月带来更多新功能

Apache APISIX 2.11.0 版本是继上次 2.10.0 LTS 版本公布后,第一个带有新性能的版本。不仅丰盛了插件库,还带来了陈腐的生态反对。具体性能详情大家能够下划查看哦。 新性能:新增基于 LDAP 的认证插件Apache APISIX 长长的认证插件名单上又增加了新成员——基于 LDAP的 ldap-auth 插件。通过该插件咱们能够买通 LDAP 的账户体系和 Apache APISIX 的 Consumer 机制。 咱们通过代码端简略进行示例展现: curl http://127.0.0.1:9080/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{ "username": "user01", "plugins": { "ldap-auth": { "user_dn": "cn=user01,ou=users,dc=example,dc=org" } }}'curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{ "methods": ["GET"], "uri": "/hello", "plugins": { "ldap-auth": { "base_dn": "ou=users,dc=example,dc=org", "ldap_uri": "localhost:1389", "uid": "cn" }, }, "upstream": { "type": "roundrobin", "nodes": { "127.0.0.1:1980": 1 } }}'在上述配置中,咱们把 user01 绑定到 route 1 上。这样咱们在拜访 route 1 时就带上了 user01 的明码,就能够通过 LDAP 的身份认证了。 ...

December 2, 2021 · 2 min · jiezi

关于apisix:云原生时代看-Apache-APISIX-如何玩转可观测性

可观测性是从零碎内部去察看零碎外部程序的的运行时状态和资源应用状况。掂量可观测性的次要伎俩包含:Metrics、Logging 和 Tracing,下图是 Metrics、Logging 和 Tracing 之间的关系。 举个例子,Tracing 和 Logging 重合的局部代表的是 Tracing 在 request 级别产生的日志,并通过 Tracing ID 将 Tracing 和 Logging 关联起来。对这份日志进行肯定的聚合运算之后,可能失去一些 Metrics。Tracing 本身也会产生一些 Metrics,例如调用量之间的关系。 Apache APISIX 的可观测性能力Apache APISIX 领有欠缺的可观测性能力:反对 Tracing 和 Metrics、领有丰盛的 Logging 插件生态、反对查问节点状态。 TracingApache APISIX 反对多种 Tracing 插件,包含:Zipkin、OpenTracing 和 SkyWalking。须要留神是:Tracing 插件默认处于敞开状态,应用前须要手动开启 Tracing 插件;Tracing 插件须要与路由或全局规定绑定,如果没有采样率的要求,倡议与全局规定绑定,这样能够防止脱漏。 Metrics在 Apache APISIX 中, Metrics 的相干信息通过 Prometheus Exporter上报,兼容 Prometheus 的数据格式。在 Apache APISIX 中应用 Prometheus Plugin 有两件事件须要留神。 第一,请尽量进步路由、服务和上游这三者名称的可读性。 Prometheus Plugin 中有一个名为 prefer_name 的参数,将这个参数的值设置为 true 时,即:prefer_name: true,如果路由、服务和上游这三者的名称可读性比拟强,这会带来一些益处:后续通过 Grafana 监控大屏展现参数的时候,不仅可能分明地展现出所有的数据,还可能清晰地通晓这些数据的起源。如果prefer_name 参数的值为 false,则只会展现资源的 ID 作为数据起源,例如 路由 ID、上游 ID,进而造成监控大屏的可读性较低的问题。 ...

November 23, 2021 · 2 min · jiezi

关于apisix:APISIX插件如何编写单元测试

参考文档: Run Test❗️❗️❗️Test Nginx 语法具体阐明example.lua local core = require("apisix.core")local pairs = pairslocal type = typelocal ngx = ngxlocal buffers = {}local schema = { type = "object", properties = { message = { description = "须要打印的日志", type = "string" } }, required = { "message" }, minProperties = 1,}local plugin_name = "example"local _M = { version = 0.1, priority = 412, name = plugin_name, schema = schema,}function _M.check_schema(conf) local ok, err = core.schema.check(schema, conf) if not ok then return false, err end core.log.info("xxxxxxxx: ", "gjx") return trueendfunction _M.log(conf, ctx) buffers.message = conf.message core.log.debug("metadata:",core.json.encode(buffers,true))endreturn _MExample.t ...

November 19, 2021 · 3 min · jiezi

关于apisix:Apache-APISIX-社区周报-|-2021-1111114

导语Apache APISIX 从开源第一天就以社区形式成长,迅速成为全世界最沉闷的开源 API 网关我的项目。这些成就,离不开社区小伙伴们的共同奋斗。 “独行者速,众行者远”。Apache APISIX 社区周报心愿能够帮忙社区小伙伴们更好地把握 Apache APISIX 社区的每周停顿,不便大家参加到 Apache APISIX 社区中来。 咱们还整顿了一些适宜新来社区的小伙伴们加入的 Issue !感兴趣的同学们,走过路过不要错过! 贡献者统计 Good First IssueIssue #5400 链接: https://github.com/apache/api... 问题形容: 七层的 HTTP 日志是存储在 acccess.log 中的,那么四层代理 stream route 如何启用日志并自定义日志门路呢?传统的 OpenResty 是能够实现的。 Issue #5417 链接: https://github.com/apache/api... 问题形容: 目前,如果用户没有指定一个 ID,Apache APISIX 会在初始化时生成一个 ID,它依赖于 lua-resty-jit-uuid 库,但没有一个明确的 seed。如下: uuid.seed() apisix_uid = uuid.generate_v4() log.notice("not found apisix uid, generate a new one: ", apisix_uid)而 jit-uuid 库通过 ngx\_lua 环境中的过程 ID 和工夫创立 seed,如下: ...

November 16, 2021 · 1 min · jiezi

关于apisix:apisix-最详细源码分析以及手撸一个-apisix

启动make run 调用 ./bin/apisix start寻找 juajit 门路 运行 /usr/local/Cellar/openresty/1.19.9.1_2/luajit/bin/luajit ./apisix/cli/apisix.lua start调用 ops.lua 里的 start 办法,初始化配置,ETCD,执行openresty 启动命令 local function start(env, ...) init(env) init_etcd(env, args) util.execute_cmd(env.openresty_args)end初始化 nginx 配置,通过读取 conf/config.yaml 配合模板 ngx_tpl.lua 生成 nginx config 文件。供 openresty(nginx)应用 local conf_render = template.compile(ngx_tpl) local ngxconf = conf_render(sys_conf) local ok, err = util.write_file(env.apisix_home .. "/conf/nginx.conf", ngxconf) if not ok then util.die("failed to update nginx.conf: ", err, "\n") end初始化 ETCD,读取ETCD集群配置,进行连贯 local version_url = host .. "/version" local errmsg local res, err local retry_time = 0 while retry_time < 2 do res, err = request(version_url, yaml_conf) -- In case of failure, request returns nil followed by an error message. -- Else the first return value is the response body -- and followed by the response status code. if res then break end retry_time = retry_time + 1 print(str_format("Warning! Request etcd endpoint \'%s\' error, %s, retry time=%s", version_url, err, retry_time)) end执行openresty 启动命令 openresty -p /usr/local/apisix -c /conf/nginx.conf ...

November 15, 2021 · 10 min · jiezi

关于apisix:Apache-APISIX-扩展指南

Apache APISIX 提供了 50 多个插件、罕用的几个负载平衡选择器,以及对支流服务发现(如 Nacos 和 DNS)的反对。API 网关和企业外部的业务严密相干,为了满足企业的业务需要,用户通常须要在 Apache APISIX 的根底上增加一些代码,以实现业务所需的性能。如何拓展 Apache APISIX 成了许多用户的独特痛点:在保障 Apache APISIX 安稳运行的前提下,如何增加业务代码,满足理论需要? 本文提供了 Apache APISIX 的拓展指南,旨在为用户提供拓展 Apache APISIX 的一些思路。因为 Apache APISIX 处于高速倒退阶段,版本迭代的频率比拟高,所以本文会以 Apache APISIX 的首个 LTS 版本 v2.10.0 为根底进行阐明。如果你应用的 Apache APISIX 版本低于 2.10.0,可能须要结合实际状况做一些变通。另外,尽管本文只解说了 HTTP 相干的逻辑,然而 TCP 相干的局部,大体上也较为类似。 拓展方向1:Rewrite 还是 Access?咱们从申请的生命周期说起:当一个申请进入到 Apache APISIX 时,首先会由 http_access_phase 这个办法进行解决。相熟 OpenResty phases 概念的读者可能会有些纳闷:OpenResty 一共有 6 个 phases,依照执行的先后顺序排列,别离是:rewrite、 access、 before_proxy、 header_filter、 body_filter 和 log,为什么一上来就是 access,rewrite 怎么不见了? Apache APISIX 插件的 phases 概念和 OpenResty 的 phases 概念略有不同。为了晋升 Apache APISIX 的性能,APISIX 插件的 rewrite 办法会在 OpenResty 的 access 阶段中运行。用户仍然可能在插件层面自定义 rewrite 的逻辑,然而在代码层面,rewrite 实际上也是在 access 外面执行。 ...

November 9, 2021 · 3 min · jiezi

关于apisix:Apache-APISIX-在腾讯云智能钛平台中的落地实践

背景介绍腾讯云智能钛机器学习平台(TI-ONE)是为 AI 工程师打造的一站式机器学习服务平台,为用户提供从数据预处理、模型构建、模型训练到模型评估的全流程开发反对。智能钛机器学习平台内置丰盛的算法组件,反对多种算法框架,满足多种 AI 利用场景的需要。 产品需要咱们将需要分为两大类:技术需要,即研发团队对于 API 网关的需要;业务需要,即智能钛机器学习平台使用者对于 API 网关的需要。 技术层面次要需要为具备跨横切面性能。具体来说,是将鉴权、限流、日志、监控等跨横切面的性能内聚到 API 网关,对后端服务进行解耦,使研发聚焦性能开发,并且升高保护老本。 思考到后续业务对接腾讯云的需要,API 网关必须反对腾讯定制的鉴权和登录机制以及恪守腾讯云 API 3.0 的格局。 业务层面则次要思考使用者感触。平台进行开发时,AI 和算法共事须要交互式编程环境,那么就须要 API 网关反对 Notebook。实现部署后,API 网关须要具备流量调配性能和足够高的性能,满足多用户间接调用接口的场景。还需反对申请级别的监控,包含日志(Logging)监控和指标(Metrics)监控。 综合以上需要,咱们进行了相干网关产品的调研。 调研比照进入咱们考查名单的有:Envoy、Kong 以及 Apache APISIX。咱们从多维度对上述三个产品进行了比照,后果如下。 因为 Envoy 的技术栈是 C++,须要定位问题时,很可能要去看 C++ 的源代码。这种定位问题可能会对咱们造成肯定的影响,所以 Envoy 这个计划否决得比拟早。 Kong 和 Apache APISIX 所应用的技术栈雷同,都是 OpenResty。然而在存储依赖这一栏,Kong 依赖的是关系型数据库 PostgreSQL。在软件行业,数据库的高可用配置是非常复杂的。不仅须要装备专门的DBA,而且施行难度也十分大。关系型数据库太重了,咱们并不需要应用关系型数据库来保障 ACID 和 MVCC。 为什么抉择了 Apache APISIX?Apache APISIX 在存储依赖和路由规定这两方面做的十分好,很适宜咱们的业务场景。咱们的业务比拟看重路由灵便度和路由匹配算法。目前已接入 50 多个上游和数百条路由规定,所以咱们心愿路由匹配的性能越高越好。Apache APISIX 路由匹配算法复杂度显著优于 Kong,且配置失效工夫小于 1ms,单核 QPS 远高于 Kong。综合以上技术和操作层面,咱们最终抉择了 Apache APISIX。 基于 Apache APISIX 的架构调整接入 Apache APISIX 后,咱们实现了智能钛机器学习平台网关方面的性能,解决了之前对于技术和业务层面的需要。 ...

November 4, 2021 · 1 min · jiezi

关于apisix:Apache-APISIX-社区周报-|-2021-10151031

导语Apache APISIX 从开源第一天就以社区形式成长,迅速成为全世界最沉闷的开源 API 网关我的项目。这些成就,离不开社区小伙伴们的共同奋斗。 “独行者速,众行者远”。Apache APISIX 社区周报心愿能够帮忙社区小伙伴们更好地把握 Apache APISIX 社区的每周停顿,不便大家参加到 Apache APISIX 社区中来。 咱们还整顿了一些适宜新来社区的小伙伴们加入的 issue !感兴趣的同学们,走过路过不要错过! 贡献者统计 Good first issueIssue #686 链接: https://github.com/apache/api... 问题形容: 为了放慢 Apache APISIX 官网图片的加载速度,须要将所有图片迁徙到CDN。 Issue #5305 链接: https://github.com/apache/api... 问题形容: 测试 APISIX 中的 proxy-mirror 插件时,发现这个插件的个性与 nginx 中的 ngx_http_mirror_module 不同。 nginx 的镜像模块能够在 “proxy_pass” 指令中增加主机前面的 uri,例如: location / {mirror /mirror;proxy_pass http://backend;}location = /mirror {internal;proxy_pass http://test_backend$request_uri;}然而当我在 APISIX Dashboard 中测试 proxy-mirror 插件时,提醒不能用 URI 填充空格。是否能够优化 proxy-mirror 插件以反对 URI? Issue #5342 ...

November 2, 2021 · 2 min · jiezi

关于apisix:Apache-APISIX-助力有赞云原生-PaaS-平台实现全面微服务治理

有赞是一家次要从事批发科技 SaaS 服务的企业,帮忙商家进行网上开店、社交营销、进步留存复购,拓展全渠道新批发业务。在往年,有赞技术中台开始设计实现新的云原生 PaaS 平台,心愿通过一套通用模型来进行各种利用的公布治理和微服务相干治理。而 Apache APISIX 在其中起到了十分要害的作用。 为什么须要流量网关有赞 OPS 平台有赞 OPS 平台是后期基于 FLASK 的单体利用,次要以反对业务为主。起初逐步上线了很多业务,部署了很多业务端代码,进入容器化阶段。网关在过后只是外部 FLASK 利用的一部分性能,且没有一个明确的网关概念,仅作为业务利用的流量转发性能应用。下图展现的就是过后的网关 1.0 业务构造。 因为后期整个体系次要着重于业务方向,所以没有产生太多的能源去进行革新。从 2018 年开始,通过外部交换咱们发现,如果没有一个很好的网关层治理,对后续产品性能的实现和业务接入度上会带来越来越显著的瓶颈。 没有网关层治理呈现的问题问题一:性能方面 每次新增后端服务,都须要进行编码变更流量转发的代码用 Python 简略实现,未按“网关”要求进行设计Flask 框架的性能限度,单机 QPS 范畴局限在 120-150反复造轮子:不同的业务需要都生产一套对应入口治理麻烦,运维简单基于这个问题,咱们的口头方向是:业余的工作交给业余的零碎去做。 问题二:外部业务方面 须要治理的外部服务数量十分多(上百)局部服务未对接 CAS 实现鉴权新的服务对接 CAS 存在对接老本,反复开发耗时耗力所有服务间接配置在接入层,没有外部服务的标准及最佳实际带着以上这两方面问题,咱们就开始对网关类产品进行了相干的调研。 为什么抉择了 Apache APISIX 思考到产品成熟度和可拓展性,最终咱们在 Kong 和 Apache APISIX 中进行比照抉择。 Apache APISIX Ingress Controller 已更新到 v1.3 版本 具体详情可查看:https://github.com/apache/api... 从上图比照中能够发现,两者在很多方面根本并驾齐驱,所以存储端成为咱们重点思考的一点。因为 etcd 在咱们公司外部的运维体系上曾经比拟成熟,所以 Apache APISIX 相较 Kong 则稍逊一筹。 同时思考到在开源我的项目层面,Apache APISIX 的国内交换与跟进处理速度上都十分优良,我的项目的插件体系比拟丰盛全面,对各个阶段的应用类型都比拟符合。 所以在 2020 年调研之后,最终抉择了 Apache APISIX 作为有赞行将推出云原生 PaaS 平台的流量网关。 ...

October 22, 2021 · 2 min · jiezi

关于apisix:纵观移动云对象存储发展历程也少不了-Apache-APISIX-的能力加持

背景阐明中国移动云能力核心作为中国移动云设施构建者、云服务提供者以及云生态汇聚者,承当了挪动云的技术研发、布局建设、经营保护、 单干引入、销售撑持、反对上云六大工作职责。 截至 2020 年 10 月,全国共计建成 25 个私有云节点,省份覆盖率超过 80%。其中对象存储 EOS 作为底层基础设施能力之一,已在所有资源池中进行了部署建设,整体可用规模达到 EB 级。 挪动云对象存储至今已经验了四代倒退历程变迁。从自研开发起手,通过性能扩大、深度定制、性能晋升到最新一代领有跨区域全局纠删架构,实现了异地多活容灾成果。纵观下来,堪称是提高飞速。 在云对象存储技术选型初期,咱们调研过很多的 API 网关,包含 Nginx、Apache APISIX 等,最终还是抉择了 Apache APISIX。Apache APISIX 不仅可能满足以后的业务要求,同时还能在零碎可用性、可维护性上为咱们产品提供了比拟多的思路和抉择,与后续整体产品演进布局和技术栈比拟吻合。 为什么抉择 Apache APISIX 作为网关为什么摈弃 Nginx?理由一:综合能力欠缺 Apache APISIX 作为一个微服务网关,与其余 API 网关相比,它的上游路由插件是全动静的,批改配置不须要重启。同时插件反对热加载,能够随时插拔、批改插件。尤其是业务连续性要求十分高的场景,这些能力都是 Nginx 不具备的。 理由二:配置不灵便 家喻户晓,像 Nginx 所有的性能都是基于配置文件来实现的,因此像 Proxy 存在路由上游的证书不能动静加载。Apache APISIX 反对全平台、多协定、全动静、精细化路由、平安防护,而且运维敌对,能够对接 Prometheus、SkyWalking 等,有高度扩大能力,这些都是理论生产中须要的能力。 在技术选型时为什么咱们最终抉择 Apache APISIX ?理由一:基于产品架构的须要 前边提到过目前对象存储曾经经验了四代倒退历程。随着产品性能的丰盛、整个架构集群规模变大,就须要有更多管制面策略,包含流量治理、服务治理等策略来保障整个零碎的稳固运行。 理由二:细粒度业务性能的实现 Apache APISIX 的个性、性能插件、自定义开发性能,都能够在后续的开发过程中满足咱们的业务需要。 理由三:SLA 服务等级保障 个别 SLA 服务等级的可用性强调两个指标:零碎均匀无故障工夫和零碎均匀故障修复工夫。如何无效拉长零碎均匀无故障工夫?如何无效放大零碎均匀故障修复工夫?这两个问题是咱们重点思考的。而 Apache APISIX 在故障隔离和自愈方面都有着不错的流量治理和服务治理相干能力。 在 Apache APISIX 的数据面咱们改了些什么?改良一:内外网申请拆散拜访目前咱们的业务模型有两个域名,内网域名和外网域名。内网域名的拜访是资源池东西向的拜访,如资源池外部虚拟机、利用平台类的产品等。外网域名,相当于是纯公网的拜访,比方:公网的私有云、toC 和 toB 的客户,通过 satellite 或者物理专线拜访对象存储。 ...

October 21, 2021 · 2 min · jiezi

关于apisix:Apache-APISIX-2100-正式发布带来第一个-LTS-版本

Apache APISIX 2.10 版本正式公布! 这是Apache APISIX 首个 LTS 版本,同时反对 10+ 个新性能和新插件。疾速浏览理解 2.10.0 版本的新个性吧! 里程碑:第一个 LTS 版本对于 Apache APISIX 来说,本次公布的 2.10.0 是一个具备里程碑意义的版本,因为 Apache APISIX 2.10.0 是咱们的第一个 LTS (Long Time Support)的版本。 咱们会在 Apache APISIX 2.10.0 的根底上公布后续的 patch 版本,也就是 2.10.1、2.10.2 等版本。这些版本会从主分支上 backport bugfix。 按计划,10 月份咱们会公布首个 LTS 版本的首个 patch 版本,也就是 Apache APISIX 2.10.1。 之后咱们会交替公布 2.10.x(例如 2.10.2 ) 和 2.x(例如 2.11.0)两个版本线,放弃性能迭代的同时,确保 LTS 版本可能失去较新的 bugfix。 值得一提的是,Apache APISIX 2.10.0 的 docker 镜像将会内置 APISIX OpenResty,无需自行编译就能用到 Apache APISIX 的全副性能。 ...

October 16, 2021 · 2 min · jiezi

关于apisix:Apache-APISIX-社区周报-|-2021-1011014

导语Apache APISIX 从开源第一天就以社区形式成长,迅速成为全世界最沉闷的开源 API 网关我的项目。这些成就,离不开社区小伙伴们的共同奋斗。 “独行者速,众行者远”。Apache APISIX 社区周报心愿能够帮忙社区小伙伴们更好地把握 Apache APISIX 社区的每周停顿,不便大家参加到 Apache APISIX 社区中来。 咱们还整顿了一些适宜新来社区的小伙伴们加入的 Issue !感兴趣的同学们,走过路过不要错过! 贡献者统计 Good First IssueIssue #5165 链接: https://github.com/apache/api... 问题形容: 当浏览器跨域公布而后显示 CORS error 时,wolf-rbac 插件的登录 url/apisix/plugin/wolf-rbac/login 会返回 json 格局,然而 header 给出的内容类型是 text/plain,请批改插件登录后的内容类型为 application/json。wolf-rabc 的登录 uri/apisix/plugin/wolf-rbac/login 会失去增加头的 CORS 插件。Issue #5192 链接: https://github.com/apache/api... 问题形容:装置 APISIX 依赖的时候,不同的 Linux 发行版会有不同的执行。是否能够将这些不同的执行合并到 “install-dependencise.sh” 中,这样用户在装置依赖时会更加不便。 近期性能个性亮点Dashboard 反对配置 Service 中 host 字段提供路由默认值 相干 PR:https://github.com/apache/api... 贡献者:bzp2010 反对注入逻辑到 APISIX 办法中 相干 PR:https://github.com/apache/api... 贡献者:spacewander ...

October 15, 2021 · 1 min · jiezi

关于apisix:Apache-APISIX-社区新里程碑全球贡献者突破-300-位

Apache APISIX 社区达成新的里程碑,与 Apache APISIX 相干的我的项目寰球贡献者冲破 300 位!间隔 Apache APISIX 主库达到 200 位贡献者里程碑,仅仅距离 3 个月!感激社区贡献者们在代码、文档、经营等方方面面做出的卓越贡献。 ps:贡献者趋势图我的项目地址 https://github.com/api7/contr... 举荐浏览《贡献者,是掂量开源我的项目的金指标》 成为 Apache APISIX 贡献者没有门槛,在 Apache APISIX 社区不只蕴含代码方面的奉献,还有文档、测试、设计、制作视频等。在 Github 上提 PR 或 Issue,参加邮件列表的探讨,通过直播分享、在交换群帮忙大家解决问题、加入 Meetup,都是参加到社区的路径。欢送大家退出 Apache APISIX 社区! 社区活动Apache APISIX 社区十分沉闷,贡献者们每月都会组织流动,帮忙大家更好地理解和利用 Apache APISIX。 Apache APISIX Meetup2021 年 Apache APISIX 举办了多场线上线下 Meetup ,由 Apache APISIX PMC 成员、Committer、Contributor 和企业技术专家分享 Apache APISIX 的最佳实际。欢送大家关注 Apache APISIX bilibili,观看往期回顾内容。 Apache APISIX Ingress 线上探讨Apache APISIX Ingress 我的项目每两周举办一次线上探讨,大家一起探讨各个 PR、issue,分享最佳实际、对 Ingress 的见解和设计思路,可查看 issue 获取线上会议地址。 ...

October 15, 2021 · 1 min · jiezi

关于apisix:Apache-APISIX-社区成员助力-openEuler-发布第一个社区创新版

来自 Apache APISIX 社区的罗泽轩和温铭在 openEuler 9 月 30 日公布的第一个社区翻新版(21.09)中,为 OpenResty 迁徙工作中做了十分多的奉献,让 OpenResty 能够在欧拉开源操作系统上安稳高效的运行。OpenResty 的稳固运行也意味着 Apache APISIX 能够顺畅地运行在 openEuler 零碎上,Apache APISIX 底层基于 OpenResty 做了肯定开发。 让咱们一起来意识下这两位社区成员吧! 罗泽轩 Apache APISIX PMC,OpenResty 的外围开发者,git-extras 我的项目的 Maintainer,善于 C、Golang 和 Lua,撰写过多篇技术干货,举荐浏览《为什么 Apache APISIX 抉择 Nginx + Lua 这个技术栈?》《差之毫厘:etcd 3 完满反对 HTTP 拜访?》。 温铭 Apache Member,Apache APISIX PMC Chair,OpenResty 的外围开发者,前 360 开源技术委员会委员,十余年开发教训。著有极客工夫专栏《OpenResty从入门到实战》。 Apache APISIX 从开源第一天就以社区形式成长,Apache APISIX 的小伙伴不仅仅在本社区沉闷,还积极参与到其余社区的开源我的项目中,这正是开源精力的体现,开源不仅仅是凋谢源代码,更是凋谢的社区、凋谢的心态,社区间单干互助,大家一起奉献更好用的开源产品。 除了两位社区成员,还要多介绍一下 Apache APISIX。openEuler 第一个社区翻新版(21.09)极大丰富了云原生相干的基础设施,Apache APISIX 人造领有云原生的劣势,反对裸金属、虚拟机、Kubernetes、ARM64、私有云、混合云等多种部署模式,期待 Apache APISIX 在 openEuler 上利用于更多业务、更多场景。 ...

October 15, 2021 · 1 min · jiezi

关于apisix:基于-Apache-APISIX爱奇艺-API-网关的更新与落地实践

本文整顿自爱奇艺高级研发师何聪在 Apache APISIX Meetup - 上海站的演讲,通过浏览本文,您能够理解到基于 Apache APISIX 网关,爱奇艺技术团队是如何进行公司架构的更新与交融,打造出全新的网关服务。 背景形容 爱奇艺在之前有开发了一款网关——Skywalker,它是基于 Kong 做的二次开发,目前流量应用也是比拟大的,网关存量业务日常峰值为百万级别 QPS,API 路由数量上万。但这款产品的有余随着应用也开始逐渐体现。 性能差强人意,因为业务量大,每天收到很多 CPU IDLE 过低的告警零碎架构的组件依赖多运维开发成本较高往年在交接到此我的项目后,咱们根据上述问题和窘境,开始对相干网关类产品做了一些调研,而后发现了 Apache APISIX。 Apache APISIX 劣势 在抉择 Apache APISIX 之前,爱奇艺平台曾经在应用 Kong 了,然而起初 Kong 被放弃了。 为什么放弃 Kong? Kong 应用 PostgreSQL 来存储它的信息,这显然不是一个好形式。同时在调研过程中咱们查看了 Apache APISIX 与 Kong 的性能的比照,在性能优化方面 Apache APISIX 比 Kong 晋升了 10 倍,这个指标是十分让人惊喜的。同时咱们也比拟了一些次要的网关产品,Apache APISIX 的响应提早比其它网关低 50% 以上,在 CPU 达到 70% 以上时 Apache APISIX 仍能稳固运行。 咱们也发现 Apache APISIX 其实和 Kong 一样,都是基于 OpenResty 技术层面做的开发,所以在技术层面的迁徙老本就比拟低。而且 Apache APISIX 具备良好的环境适应性,可能被轻易地部署在包含云计算平台在内的各种环境上。 ...

October 15, 2021 · 2 min · jiezi

关于apisix:使用-Apache-APISIX-进行集中式身份认证及进阶玩法

身份认证在日常生活当中是十分常见的一项性能,大家平时根本都会接触到。比方用支付宝生产时的人脸识别确认、公司下班上班时的指纹/面部打卡以及网站上进行账号密码登录操作等,其实都是身份认证的场景体现。 如上图,Jack 通过账号密码申请服务端利用,服务端利用中须要有一个专门用做身份认证的模块来解决这部分的逻辑。申请处理完毕之后,如果应用 JWT Token 认证形式,服务器会反馈一个 Token 去标识这个用户为 Jack。如果登录过程中账号密码输出谬误,就会导致身份认证失败。这个场景大家必定都十分相熟,这里就不做开展举例了。 网络身份认证的意义在哪里? 安全性 网络身份认证确保了后端服务的安全性,防止了未经受权的拜访,从而确保数据的安全性。比方避免某些黑客攻击,以及一些歹意调用,这些都能够通过身份认证进行拦截。 实用性 从实用性的角度思考,它能够更不便地记录操作者或调用方。比方下班打卡其实就是通过记录「谁进行了这项操作」来统计员工下班信息。 其次它能够记录拜访频率及拜访频次。例如记录某用户在最近几分钟中发动申请的频率和频次,能够判断这个用户沉闷水平,也能够判断是否为歹意攻打等。 功能性 在性能层面,它通过辨认身份能够对不同的身份进行不同权限的操作解决。比方在公司里,你的身份权限无奈应用某些页面或服务。再粗疏一点,对不同身份或者不同的 API 接口调用方做一些相干技术上的限度策略,如限流限速等,以此来达到依据不同的用户(调用方)采取不同的性能限度。 Apache APISIX 进行集中式身份认证长处 从传统到新模式 如下图所示,左侧的图为咱们展现了一种比拟常见的传统身份认证办法。每一个应用服务模块去开发一个独自的身份认证模块,用来反对身份认证的一套流程解决。但当服务量多了之后,就会发现这些模块的开发工作量都是十分微小且反复的。 这种时候,咱们能够通过把这部分的开发逻辑搁置到 Apache APISIX 的网关来实现对立,缩小开发量。 如右图所示,用户或利用方间接去申请 Apache APISIX,而后 Apache APISIX 通过辨认并认证通过后,会将甄别的身份信息传递到上游应用服务。之后上游应用服务就能够从申请头中读到这部分信息,而后进行后续相干工作的解决。 讲完了大略流程,咱们来具体列举下。 长处一:配置收敛,对立治理 如上图是一张 APISIX-Dashboard 的界面截图,能够看到路由、Consumer 等数据信息。这里的 Consumer 能够了解为一个利用方,比方能够为利用专门去创立一个 Consumer 并配置相干的认证插件,例如 JWT、Basic-Auth 等插件。当有新的服务呈现时,咱们须要再创立一个 Consumer,而后将这部分配置信息给配置到第二个应用服务上。 通过集中式身份认证,能够将客户配置进行收敛并对立治理,达到升高运维老本的成果。 长处二:插件丰盛,缩小开发 Apache APISIX 作为一个 API 网关,目前已开启与各种插件性能的适配单干,插件库也比拟丰盛。目前曾经可与大量身份认证相干的插件进行搭配解决,如下图所示。 根底认证插件比方 Key-Auth、Basic-Auth,他们是通过账号密码的形式进行认证。 简单一些的认证插件如 Hmac-Auth、JWT-Auth。如 Hmac-Auth 通过对申请信息做一些加密,生成一个签名。当 API 调用方将这个签名携带到 Apache APISIX 的网关 Apache APISIX 会以雷同的算法计算签名,只有当签名方和利用调用方认证雷同时才予以通过。 ...

September 28, 2021 · 2 min · jiezi

关于apisix:最新Apache-APISIX-通过中国信通院-可信开源项目-认证

2021 年 9 月 17 日,在中国信息通信研究院(简称“中国信通院”)主持召开的“云计算开源产业联盟(OSCAR)开源产业大会”上,Apache APISIX 荣获中国信通院颁发的可信开源我的项目评估证书。同时大会正式发表了可信开源社区共同体(TWOS) 的成立,Apache APISIX 社区成为首批正式成员。 可信开源我的项目OSCAR 开源评估,是中国信通院针对开源现状启动的评估工作,“可信开源我的项目”这一奖项的取得意味着 Apache APISIX 在许可证合规性、软件安全性、软件活跃度、技术成熟度、服务支持力和软件兼容性六个方面均取得了国家级认可,这也是 Apache APISIX 间断两年获此国家级认证。 TWOS 首批正式成员为晋升开源我的项目品质,构建成熟的开源社区,推动开源行业利用,由中国信通院发动的可信开源社区共同体(TWOS)在大会上正式成立,Apache APISIX 社区成为首批正式成员。 寰球已有数百家企业应用 Apache APISIX 解决要害业务流量,涵盖金融、互联网、制作、批发、运营商等等,比方美国航空航天局(NASA)、欧盟的数字工厂、中国航信、中国移动、腾讯、华为、微博、网易、贝壳找房、360、有赞、又拍云等等。 将来,Apache APISIX 将在开源方面持续致力,与泛滥开源力量一起建设开源生态,在开源方面发明更多价值。 对于 Apache APISIXApache APISIX 是一个动静、实时、高性能的开源 API 网关,提供负载平衡、动静上游、灰度公布、服务熔断、身份认证、可观测性等丰盛的流量治理性能。Apache APISIX 能够帮忙企业疾速、平安的解决 API 和微服务流量,包含网关、Kubernetes Ingress 和服务网格等。 200 余位贡献者,一起缔造了 Apache APISIX 这个世界上最沉闷的开源网关我的项目。聪慧的开发者们!快来退出这个沉闷而多样化的社区,一起来给这个世界带来更多美妙的货色吧! Apache APISIX GitHub:https://github.com/apache/apisixApache APISIX 官网:https://apisix.apache.org/Apache APISIX 文档:https://apisix.apache.org/zh/...

September 28, 2021 · 1 min · jiezi

关于apisix:支持-10-亿日流量的基础设施当-Apache-APISIX-遇上腾讯

本文整顿自腾讯游戏负责外部容器平台的工程师徐鑫在 Apache APISIX Meetup - 深圳站上的演讲,通过浏览本文,您不仅能够理解网关是什么、网关模式对传统服务架构的改良,还能够理解腾讯 OTeam 诞生的起因,以及 Apache APISIX 是如何在腾讯外部落地的。 在正式进入分享之前,先给大家介绍一下网关 (Gateway) 的作用和价值。 网关是什么传统架构的通用性能 在传统架构中是没有网关的,那么通用性能该如何复用?这里的通用性能指业务无关的一些个性,比方: 安全性:身份验证、受权、防重放、防篡改、反抗 DDos 等可靠性:服务降级、熔断、限流等这些性能在传统架构下,最常见的解决办法就是将其放入服务框架当中,通过 AOP 的形式去实现,相似下图: 图中模块释义: Backend: 后端服务AOP: 框架携带的 AOP 分层SD: 服务中心,用于服务间发现,此组件在云原生环境下常常用 Service 代替LB: 负载均衡器,搁置于网络边界上,作为内部流量的入口这种架构在早些年的设计中十分常见,由此诞生了很多大而全的服务框架,比方 Dubbo、SpringCloud 等。如果咱们去认真钻研它们的性能介绍,会发现这些性能点它们大多都有。 这种架构的长处在于上下游关系简略,网络传输中也少了一次转发。但它们的毛病也很显著: 通用性能的迭代迫使业务服务更新:因为采纳的是代码援用,须要业务服务从新编译能力使性能失效。对一些没有实现平滑公布的团队,因为服务会中断,因而还得挑业务的闲暇期公布。版本难以治理:因为咱们不可能每次公布都让所有业务服务降级最新版,长此以往,各个服务的版本将会不统一。那么是否能够将这些通用性能下沉到一个独立的服务,它能够独自迭代且业务无关? 网关模式的呈现 从上图咱们能够看到传统架构的大部分内容都没有变动,只是在后端服务与 LB(负载均衡器) 之间多出了一个角色:网关(本文探讨的网关特指 ApiGateway ,即针对后盾服务以 API 提供服务的场景)。 在上图中,有时 LB 同时也起到网关的作用,比方 k8s 的 Ingress 组件。 有了网关这个组件后,咱们就能够将传统架构的通用性能下沉到网关,劣势立即就能展示进去: 网关能够独立迭代,不再须要业务服务配合与语言无关,能够配置专门的团队保护然而网关模式也有本人的毛病: 多了一次转发,提早变高,排查问题复杂度变高网关如果不能失常工作,可能会成为整个平台的瓶颈如何均衡好网关模式的劣势和毛病,不仅非常考验业务团队的实力,更是与网关的选型非亲非故。接下来,咱们要请出本文要介绍的两个重点对象:腾讯 OTeam 和 Apache APISIX。 我的项目介绍OTeam 很多人对腾讯外部的赛马文化恐怕早有耳闻。在腾讯外部,老板们为了发明更有竞争力的产品,通常会让不同的队伍去同一个赛道竞争。因为产品的竞争关系,上面的技术当然也不会共享,因而导致晚期的腾讯在技术积淀方面是互联网大厂中垫底的那个。 在其余几家互联网大厂都相继在中台发力时,腾讯也幡然醒悟,为了整合公司内的反复轮子,积淀技术中台。腾讯将雷同性质的几个技术产品都放入同一个 OTeam,将保护人员都整合起来,一起发力,让这些产品逐步合并成一个大而全的产品,这就是 OTeam。 有的 OTeam 上面有多达十数种产品,而有的只有一种。比方 Apache APISIX 所在的 OTeam 就单单只有 Apache APISIX 这一个产品,这个 OTeam 成立的初衷是:保护腾讯外部的 Apache APISIX 定制化个性。 ...

September 28, 2021 · 2 min · jiezi

关于apisix:Apache-APISIX-29-正式发布带来更多新功能

Apache APISIX 2.9 版本正式公布! 该版本有 30+ 开发者参加,共提交了 100+ PR,新增了 2 个新性能,进一步欠缺了对插件的反对,快来理解 Apache APISIX 2.9 版本的新个性吧! 新性能:新增 authz-casbin 插件Casbin 社区向 APISIX 奉献了 authz-casbin 插件 ,在 APISIX 2.9 新版本中,APISIX 能够联合 Casbin 做路由级别上的精细化权限治理。 Casbin 是一个开源的访问控制框架,反对通过配置来决定是否容许某个拜访操作。通过 authz-casbin 插件,咱们能够在一个路由里同时做多种角色的访问控制。 这一管制既能够通过配置文件设置,也能够通过 APISIX Control Plane 配置;既能够针对给定路由失效,又能够设置全局的默认值。能够说十分地灵便。 如果您对这一插件感兴趣,欢迎您移步浏览:在 Apache APISIX 中应用 Casbin 进行受权。 新性能:路由级别上 real-ip 的动静配置APISIX 2.9 版本当初反对在路由级别上动静配置 real-ip 了! 新版本新增了 real-ip 插件,real-ip 插件能够动静地扭转 APISIX 看到的客户端的 IP 和端口。 咱们能够应用这个插件动静设置 real-ip 参数. {    "plugins": {        "real-ip": {            "source": "http_x_forwarded_for",            "trusted_addresses": ["127.0.0.0/24"]        }    }}欠缺:内部插件机制APISIX 2.9 版本进一步欠缺了对外部插件的反对,做出了两个较大的改变: 向 Plugin Runner 发送插件配置时,会发送一个惟一 key。因为 APISIX 是多过程架构,过来发送插件配置时会呈现一个配置被发送几次的状况,导致 Plugin Runner 反复更新插件配置。现在,凭借这个惟一 key,Plugin Runner 能够辨认反复的配置。这使得在 Plugin Runner 外面实现限流一类的插件变得可能!减少从 Plugin Runner 反向获取 APISIX 信息的机制。除了 APISIX 向 Plugin Runner 发送的申请头、申请门路等信息外,Plugin Runner 也能够反向从 APISIX 查问信息。目前曾经在 Go Plugin Runner 的实现中,借助这一机制实现了 Var API,能够失去申请的 request\_time 等跟 Nginx 变量相干的信息。蕴含了这一改变的 Go Plugin Runner 将会在下周公布 0.2.0 版本,敬请期待! ...

September 2, 2021 · 1 min · jiezi

关于apisix:为什么-APISIX-选择-Nginx-Lua-这个技术栈

笔者在往年的 COSCUP 大会做分享时,曾有观众问这样的问题,为什么 APISIX、Kong 和 3scale 这些网关都采纳 Lua 来编写逻辑? 是啊,Lua 并不是一门广为人知的语言,离“支流编程语言”的圈子大略还差个十万八千里吧。甚至有一次,我在跟他人交换的时候,对方在说到 Lua 之前,先进展了片刻,随后终于打定主意,以 “L” “U” “A” 一一字母发音的形式表白了对这一常见之物的称说。 所以,为什么 APISIX 和其余出名的网关会抉择用 Lua 呢? 事实上,APISIX 采纳的技术栈并不是纯正的 Lua,精确来说,应该是 Nginx + Lua。APISIX 以底下的 Nginx 为根基,以上层的 Lua 代码为枝叶。 LuaJIT VS Go谨严认真的读者必然会指出,APISIX 并非基于 Nginx + Lua 的技术栈,而是 Nginx + LuaJIT (又称 OpenResty,以下为了防止凌乱,会仅仅采纳 Nginx + Lua 这样的称说)。 LuaJIT 是 Lua 的一个 JIT 实现,性能比 Lua 好很多,而且额定增加了 FFI 的性能,能不便高效地调用 C 代码。 因为现行的支流 API 网关,如果不是基于 OpenResty 实现,就是应用 Go 编写,所以时不时会看到各种 Go 和 Lua 谁的性能更好的比拟。 ...

August 27, 2021 · 2 min · jiezi

关于apisix:Apache-APISIX-社区周报-|-2021-816822

导语Apache APISIX 从开源第一天就以社区形式成长,迅速成为全世界最沉闷的开源 API 网关我的项目。这些成就,离不开社区小伙伴们的共同奋斗。 “独行者速,众行者远”。Apache APISIX 社区周报心愿能够帮忙社区小伙伴们更好地把握 Apache APISIX 社区的每周停顿,不便大家参加到 Apache APISIX 社区中来。 咱们还整顿了一些适宜新来社区的小伙伴们加入的 Issues !感兴趣的同学们,走过路过不要错过! 贡献者统计 Good first issueIssue #4441链接:https://github.com/apache/api... 问题形容:当初 APISIX stream\_routes 的参数 "remote\_addr"只反对单个 ip,须要反对多个 ip 或者像 "192.168.0.0/16 "这样的匹配规定,就像 http 路由参数 "remote\_addr"一样。 解决方案:为 APISIX stream\_routes 的 "remote\_addr"参数反对多个 ip 地址或匹配规定,如 "192.168.0.0/16"。 相干零碎参数: apisix version (cmd: apisix version): 2.6OS (cmd: uname -a): CentOS7Issue #3931链接:https://github.com/apache/api... 问题形容:重定向插件中的 http\_to\_https 不足 curl 测试。 解决方案:为重定向插件中的 http\_to\_https 增加 curl 测试。 更新文档 http://apisix.apache.org/docs... 本周性能个性亮点gzip 插件反对非凡的 * 来匹配任何类型 相干 PR:https://github.com/apache/api... 贡献者:RocFangext-plugin 插件反对 ExtraInfo 相干 PR:https://github.com/apache/api... 贡献者:spacewanderreal-ip 插件为 X-Forwarded-For 增加非凡解决 相干 PR:https://github.com/apache/api... 贡献者:spacewanderuri-blocker 插件反对自定义失败响应 相干 PR:https://github.com/apache/api... 贡献者:okaybaseApache APISIX 的我的项目官网和 Github 上的 Issues 上曾经积攒了比拟丰盛的文档教程和应用教训,如果您遇到问题能够翻阅文档,用关键词在 Issues 中搜寻,也能够参加 Issues 上的探讨,提出本人的想法和实践经验。 ...

August 24, 2021 · 1 min · jiezi

关于apisix:在-Apache-APISIX-中使用-Casbin-进行授权

当咱们在应用 Apache APISIX 时,可能想要在利用里增加简单的受权逻辑。在此篇文章中,咱们将应用 Apache APISIX 的内置 Casbin 插件(authz-casbin)来实现基于角色的访问控制(RBAC)模型。 介绍Apache APISIXApache APISIX 是一个动静、实时、高性能的 API 网关, 提供负载平衡、动静上游、灰度公布、精细化路由、限流限速、服务降级、服务熔断、身份认证、可观测性等数百项性能。你能够应用 Apache APISIX 来解决传统的南北向流量,以及服务间的东西向流量, 也能够当做 k8s ingress controller 来应用。 CasbinCasbin 是一个弱小的、高效的开源访问控制框架,其权限管理机制反对多种访问控制模型。 authz-casbin 插件介绍在 Apache APISIX 的应用中,路由匹配和申请受权之间有个隐含的矛盾点:为了更高细粒度的权限管制,须要配置更高细粒度的路由,来精准辨认申请并对申请进行受权。在简单的受权模型场景下,这将导致路由数量成倍增加,加剧了运维复杂度。authz-casbin 是一个基于 lua-casbin 的 Apache APISIX 插件,反对基于各种拜访模型的弱小受权。Casbin 是一个弱小的、高效的开源访问控制框架,反对 ACL、RBAC、ABAC 等访问控制模型,lua-casbin 是 Casbin 访问控制框架的 Lua 版本实现。authz-casbin 插件能够把路由匹配和申请受权这两个性能很好地进行解耦,你能够将各种受权拜访模型加载到 Apache APISIX 中,借助 lua-casbin 实现高效简单的受权模式。 留神:如果你想要实现身份验证(authentication),你须要应用其余插件或者本人来配置实现验证用户身份,比方 jwt-auth 插件。 authz-casbin 使用指南创立一个模型authz-casbin 插件应用三个参数来进行受权:subject、object 和 action。subject 是用户名,代指申请中的用户;object 是将要被拜访的 URL 链接也就是将被拜访的资源;action 是申请受权的行为,比方读操作(read)或者是写操作(write)。如果,咱们想要创立一个模型来拜访三个资源:/,/res1,/res2,咱们想要一个相似于这样的模型: 在这个模型中,所有的用户,例如 Jack,能够拜访主页面(/)。而像 Alice 和 Bob 具备管理员权限的用户则能够拜访所有的页面和资源(/res1,/res2,/)。这样,咱们就须要来限度没有管理员权限的用户只能应用 GET 申请办法拜访特定的资源。所须要的模型如下: ...

August 23, 2021 · 1 min · jiezi

关于apisix:Apache-APISIX-在-Airwallex-的应用-专访-Airwallex-技术平台负责人李杨

本周六(8.21),Apache APISIX Meetup 上海站 正式开始啦!明天,咱们为大家带来了本次参会嘉宾 Airwallex 技术平台负责人李杨的专访,来听听地面云汇与 Apache APISIX 之间的故事。文章开端附有本次 Meetup 上海站的参加形式,感兴趣的小伙伴千万不要错过! Q:请简略介绍一下本人和目前从事的工作李杨: 李杨(Jan Li),哲学博士,Apache APISIX Committer,Airwallex(地面云汇)Technical Platform Lead,负责公司技术平台的演进。在退出 Airwallex(地面云汇)之前,曾在万向区块链领导运链盟。在万向区块链之前,曾在花旗集团领导OTC衍生品风控平台。 Airwallex(地面云汇)是一家寰球金融科技公司,赋能各类规模的企业跨境经营,以此助力寰球经济倒退。以技术为外围,Airwallex(地面云汇)构建了专有的寰球金融基础设施平台,寰球领取网络已笼罩 130 多个国家和地区的 50 余种货币,为各类规模的企业提供数字化的金融科技产品,在寰球互联的信息化时代,以更高效、平安的形式帮忙企业在全世界高速倒退。自 2015 年成立以来,Airwallex(地面云汇)已取得来自顶级投资机构超 5 亿美元融资,目前在寰球共有 12 个办公室及超过 900 名员工。 Q:在做技术选型的时候,是什么起因让您/您的技术团队抉择应用 Apache APISIX?李杨: API 网关是极其重要的根底技术组件,在技术选型时咱们次要从 6 个维度比拟了次要的网关产品: 稳定性:API 网关的稳定性至关重要,在世界排名前 1000 的网站中,有 62.1% 是 Nginx 系的,这阐明 Nginx 系 web server 是通过了生产环境简单多样场景考验的;APISIX 全动静的设计也使得它可能在批改路由时不用 reload,client 的长链接也得以放弃;咱们也对 Apache APISIX 进行了压力测试,在 CPU 达到 70% 以上时 Apache APISIX 仍能稳固运行。性能:每个 API 申请都会通过 API 网关,减小网关性能损耗能大大降低公司 API 整体响应工夫。在PoC中咱们比拟了次要的网关产品,Apache APISIX 的响应提早比其它网关低 50% 以上;Apache APISIX 数据面的设计也使集群中的每一个实例都互相独立,这也使得它天生反对程度扩大。可扩展性:API 网关模式是十分重要的微服务架构模式,合乎 API 网关模式的 API 网关必须反对企业简单的鉴权、权限管制、服务发现、限流、降级、负载平衡、白名单、动静路由等性能,所以反对怎么的定制是抉择 API 网关时十分要害的考量。社区活跃度:新的技术与需要层出不穷,一个沉闷的社区是 API 网关跟上技术演进步调的要害。早在 Apache APISIX 还是 Apache 孵化我的项目时,其社区就曾经十分沉闷,从 contributor 数量、issue 响应工夫、Pull Request 数量三个指标来看都是十分沉闷的社区。公有部署:API 网关作为企业核心技术架构组件,企业应该把它部署在本人的公有网络边缘。Apache APISIX 具备良好的环境适应性,可能被轻易地部署在包含云计算平台在内的各种环境上。开源协定:Apache 2.0 赋予了定制 APISIX 的企业相当大的技术自由度。Q:Apache APISIX 用在了哪些场景?解决了哪些问题?李杨: 咱们把 Apache APISIX 用作微服务网关模式的外围组件,它被部署在网络边缘,为所有进入 Airwallex(地面云汇)的流量提供通用网关性能,解决的问题包含: ...

August 18, 2021 · 1 min · jiezi

关于apisix:从新手村出来我在-Apache-APISIX-社区发出了第一个-PR

“当我看到那个 issue 后,就有种强烈的想要参加到社区的激动。看了社区的老手指南后,我像从新手村进去的勇者,筹备打怪。” —— Apache APISIX committer 屠正松历时 282 天,屠正松(GitHub ID:tzssangglass)从开源社区的小白成长为了 Apache APISIX 的 committer。 屠正松因深度参加 Apache APISIX 的开发,在社区中奉献很多,2021 年 7 月 22 日被推选为 Apache APISIX committer。 在一个平淡的下午,咱们和正松连线聊了聊。因为疫情关系,寓居在南京的他曾经多日未外出。在没有和他聊天之前,我没有想到,胡子拉碴的他,居然走过了这么波折的路。 大学,我的大学“我大学的时候学的是通信工程,每天最开心的事就是踢球。当初有时候会想,如果能带着当初的记忆回到大学时光就好了。”正松在大学期间外面其实没怎么接触过编程,他当年其实有 C 语言的编程课,然而因为忙着踢球,挂科了。可是,他挂科之后的补考也没过,导致重修。最难堪的是,他重修也没过,起初怎么办呢?毕业之前还有毕业清考。这可不能再挂了,于是正松就去图书馆去借了一本 C 语言的书来看。 “我过后心想,C 语言真的这么难吗?”正松说。 而后他就始终看始终看,看着看着就忽然发现编程如同有那么点意思,他看懂了!最初他在毕业前顺利通过了考试。在毕业之后,找到了一份做程序员的工作。 “我原本都筹备毕业回家找个厂下班了”,他半开玩笑地说。 彼时,他可能不会想到现在的他会成为数个出名开源我的项目的 developer,参加一些撑持着千万级并发流量的基础设施的开发。 出象牙塔记“在工业界,实在的业务场景和学校里学的很不一样的。”正松的第一份工作就任于一家做穿戴设施的守业公司,从事智能手环的研发工作。正松和他的前共事们须要通过解决从智能手环上的获取的各种传感器数据,来实现对用户的心率、运动量、血压等的监测。 “工作蛮好玩的,因为在工业界,实在的业务场景和学校里学的很不一样的,很多货色都得从头开始学”,正松说。 有一天上班之后,这家公司的老板娘忽然发了一条信息,说公司的员工临时休假,什么时候下班等告诉。 正松过后就感觉不对劲,怎么好好的上着班,忽然就休假了?而后他立马关上招聘软件,开始找新的工作。起初才晓得,公司的老板跟供应商有合同纠纷,公司短暂停摆了。 而后,正松便到另外一家公司从事后端业务开发的工作,学习业界标准、进一步增进技术。过了快一年,因为正松比拟喜爱 Nginx、OpenResty、Netty 这类简洁和高性能的技术,他进入一家大公司的开发团队,从事中间件相干开发工作。 “在这家大公司,我做的离业务略微远那么一点点,更偏差技术一些。“正松说。 正松接触 Apache APISIX 的工夫是 2020 年 9 月份,那时候,他所在的团队应用的是 Kong,然而过后 Kong 无奈齐全满足他们的需要,于是他们便从新做网关的技术选型,试图寻找更好的计划。正松负责本次技术选型的负责人,于是他关注到了 Apache 基金会的顶级我的项目 Apache APISIX,进而接触了 Apache APISIX 的社区。 彼时的他,曾经毕业三年多了。 出新手村"我能够给 Apache 基金会的顶级我的项目提交代码了!作为一个技术工作者,这是一种技术上的自信。"正松在开源社区的第一个 PR 是一个 enhancement(性能加强)类型的 PR,这个 PR 让 Apache APISIX 反对了多端口监听。 ...

August 12, 2021 · 2 min · jiezi

关于apisix:贡献者是衡量开源项目的金指标

依据 GitHub 2020 年的统计显示,这一年新增了 6000 万个代码仓库,超过 5600 万的开发者参加到开源我的项目中。预计到 2025 年,在 GitHub 参加开源我的项目的开发者人数将会超过 1 亿。 在这些快速增长的数字背地,暗藏的是开源我的项目为了博得开发者而做出的各种宣传:硬核技术文章、社交活动、新媒体、周边礼物等,能够说是乱花渐欲迷人眼。那么对于开发者来说,如何可能在百花齐放的我的项目中,找出最适宜本人公司的那一个呢? 这就会波及到开源我的项目的各种指标: Star 数:这是最间接的指标,它代表的是这个我的项目吸引了多少开发者的关注,能够体现这个我的项目的 marketing 程度。如果这个我的项目有商业公司资金的反对、强力的 PR 团队,或者是水军刷 Star,那么这个指标就很容易失真;Issue 和 PR 数:GitHub 提供了 Insights 性能,如下图所示: 能够抉择最近一周、最近一个月的工夫内,这个开源我的项目的 Issue 和 PR 的新建和敞开数。上图是 Apache APISIX 最近一个月的数据。 GitHub insights 提供了一个十分棒的开发者视角,但还不够完满:Issue 和 PR 的品质如何?这些是没有方法量化的; Commit 频率和数据:下图是 Apache APISIX 从我的项目创立到当初的 Commit 频率统计,能够看出 Apache APISIX 放弃了十分稳固和继续的开发,但这个指标也略显薄弱:看不到提交这些 Commit 的开发者的数据; 看到这里,你是不是感觉抉择一个开源我的项目好简单,看了这么多指标都得不出答案。有没有一个“金指标”,一个通过 marketing 砸不进去的指标?一个可能体现“开发者为外围”的指标? 作为开源我的项目的维护者和开发者,咱们也须要这样的金指标来指引咱们。所以,咱们提出了 “贡献者增长” 和 “沉闷贡献者”这两个维度,并将统计和剖析的过程开源进去:https://github.com/api7/contr...,你也能够通过 https://www.apiseven.com/zh/c... 间接进行检索。上面是 Apache APISIX 的示例: 贡献者增长 月度沉闷贡献者 ...

August 11, 2021 · 1 min · jiezi