头图

Apache APISIX 2.12.0 版本发布,新功能更适配新一年!

继 2.11.0 版本发布之后,Apache APISIX 也在即将到来的新春佳节,为大家带来 2022 年第一个带有新功能的版本。在此也算携手新版本给大家拜个早年了!

新功能:更多的 Serverless 集成

还记得在上个版本里,Apache APISIX 增加了对 Azure Function 的支持。而这次新版本中也是用意满满,在功能上又加入了对更多 Serverless 厂商的支持。

如今用户也可以在 Apache APISIX 中结合 AWS Lambda 和 Apache OpenWhisk,在网关上进行特定函数的暴露。

新功能:更多的鉴权插件

此次的新版本,还将带来两个众人翘首以盼的新插件:forward-authopa

  • forward-auth 插件跟 Traefik 的同名插件功能类似,该插件可以允许把当前请求的信息发送给外部服务进行鉴权。
  • opa 插件则整合了著名的 Open Policy Agent,该插件可以通过 OPA 来完成复杂的鉴权功能。

通过上述两个插件,将为 Apache APISIX 的鉴权功能锦上添花,给用户带来更多丰富和上手简单的鉴权操作。

新功能:更多的日志功能

除了上边提到的鉴权插件,本次新版本还将带来三个新的日志插件:google-cloud-loggingsplunk-hec-logging 以及 rocketmq-logger

从插件名称上也很容易理解,通过上述三个插件可以把日志分别发送到 Google Cloud、Splunk 和 Apache RocketMQ。未来,Apache APISIX 将会对接越来越多的日志服务商和开源 Broker,让日志处理变得更加轻松。

支持记录响应体

同时,此次 2.12.0 版本还在日志层面支持记录响应体。与 Apache APISIX 其他功能一样,该功能也可以通过表达式进行动态开启。这样在使用中,就可以实现仅在上游返回特定的 Content-Type 和 Content-Length 时进行日志记录,不用再去顾虑全量采集响应体而带来的问题了。

具体示例可参考下方:

{

    "plugins": {

        "kafka-logger": {

            "broker_list" : {

                "127.0.0.1":9092

            },

            "kafka_topic" : "test2",

            "include_resp_body": true,

            "include_resp_body_expr": [

                [

                    "sent_http_content_length",

                    "<",

                    "4096"

                ],

                [

                    "sent_http_content_type",

                    "==",

                    "application/json"

                ],

            ]

        }

    },

    "upstream": {

        "nodes": {

            "127.0.0.1:1980": 1

        },

        "type": "roundrobin"

    },

    "uri": "/hello"

}
上述配置会仅在 Content-Length < 4096 且 Content-Type 为 "application/json" 才记录日志。

支持注册自定义变量

另一个跟日志紧密相关的功能,就是新版本的 Apache APISIX 已支持注册自定义变量。同时结合 APISIX 的自定义日志格式,就可以实现完全自定义上报的日志内容。即无需修改具体的日志插件,就能实现日志生成和上报的解耦合。这里我们通过一个示例进行简单演示一下。

比如我们可以在自己的插件中注册一个 a6_route_labels 的变量:

local core = require "apisix.core"



core.ctx.register_var("a6_route_labels", function(ctx)

    local route = ctx.matched_route and ctx.matched_route.value

    if route and route.labels then

        return route.labels

    end

    return nil

end)

并在自定义日志格式中使用它:

{

    "log_format": {

        "host": "$host",

        "labels": "$a6_route_labels",

        "client_ip": "$remote_addr"

    }

}

假设我们的 Route 长这样:

{

    "plugins": {

        "http-logger": {

            "uri": "http://127.0.0.1:1980/log",

            "batch_max_size": 1,

            "concat_method": "json"

        }

    },

    "upstream": {

        "nodes": {

            "127.0.0.1:1982": 1

        },

        "type": "roundrobin"

    },

    "labels": {

        "k": "v"

    },

    "uri": "/hello"

}

最终就会收到如下所示的日志:

{"client_ip":"127.0.0.1","host":"localhost","labels":{"k":"v"},"route_id":"1"}

新功能:L4 代理支持 TLS over TCP 上游

在 2.12.0 版本中还引入了新的 Upstream Scheme,现在 Apache APISIX 已支持代理到 TLS over TCP 上游了。

具体做法可参考下方,只需在 Upstream 配置中指明 Scheme 为 TLS 即可。

{

    "scheme": "tls",

    "nodes": {

        "127.0.0.1:1995": 1

    },

    "type": "roundrobin"

}

至此 Apache APISIX 的 TCP 代理功能得到了 TLS 全方位的支持。此外,我们还支持在静态文件中配置 L4 代理的 Access Log:

stream:

    enable_access_log: false         # enable access log or not, default false

    access_log: logs/access_stream.log

    access_log_format: "$remote_addr [$time_local] $protocol $status $bytes_sent $bytes_received $session_time"

                                            # create your custom log format by visiting http://nginx.org/en/docs/varindex.html

    access_log_format_escape: default       # allows setting json or default characters escaping in variables

更新:多语言插件持续完善

WASM 生态功能更加丰富

在之前版本中,Apache APISIX 已开放了对 WASM 生态的支持。而在 2.12.0 版本中,针对 WASM 生态又做了不少的更新细节。

目前 Apache APISIX 已经支持在 header_filter 的阶段运行 WASM 代码,弥补了现有外部插件无法修改响应的不足。

