Pathway 开源框架许可指南:Community / Scale 双许可模型、资源限额与 License Key 激活机制详解
Pathway(Pathway Live Data Framework)采用"BSL 源码授权 + 商业 Scale 许可"的双层许可模型,这是理解它能否免费用于生产、能用到多大的规模、以及哪些高级功能需要 License Key 的关键。本文基于仓库内的 LICENSE.txt、官方文档 docs/2.developers/4.user-guide/10.introduction/65.licensing-guide.md 以及 Python 客户端源码(python/pathway/internals/config.py、integration_tests/license/test_license.py),完整梳理 Community 与 Scale 两级许可的功能边界、每节点资源限额、多节点部署规则,并给出 License Key 的两种设置方式和源码级校验机制,读完即可判断自己的部署形态需要哪种许可。
一、许可模型总览
Pathway Live Data Framework 提供两级许可,覆盖社区用户与商业部署两类场景:
| 维度 | Community(免费) | Scale(进阶) |
|---|---|---|
| 授权形式 | BSL 1.1(Business Source License),4 年后自动转为 Apache 2.0 | 商业 License Key,分免费档与付费档 |
| 核心功能 | 绝大多数转换(transformation)与连接器 | Community 全部 + 企业级连接器 + 高级特性 |
| 内存限额(每节点) | 8 GB | 16 GB |
| CPU 限额(每节点) | 4 核 | 4 核 |
| 部署方式 | 仅限自托管(无托管云服务) | 自托管,支持多节点 |
| 限制条款 | 不得用于转售"流数据处理服务"(Stream Data Processing Service) | 使用 Scale Key 需同意发送匿名化使用数据(经 OpenTelemetry 采集器) |
下面逐层展开,并结合仓库源码说明这些限制是如何在代码中落地生效的。
二、Community 许可:BSL 授权、4 年转 Apache 2.0 与资源限额
2.1 授权形式:BSL 1.1 及其"变更条款"
仓库根目录的 LICENSE.txt 明确了 Community 版的法律形态:
- License:BSL 1.1(Business Source License);
- Licensor(授权方):Pathway Technology Inc. 及其关联公司(含 NavAlgo SAS);
- Licensed Work(受许可作品):Pathway Live Data Framework;
- Change Date(变更日期):自代码合入 GitHub 主发布分支起 4 年(且最早不早于 2027 年 7 月 20 日),具体日期以 GitHub 提交历史为准;
- Change License(变更许可):Apache License 2.0。
也就是说,社区版当前以 BSL 形式分发,但每一条版本线都会在"合入后 4 年"或"首次公开发布满 5 年"(取先到者)时自动转换为 Apache 2.0。对使用者的实际意义是:今天免费用的 Community 版本,若干年后将不可撤销地变成完全开源的 Apache 2.0 代码。
此外,BSL 文本中的 Additional Use Grant(附加使用授权) 规定了免费生产使用的四个前提条件:
- 单次安装只允许运行在一台机器(物理或虚拟)上,且不得超出软件发行版 runner 配置允许的工作线程数与进程数(即下一节所说的 8 GB / 4 核限额);
- 不得将许可用于 Stream Data Processing Service,也不得用于修改版/衍生作品。其中 BSL 对"Stream Data Processing Service"给出了精确定义:任何允许第三方(你的员工或独立承包商之外的人)通过直接或间接触发运行中计算图的部署、创建或结构变更,从而访问该框架功能的服务。该定义明确涵盖云服务商、托管服务、数据中心服务商等将 Pathway 嵌入更广泛服务售卖给客户或订阅者的情形——这正是文档中"云厂商不得转售流数据处理服务"条款的法律出处;
- 不得移动、修改、禁用或绕过任何 license key 或资源限制功能,不得删除或遮挡受许可保护的软件功能,也不得篡改授权与版权声明;
- 修改版仅允许用于修复可能改变软件功能范围的 bug 或安全漏洞,且本许可条款对受许可作品及其全部用户持续有效。
不满足上述条件时,BSL 文本要求:要么购买商业许可(即下文 Scale / Enterprise),要么停止使用。违反许可将自动终止当前及所有版本下的许可权利。
2.2 Community 版包含什么
Community 版对绝大多数场景是"开箱即用的生产许可":
- 包含 Pathway 中绝大多数的转换算子与特性(Table 运算、窗口聚合、连接、迭代等核心流处理能力);
- 包含绝大多数的数据连接器(文件、Kafka、PostgreSQL/MySQL 常规读写、S3 等);
- 允许大多数商业应用使用,免费用于生产环境,前提是遵守资源限额;
- 资源限额(每节点):8 GB RAM + 4 CPU 核;
- 仅支持自托管:Pathway 不提供托管云服务;
- 排除项:不得用于转售"流数据处理服务"(定义见上)。
三、Scale 许可:企业级连接器、高级特性与 16 GB 限额
Scale 面向需要更高资源上限与额外功能的用户。与 Community 相比,Scale 的核心增量是:
3.1 企业级连接器(Entitlements)
仓库源码中,Scale 版解锁的能力通过 entitlement(权限项) 机制逐一点名校验。integration_tests/license/test_license.py 中完整列出了 Scale 档覆盖的权限项:
SCALE_TIER_ENTITLEMENTS = [
"advanced-parser",
"bigquery",
"clickhouse",
"deltalake",
"dynamodb",
"elasticsearch",
"full-persistence",
"iceberg",
"kinesis",
"milvusdb",
"mongodb-oplog-reader",
"monitoring",
"mssql",
"mysql",
"postgres-wal-reader",
"questdb",
"xpack-sharepoint",
"xpack-llm-mcp",
"worker-count-scaling",
"multiple-machines",
"leann",
"rabbitmq",
]
文档中点名的三大企业连接器(SharePoint、Delta Lake、Iceberg)对应其中的 xpack-sharepoint、deltalake、iceberg 三项;源码里还可以看到大量连接器入口都会先做权限检查,例如:
- Delta Lake 读写:python/pathway/io/deltalake/__init__.py 中调用
_check_entitlements("deltalake"); - Iceberg:python/pathway/io/iceberg/__init__.py 中调用
_check_entitlements("iceberg"); - 类似地,ClickHouse、DynamoDB、Elasticsearch、Kinesis、Milvus、BigQuery、LeANN 等 python/pathway/io 下的连接器均在入口处以
_check_entitlements("<name>")校验; - SharePoint、SlideParser 等位于 xpack 子包(python/pathway/xpacks),LLM 高级解析器对应
advanced-parser权限项。
3.2 高级特性
- Full persistence(完整持久化):基于 python/pathway/persistence 包的持久化与回放机制(
PATHWAY_REPLAY_STORAGE、PATHWAY_SNAPSHOT_ACCESS等),对应full-persistence权限项; - Monitoring(监控):通过
pathway.set_monitoring_config(server_endpoint=...)将指标推送到兼容 OTLP gRPC 的 OpenTelemetry 端点,详见 docs/2.developers/4.user-guide/60.deployment/50.live-data-framework-monitoring.md,对应monitoring权限项; - SlideParser(幻灯片解析):
pathway.xpacks.llm中的 LLM 高级解析器,对应advanced-parser权限项。
3.3 资源限额与激活方式
Scale 版将每节点内存上限提升到 16 GB RAM(CPU 仍为 4 核),并需通过 License Key 激活。激活有两条等价路径:
方式一:环境变量(适合容器化/自托管部署)。python/pathway/internals/config.py 中 PathwayConfig 直接从环境变量读取:
@dataclass
class PathwayConfig:
...
license_key: str | None = _env_field("PATHWAY_LICENSE_KEY")
即设置 PATHWAY_LICENSE_KEY 环境变量即可。
方式二:API 调用 pathway.set_license_key()。定义在 python/pathway/internals/config.py:
import pathway as pw
# 设置 Scale 许可密钥;传 None 可清除已设置的 key
pw.set_license_key("YOUR_LICENSE_KEY")
其内部实现只是把 key 写入当前上下文中的 PathwayConfig.license_key(基于 ContextVar,每个 run_all() 会话独立),真正的许可验证与权限校验发生在这之后:
def _check_entitlements(*args: str):
return api.check_entitlements(
license_key=get_pathway_config().license_key, entitlements=list(args)
)
测试用例(integration_tests/license/test_license.py)验证了各类异常路径的行为:
- 格式非法的 key:
pw.run_all()抛出RuntimeError: unable to validate license; - 签名错误(伪造)的 key:抛出
unable to validate license: license file is invalid; - 未设置 key 却使用 Scale 功能:抛出
the feature(s) you used ["<ENTITLEMENT>"] require a Pathway license key, which is free.,并提示设置PATHWAY_LICENSE_KEY环境变量; - offline license 用于默认策略校验:抛出
offline license not allowed; - 企业版过期 key:记录日志
License has expired. Please renew to continue using the service。
License Key 分为不同档位(tier),可以是免费档(覆盖上表 Scale 权限项、默认策略)或付费档,按资源需求选择。
3.4 Scale 用户的附加条款:匿名遥测
使用 Scale License Key 即表示同意:匿名化的产品使用数据会通过 OpenTelemetry 采集器发送给 Pathway,用于改进产品与支持服务;数据收集受 Pathway 隐私政策约束。源码行为与之一致:默认 Scale key 下运行会打印 "Telemetry enabled"(见 integration_tests/license/test_license.py 中 test_license_default_policy 断言),而企业版构建(version 以 +enterprise 结尾)不启用遥测(test_license_enterprise 断言日志中不含 Telemetry enabled)。
四、多节点部署与许可考量
4.1 资源限额是否按节点计算?
是。 内存(Community 8 GB / Scale 16 GB)与 CPU(4 核)限额均按节点(per node) 计算,集群总规模 = 单节点限额 × 节点数。
4.2 多节点如何购买许可?
- 可以混用免费(小)与付费(大)Scale 节点,按节点购买多份许可;
- Enterprise 许可可在一份协议下覆盖所有节点与所有管道(pipeline)。
4.3 多机与自动缩放的源码佐证
多机部署在 CLI 层有明确的许可闸门:python/pathway/cli.py 中,pathway spawn 指定远程 addresses 启动多机运行时先执行:
if addresses is not None:
_check_entitlements("multiple-machines")
env_common["PATHWAY_ADDRESSES"] = addresses
即多机能力对应 multiple-machines 权限项,未持 Scale 及以上许可会直接报错。
同理,worker 自动伸缩(worker-count scaling) 对应 worker-count-scaling 权限项,且从 python/pathway/tests/test_io.py 可以看到,启用 worker_scaling_enabled=True 的持久化配置必须通过 pathway spawn 执行,直接 pw.run() 会抛出 Programs with worker scaling must only be executed via 'pathway spawn'。
自动化限制:非企业级用户不允许自动拉起新实例——扩缩容必须由团队成员人工介入完成。企业级许可则解除该限制,这是 Enterprise 与多份 Scale 许可之间在运维自动化上的核心差别。
五、选型建议:如何判断需要哪种许可
综合 docs/2.developers/4.user-guide/10.introduction/65.licensing-guide.md 与源码实现,可按以下规则快速判断:
- 单节点自托管、内存 ≤ 8 GB、CPU ≤ 4 核、不转售流处理服务 → Community 版即可,生产使用免费,无需任何 key;
- 单节点需要 > 8 GB 内存(至 16 GB),或要用 Delta Lake / Iceberg / SharePoint、Full persistence、监控、SlideParser 等 → 申请 Scale License Key(免费档即可解锁上表 Scale 权限项),通过
PATHWAY_LICENSE_KEY环境变量或pathway.set_license_key()激活; - 多节点集群 → 每节点单独持有 Scale 许可(可混合免费/付费档),注意非企业档的扩缩容需人工操作;
- 全节点 + 全管道统一协议、需要自动伸缩等企业级能力 → 联系 Pathway 获取 Enterprise License(对应源码中的
+enterprise构建与insufficient license校验路径)。
六、小结
Pathway 的许可设计可以概括为三点:社区版 BSL 免费生产可用但限 8 GB/4 核每节点且 4 年后转 Apache 2.0(LICENSE.txt);Scale 版以免费或付费 License Key 解锁 16 GB 限额与企业连接器/高级特性,其生效机制是 _check_entitlements 对 22 项权限的逐一校验(python/pathway/internals/config.py、integration_tests/license/test_license.py);多节点与自动伸缩有额外的 multiple-machines、worker-count-scaling 许可门槛与人工介入要求。理解这三点,就能在当前仓库的代码层面准确预判自己部署形态的许可边界。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00