首页
/ Pathway 开源框架许可指南:Community / Scale 双许可模型、资源限额与 License Key 激活机制详解

Pathway 开源框架许可指南:Community / Scale 双许可模型、资源限额与 License Key 激活机制详解

2026-09-05 23:24:00作者:曹令琨Iris

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.pyintegration_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(附加使用授权) 规定了免费生产使用的四个前提条件:

  1. 单次安装只允许运行在一台机器(物理或虚拟)上,且不得超出软件发行版 runner 配置允许的工作线程数与进程数(即下一节所说的 8 GB / 4 核限额);
  2. 不得将许可用于 Stream Data Processing Service,也不得用于修改版/衍生作品。其中 BSL 对"Stream Data Processing Service"给出了精确定义:任何允许第三方(你的员工或独立承包商之外的人)通过直接或间接触发运行中计算图的部署、创建或结构变更,从而访问该框架功能的服务。该定义明确涵盖云服务商、托管服务、数据中心服务商等将 Pathway 嵌入更广泛服务售卖给客户或订阅者的情形——这正是文档中"云厂商不得转售流数据处理服务"条款的法律出处;
  3. 不得移动、修改、禁用或绕过任何 license key 或资源限制功能,不得删除或遮挡受许可保护的软件功能,也不得篡改授权与版权声明;
  4. 修改版仅允许用于修复可能改变软件功能范围的 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-sharepointdeltalakeiceberg 三项;源码里还可以看到大量连接器入口都会先做权限检查,例如:

3.2 高级特性

  • Full persistence(完整持久化):基于 python/pathway/persistence 包的持久化与回放机制(PATHWAY_REPLAY_STORAGEPATHWAY_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.pyPathwayConfig 直接从环境变量读取:

@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)验证了各类异常路径的行为:

  • 格式非法的 keypw.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.pytest_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 与源码实现,可按以下规则快速判断:

  1. 单节点自托管、内存 ≤ 8 GB、CPU ≤ 4 核、不转售流处理服务 → Community 版即可,生产使用免费,无需任何 key;
  2. 单节点需要 > 8 GB 内存(至 16 GB),或要用 Delta Lake / Iceberg / SharePoint、Full persistence、监控、SlideParser 等 → 申请 Scale License Key(免费档即可解锁上表 Scale 权限项),通过 PATHWAY_LICENSE_KEY 环境变量或 pathway.set_license_key() 激活;
  3. 多节点集群 → 每节点单独持有 Scale 许可(可混合免费/付费档),注意非企业档的扩缩容需人工操作;
  4. 全节点 + 全管道统一协议、需要自动伸缩等企业级能力 → 联系 Pathway 获取 Enterprise License(对应源码中的 +enterprise 构建与 insufficient license 校验路径)。

六、小结

Pathway 的许可设计可以概括为三点:社区版 BSL 免费生产可用但限 8 GB/4 核每节点且 4 年后转 Apache 2.0LICENSE.txt);Scale 版以免费或付费 License Key 解锁 16 GB 限额与企业连接器/高级特性,其生效机制是 _check_entitlements 对 22 项权限的逐一校验(python/pathway/internals/config.pyintegration_tests/license/test_license.py);多节点与自动伸缩有额外的 multiple-machinesworker-count-scaling 许可门槛与人工介入要求。理解这三点,就能在当前仓库的代码层面准确预判自己部署形态的许可边界。

登录后查看全文
热门项目推荐
相关项目推荐