此外,我们还支持在 WASM 里面通过 Apache APISIX 这个宿主进行 HTTP 通讯。借助这一功能,我们用 WASM 也重新实现了 forward-auth 插件。该插件的功能几乎和 Lua 版本一模一样,甚至连测试用例也是在 Lua 版本上改了下名字就能通过了。

Java Plugin Runner 最新版本发布

当然,我们也没有忘记针对现有的外部插件进行更新,本次 2.12.0 版本中,Apache APISIX 已允许外部插件获取请求体。

比如最近发布的 Java Plugin Runner 第二版就包含了这一功能。新版本的 Java Plugin Runner 还支持在运行时动态获取 APISIX 变量。

更多细节

除了上述新功能和组件外,Apache APISIX 2.12.0 版本还更新了如下功能:

  • gRPC-Web 的支持:继 gRPC 代理、HTTP 转 gRPC 之后,我们迎来了 gRPC 家族的第三个成员。现在 Apache APISIX 也支持代理 gRPC Web 协议了。
  • limit-count 的增强:如今 limit-count 插件的计数器已经支持在请求间、路由间进行共享,可以说是相当灵活了。

更多关于 Apache APISIX 2.12.0 的更新细节,可以查看本次发布对应的 Change log

下载

想要获取最新的 Apache APISIX 2.12.0 版本,可通过以下路径下载:

活动预告

1 月 28 日 19:00,Apache APISIX 社区将为大家带来主题为「APISIX in 青云 !开源 + 云原生助力“企业上云”行动落地」的线上分享。本次活动特别邀请了来自青云的 API 网关产品经理刘庆及 API 网关技术架构师翟炼,为大家揭秘其如何基于开源框架 Apache APISIX 打造出一款可提供 API 全生命周期管理服务的青云 QingCloud API 网关。另外还有来自 Apache APISIX 社区的 PMC 成员金卫,为大家分享 Apache APISIX 在云端的实践。 

众多精彩议题内容等你来看!

图片

如何参与?

关注下方「Apache APISIX 视频号」并预约此次直播,即可在 1 月 28 日准时参与到我们的线上 Meetup 哦!

入群交流

扫描下方二维码添加小助手微信,由小助手邀请您进入 Apache APISIX 在线交流群,了解更多社区动态!

图片

关于 API7.ai 与 APISIX

API7.ai(支流科技)是一家提供 API 处理和分析的开源基础软件公司,于 2019 年开源了新一代云原生 API 网关 -- APISIX 并捐赠给 Apache 软件基金会。此后,API7.ai 一直积极投入支持 Apache APISIX 的开发、维护和社区运营。与千万贡献者、使用者、支持者一起做出世界级的开源项目,是 API7.ai 努力的目标。


API7.ai 是一家提供 API 处理和分析的开源基础软件公司,于 2019 年开源了新一代云原生 API 网关 -- API...

99 声望
37 粉丝
0 条评论
推荐阅读
API7 助力头部券商实现数字化转型
随着中国经济步入高质量发展阶段,数字化转型正在被更多的企业提上议程。2021 年证监会出台的《证券期货行业科技发展“十四五”规划》中指出,需“提升证券期货业数据治理水平”,“深化数字化转型标准建设,推动行业...

API7_技术团队阅读 219

终于卷完了!Redis 打怪升级进阶成神之路(2023 最新版)!
是一种非关系型数据库服务,它能解决常规数据库的并发能力,比如传统的数据库的IO与性能的瓶颈,同样它是关系型数据库的一个补充,有着比较好的高效率与高性能。专注于key-value查询的redis、memcached、ttserver。

民工哥11阅读 989

封面图
算法可视化:一文弄懂 10 大排序算法
在本文中,我们将通过动图可视化加文字的形式,循序渐进全面介绍不同类型的算法及其用途(包括原理、优缺点及使用场景)并提供 Python 和 JavaScript 两种语言的示例代码。除此之外,每个算法都会附有一些技术说...

破晓L7阅读 945

封面图
硬卷完了!MongoDB 打怪升级进阶成神之路( 2023 最新版 )!
前面我们学习:MySQL 打怪升级进阶成神之路、Redis 打怪升级进阶成神之路,然后我们还在继续 NoSQL 的卷王之路。从第一篇文章开始,我们逐步详细介绍了 MogoDB 基础概念、安装和最基本的CURD操作、索引和聚合、工...

民工哥6阅读 553

封面图
「刷起来」Go必看的进阶面试题详解
逃逸分析是Go语言中的一项重要优化技术,可以帮助程序减少内存分配和垃圾回收的开销,从而提高程序的性能。下面是一道涉及逃逸分析的面试题及其详解。

王中阳Go4阅读 1.9k评论 1

封面图
VisBug:助力前端开发的浏览器插件
作为前端开发者相信肯定有遇到过以下场景:看到一个网站某个模块不错的样式效果想要看CSS代码开发过程中调整样式,如字符溢出,对齐,字体大小颜色之类更改网站数据或样式截图分享在开发过程中,我们通常会遇到需...

南城FE5阅读 1.7k评论 1

封面图
架构设计-高性能篇
大家好,我是易安!今天我们谈一谈架构设计中的高性能架构涉及到的底层思想。本文分为缓存架构,单服务器高性能模型,集群下的高性能模型三个部分,内容很干,希望你仔细阅读。

架构狂人4阅读 795

API7.ai 是一家提供 API 处理和分析的开源基础软件公司,于 2019 年开源了新一代云原生 API 网关 -- API...

99 声望
37 粉丝
宣传栏