Apache InLong(应龙) 最近发布了 2.4.0 版本,该版本关闭了 58 个 issue,包含 10 个新特性和 45+ 个优化及缺陷修复。该版本重点完成了对数据集成全链路的安全加固,覆盖权限校验、SQL 注入防护、命令执行与文件路径校验;同时扩展了 TransformSDK 对 ProtoBuf 及复杂类型的处理能力,优化了 DataProxy Go SDK 与 Python DataProxy SDK 的发布流程,并完善了 Audit 模块的路由管理与并发安全。Apache InLong 2.4.0 版本中,还完成了大量其它特性。
关于 Apache InLong
作为业界首个一站式、全场景海量数据集成框架,Apache InLong(应龙) 提供了自动、安全、可靠和高性能的数据传输能力,方便业务快速构建基于流式的数据分析、建模和应用。目前 InLong 正广泛应用于广告、支付、社交、游戏、人工智能等各个行业领域,服务上千个业务,其中高性能场景数据规模超百万亿条/天,高可靠场景数据规模超十万亿条/天。 InLong 项目定位的核心关键词是“一站式”、“全场景”和“海量数据”。对于“一站式”,我们希望屏蔽技术细节、提供完整数据集成及配套服务,实现开箱即用;对于“全场景”,我们希望提供全方位的解决方案,覆盖大数据领域常见的数据集成场景;对于“海量数据”,我们希望通过架构上的数据链路分层、全组件可扩展、自带多集群管理等优势,在百万亿条/天的基础上,稳定支持更大规模的数据量。
2.4.0 版本总览
Apache InLong(应龙) 最近发布了 2.4.0 版本,该版本关闭了 58 个 issue,包含 10 个新特性和 45+ 个优化及缺陷修复,主要完成了
- 安全能力全面加固,Manager 与 Agent 覆盖权限校验、SQL 注入防护、命令白名单校验及文件路径校验
- TransformSDK 支持多 Proto 文件、多层嵌套类型的 ProtoBuf 描述文件,并支持 List/Struct/Binary 复杂类型编码
- DataProxy Go SDK 优化连接初始化、工作协程选择与问题定位能力,Python DataProxy SDK 支持基于 PEP-517 构建标准 wheel 包
- Audit 优化审计路由管理,并解决 Audit SDK 在高并发下的线程安全问题
同时优化 Apache InLong 运营运维的使用体验。Apache InLong 2.4.0 版本中,还完成了大量其它特性。
Dashboard 模块
- 补充 Agent 页面缺失的安装方式
- 优化资源详情页长表单的文本展示,提升可读性
Manager 模块
- 增强 SQL 注入防护校验,修复
/api/node/testConnection与/api/cluster/testConnection接口的安全漏洞 - 新增命令白名单校验,并为 streamsource 删除、datanode 修改、租户角色创建与修改等操作补充权限校验
openapi.auth.enabled默认值调整为true,OpenAPI 鉴权默认开启- 为
AuditAlertRuleRequest的排序字段以及clusterController的 node 参数补充参数校验 - 修复查询 MQ 消息时 LIKE 匹配运算符返回结果不正确的问题,并完善 MQ 消息查询线程池耗尽时的异常处理
- 完善审计查询 nodeType 映射,避免出现空的审计 ID
Agent 模块
- 修复文件采集源路径未校验导致的路径穿越风险
- 使用
ProcessBuilder替换/bin/sh -c,规避命令注入风险 - 修复 switch 语句中缺失分支的问题
Sort 模块
- Sort Format 在字段解析出错时支持输出完整的原始行信息,便于问题定位
- 修复
DataFlowConfig.version为空时SortConfigUtil.checkUpdate抛出 NPE,导致 SortConfig 重新加载永久卡死的问题
SDK 模块
- TransformSDK 支持多 Proto 文件、多层嵌套类型的 ProtoBuf 描述文件的解码与转换,并支持解析 map 节点
- TransformSDK 支持 RowData 中 List、Struct、Binary 类型字段的编码,新增
concat_struct/extract_struct/extract_binary函数 - TransformSDK 支持 "not in" 运算符,支持使用 SQL 保留关键字作为源字段名(反引号包裹的列名)
- 修复
PbSourceData对未设置字段返回 protobuf 默认值而非 null,导致写入 Iceberg/Parquet 的数据不正确的问题 - DataProxy Go SDK 新增连接超时并在客户端初始化时容忍部分节点不可用,优化工作协程选择逻辑,支持服务端错误重试,并在发送超时及报错时打印远端服务地址
- Python DataProxy SDK 支持基于 PEP-517 构建标准 wheel 包,新增编译用 Dockerfile,并优化依赖版本要求
Audit 模块
- 优化审计路由管理,审计路由数据源管理支持域名配置
- 优化按天维度的审计数据统计,天级接口在无数据时补零
- 解决 Audit SDK 在高并发场景下的线程安全问题
- 修复
PulsarSink中静态ScheduledExecutorService导致的 ClassLoader 泄漏与共享状态污染问题 - 修复审计 SQL 脚本初始化失败的问题
Common 模块
- 新增 JSON 配置支持,并修复 jsonconfig 无法正确序列化的问题
CI 模块
- 修复 GitHub Action 工作流策略违规问题,升级 actions 版本并显式指定 actions 权限
- 修复单元测试全部执行失败的问题
2.4.0 版本主要特性
数据集成链路安全能力全面加固
安全是数据集成框架的核心能力。本版本社区对 Manager 与 Agent 进行了系统性的安全审视与加固,覆盖了管理面最常见的攻击面:
- 权限校验:删除 streamsource、修改 datanode、创建与修改租户角色时校验操作人权限,避免越权操作资源。
- SQL 注入防护:增强 SQL 注入防护校验,修复
/api/node/testConnection与/api/cluster/testConnection接口的安全漏洞。 - 命令执行:Manager 新增命令白名单校验,Agent 使用
ProcessBuilder替换/bin/sh -c,消除 shell 命令注入风险。 - 文件路径校验:Agent 对文件采集源路径进行校验,防止路径穿越。
- 默认安全:
openapi.auth.enabled默认值调整为true,OpenAPI 鉴权默认开启,无需手动配置。
感谢 @fuweng11 对此功能的贡献,具体请参考 INLONG-12129、INLONG-12133、INLONG-12135、INLONG-12144、INLONG-12156、INLONG-12160 ;感谢 @spiritxishi 对此功能的贡献,具体请参考 INLONG-12143、INLONG-12148、INLONG-12149 。
TransformSDK 支持 ProtoBuf 及复杂类型处理
InLong Transform 在分发侧适配复杂多样的数据分析场景。在实际业务中,ProtoBuf 描述通常被拆分为多个 Proto 文件并包含多层嵌套结构,而目标存储往往需要复杂类型而非打平的列。本版本大幅扩展了 TransformSDK 的表达能力:
- 支持多 Proto 文件、多层嵌套类型的 ProtoBuf 描述文件的解码与转换,并支持解析 map 节点。
- 支持 RowData 中 List、Struct、Binary 类型字段的编码,复杂类型可直接写入 Iceberg、Parquet 等目标存储。
- 新增
concat_struct、extract_struct、extract_binary函数,用于复杂类型的构造与提取。 - 增强 protobuf 处理与 SQL 别名解析能力,支持 "not in" 运算符,支持通过反引号使用 SQL 保留关键字作为源字段名。
感谢 @luchunliang 对此功能的贡献,具体请参考 INLONG-12108、INLONG-12111、INLONG-12113、INLONG-12117、INLONG-12125、INLONG-12158、INLONG-12056 。
DataProxy SDK 的 Go 与 Python 优化
DataProxy SDK 是业务数据上报的入口,其健壮性与接入便利性直接影响上报成功率。本版本同时优化了 Go 与 Python 两个 SDK:
- Go SDK 新增连接超时,并在客户端初始化时容忍部分节点不可用,少量 DataProxy 节点异常不再阻塞客户端启动。
- Go SDK 优化工作协程选择逻辑,支持服务端错误时的重试机制,并在发送超时与服务端报错时打印远端服务地址,加速问题定位。
- Python SDK 支持基于 PEP-517 构建标准 wheel 包,并提供编译用 Dockerfile,使发布与安装过程可复现。
感谢 @yfsn666 对此功能的贡献,具体请参考 INLONG-12119、INLONG-12120、INLONG-12121、INLONG-12058、INLONG-12062、INLONG-12016、INLONG-12054 ;感谢 @hzqmwne 对此功能的贡献,具体请参考 INLONG-12090 。
审计路由管理与并发安全优化
在 2.3.0 版本引入 Audit Store 横向扩展能力之后,本版本继续完善审计链路的易用性与稳定性:
- 优化审计路由管理,审计路由数据源管理支持域名配置,存储集群无需硬编码 IP 地址。
- 优化按天维度的审计数据统计,天级接口在无数据时补零,保证趋势曲线连续。
- 解决 Audit SDK 在高并发场景下的线程安全问题,提升审计数据的准确性。
感谢 @doleyzi 对此功能的贡献,具体请参考 INLONG-12060、INLONG-12088、INLONG-12067、INLONG-12137 。
未来规划
在 2.4.0 版本中,我们系统性地加固了安全能力,并丰富了 SDK 的数据处理能力。欢迎大家使用,如果有更多场景和需求,或者使用期间遇到的问题, 欢迎大家提 Issue 和 PR。在后续的版本中,InLong 社区将继续:
- 支持更多数据源采集能力
- 实时同步支持更多数据源、数据目标
- 持续完善全链路的安全与权限管理能力
我们也期待更多对 InLong 感兴趣的开发者可以参与贡献。