Apache APISIX 2.13.0 发布
距离 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:
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "methods": ["GET"], "uris": [ "/uid/*" ], "plugins": { "opentelemetry": { "sampler": { "name": "always_on" } } }, "upstream": { "type": "roundrobin", "nodes": { "127.0.0.1:8089": 1 } } }'
命中该路由的请求将会上报 OpenTelemetry 的数据到对应的 collector。
此外,我们还新增了两个日志插件,支持把日志上报到 ClickHouse 和 Loggly 中。
ClickHouse 是地表最快的 OLAP 数据库之一。Apache APISIX 支持发送 access log 和 error log 到 ClickHouse,示例如下:
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "plugins": { "clickhouse-logger": { "user": "default", "password": "a", "database": "default", "logtable": "test", "endpoint_addr": "http://127.0.0.1:8123" } }, "upstream": { "type": "roundrobin", "nodes": { "127.0.0.1:1980": 1 } }, "uri": "/hello" }' curl http://127.0.0.1:9080/apisix/admin/plugin_metadata/error-log-logger -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "clickhouse": { "user": "default", "password": "a", "database": "error_log", "logtable": "t", "endpoint_addr": "http://127.0.0.1:8123" } }'
Loggly 是 SolarWinds 旗下的日志处理 SaaS 平台,我们支持通过 syslog 或 HTTP/HTTPS 的方式发送 access log。示例如下:
配置上报方式
curl http://127.0.0.1:9080/apisix/admin/plugin_metadata/loggly -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "protocol": "http" }'
配置需要上报的路由
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "plugins":{ "loggly":{ "customer_token":"xxx", } }, "upstream":{ "type":"roundrobin", "nodes":{ "127.0.0.1:80":1 } }, "uri":"/index.html" }'
更完善的多语言开发体系
Apache APISIX 自 2.11 版本起开始支持 Wasm(Proxy Wasm SDK),但 LTS 版本一直没有提供相应支持。在此次发布的 Apache APISIX 2.13.0 版本中,我们新增并完善了该功能。
在经过半年超过 10000 行代码(包括测试和文档)的开发后,APISIX 现已全面支持在处理请求头、请求体、响应头、响应体四个阶段运行 Wasm 代码。2.13.0 版本是第一个支持 Wasm 的 LTS 版本,可以说是一个新的里程碑。
除了 Wasm 之外,我们也正在开发传统的、基于 RPC 的多语言插件体系。不久之前,我们发布了 Python Runner 0.2.0 版本。几天后,我们也会发布 Go Runner 0.3.0 版本。
Bug 修复
-
SkyWalking 和 OpenTelemetry 没有追踪认证失败。
-
log-rotate
切割日志不支持按整点完成。 -
deepcopy
没有复制metatable
。 -
request-validate
对 JSON 里面重复键的处理 。 -
prometheus
重复计算指标。 -
当
conf.headers
缺失时,proxy-rewrite
中的conf.method
不生效 。 -
traffic-split
首条规则失败时无法匹配。 -
etcd 超时触发
resync_delay
。 -
proto
定义冲突。 -
limit-count
配置不变,重置计数器。 -
Admin API 的
plugin-metadata
和global-rule
计数有误。 -
合并 route 和 service 时 labels 丢失。
更多细节
除了上述功能和组件外,Apache APISIX 2.13.0 版本还更新了如下功能:
- grpc-transcode 支持通过
.pb
文件处理带 import 的 proto 定义。 - 支持从 K8s 配置中获取上游节点。
- 新增
csrf
插件,提供跨站请求伪造防护。 - 新增
mocking
插件,方便生成测试数据。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
在DataEase开源数据可视化平台中关联数据集制作宽表
编者注:本文为稀土掘金博主plateauandsp的原创文章。 原文链接: https://juejin.cn/post/7078555707561213989 大宽表是数据挖掘模型训练中经常需要使用到的手段之一。出于工作中对数据挖掘以及宽表制作的需求,我近期从网上了解到一个方便好用、号称“人人可用”的数据可视化工具——DataEase,从而在DataEase中采用模拟数据生成宽表,看看是否能够满足需求。本文详细介绍一下我的操作思路和步骤。 宽表的定义与作用 从字面意义上讲,宽表就是字段比较多的数据库表,通常是指业务主题相关的指标、维度、属性关联在一起的一张数据库表。由于把不同的内容都放在同一张表存储,宽表已经不符合三范式的模型设计规范。随之带来的主要坏处就是数据的大量冗余,与之相对应的好处就是查询的便捷与性能的提升。 宽表的设计广泛应用于数据挖掘模型训练前的数据准备。通过把相关字段放在同一张表中,可以大大提高数据挖掘模型训练过程中迭代计算时的效率。也就是说,用空间换时间,便于训练迭代、减少表关联数量,修改少量数据时就不需要改多张表。 DataEase的关联数据集 DataEase(h...
- 下一篇
Apache IoTDB v0.13.0 发布
Apache IoTDB v0.13.0 已经发布,此版本新增对齐序列存储模型,增加了对触发器等功能的支持;优化了现有 SQL 语法,并增加了新的语法支持;提升了查询功能,增加了对连续查询、嵌套表达式等的支持;优化了数据写入的过程,提升了系统文件合并的性能;拓展了与外部系统的兼容,新增 Grafana 插件、REST API 等。 新功能 [IOTDB-924] 支持一条 SQL 插入多行时间戳的数据 [IOTDB-959] 增加 Create Storage Group 语法 [IOTDB-1037] 支持在 JDBC URL 参数中设置 rpc_compression (是否开启 RPC 压缩) [IOTDB-1059] 支持 SQL 插入数据不带时间戳,使用服务器当前时间 [IOTDB-1143] 支持连续查询功能。连续查询在某些系统中又被称为连续聚集。具体的,它允许用户在系统中定义定时查询任务,定时将聚合查询的结果物化到指定的序列中。通过定义持续查询,可避免在大数据量、高复杂聚合场景下产生的时间开销。 [IOTDB-1199] 支持对齐时间序列和元数据模板 [IOTDB-13...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,CentOS8安装Elasticsearch6.8.6
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8编译安装MySQL8.0.19
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题