关于开源软件:Apache-APISIX-2120-版本发布新功能更适配新一年

5次阅读

共计 3687 个字符,预计需要花费 10 分钟才能阅读完成。

继 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 在线交换群,理解更多社区动静!

正文完
 0