LangGraph 数据平面¶
术语"数据平面"广泛用于指 LangGraph 服务器(部署)、每个服务器的相应基础设施,以及持续轮询来自 LangGraph 控制平面的更新的"监听器"应用程序。
服务器基础设施¶
除了 LangGraph 服务器本身之外,以下每个服务器的基础设施组件也包含在"数据平面"的广泛定义中:
- Postgres
- Redis
- 密钥存储
- 自动扩展器
"监听器"应用程序¶
数据平面"监听器"应用程序定期调用控制平面 API以:
- 确定是否应创建新部署。
- 确定是否应更新现有部署(即新修订)。
- 确定是否应删除现有部署。
换句话说,数据平面"监听器"读取控制平面的最新状态(期望状态)并采取行动来协调未完成的部署(当前状态)以匹配最新状态。
Postgres¶
Postgres 是 LangGraph 服务器中所有用户、运行和长期记忆数据的持久化层。它存储检查点(有关更多信息,请参阅此处)、服务器资源(线程、运行、助手和定时任务),以及保存在长期记忆存储中的项目(有关更多信息,请参阅此处)。
Redis¶
Redis 在每个 LangGraph 服务器中用作服务器和队列工作器通信的方式,并存储临时元数据。用户或运行数据不存储在 Redis 中。
通信¶
LangGraph 服务器中的所有运行都由每个部署中的后台工作器池执行。为了启用这些运行的某些功能(例如取消和输出流式传输),我们需要服务器和处理特定运行的工作器之间的双向通信通道。我们使用 Redis 来组织该通信。
- Redis 列表用作一种机制,在创建新运行时立即唤醒工作器。此列表中仅存储哨兵值,没有实际的运行信息。然后工作器从 Postgres 检索运行信息。
- Redis 字符串和 Redis PubSub 通道的组合用于服务器向适当的工作器传达运行取消请求。
- 工作器使用 Redis PubSub 通道在处理运行时从智能代理广播流式输出。服务器中任何打开的
/stream请求都将订阅该通道,并在事件到达时将其转发到响应。任何时候都不会在 Redis 中存储任何事件。
临时元数据¶
LangGraph 服务器中的运行可能会因特定故障而重试(目前仅针对运行期间遇到的瞬时 Postgres 错误)。为了限制重试次数(目前每次运行限制为 3 次尝试),我们在拾取运行时将尝试次数记录在 Redis 字符串中。除了其 ID 之外,它不包含任何特定于运行的信息,并在短暂的延迟后过期。
数据平面功能¶
本节描述数据平面的各种功能。
数据区域¶
仅适用于 Cloud SaaS
数据区域仅适用于 Cloud SaaS 部署。
部署可以在 2 个数据区域中创建:美国和欧盟
部署的数据区域由创建部署的 LangSmith 组织的数据区域决定。部署和部署的底层数据库无法在数据区域之间迁移。
自动扩展¶
生产版类型部署会自动扩展到 10 个容器。扩展基于 3 个指标:
- CPU 利用率
- 内存利用率
- 待处理(进行中)的运行数量
对于 CPU 利用率,自动扩展器的目标是 75% 的利用率。这意味着自动扩展器将向上或向下扩展容器数量,以确保 CPU 利用率达到或接近 75%。对于内存利用率,自动扩展器的目标同样是 75% 的利用率。
对于待处理运行的数量,自动扩展器的目标是 10 个待处理运行。例如,如果当前容器数量为 1,但待处理运行数量为 20,自动扩展器将把部署扩展到 2 个容器(20 个待处理运行 / 2 个容器 = 每个容器 10 个待处理运行)。
每个指标独立计算,自动扩展器将根据导致最大容器数量的指标来确定扩展操作。
缩减操作在采取任何行动之前会延迟 30 分钟。换句话说,如果自动扩展器决定缩减部署,它将首先等待 30 分钟,然后再缩减。30 分钟后,将重新计算指标,如果重新计算的指标导致的容器数量低于当前数量,则部署将缩减。否则,部署将保持扩展状态。这个"冷却"期确保部署不会过于频繁地扩展和缩减。
静态 IP 地址¶
仅适用于 Cloud SaaS
静态 IP 地址仅适用于 Cloud SaaS 部署。
2025 年 1 月 6 日之后创建的部署的所有流量都将通过 NAT 网关。此 NAT 网关将根据数据区域拥有多个静态 IP 地址。有关静态 IP 地址列表,请参阅下表:
| 美国 | 欧盟 |
|---|---|
| 35.197.29.146 | 34.13.192.67 |
| 34.145.102.123 | 34.147.105.64 |
| 34.169.45.153 | 34.90.22.166 |
| 34.82.222.17 | 34.147.36.213 |
| 35.227.171.135 | 34.32.137.113 |
| 34.169.88.30 | 34.91.238.184 |
| 34.19.93.202 | 35.204.101.241 |
| 34.19.34.50 | 35.204.48.32 |
自定义 Postgres¶
Info
自定义 Postgres 实例仅适用于自托管数据平面和自托管控制平面部署。
可以使用自定义 Postgres 实例,而不是控制平面自动创建的实例。指定 POSTGRES_URI_CUSTOM 环境变量以使用自定义 Postgres 实例。
多个部署可以共享同一个 Postgres 实例。例如,对于部署 A,POSTGRES_URI_CUSTOM 可以设置为 postgres://<user>:<password>@/<database_name_1>?host=<hostname_1>,对于部署 B,POSTGRES_URI_CUSTOM 可以设置为 postgres://<user>:<password>@/<database_name_2>?host=<hostname_1>。<database_name_1> 和 database_name_2 是同一实例中的不同数据库,但 <hostname_1> 是共享的。同一个数据库不能用于不同的部署。
自定义 Redis¶
Info
自定义 Redis 实例仅适用于自托管数据平面和自托管控制平面部署。
可以使用自定义 Redis 实例,而不是控制平面自动创建的实例。指定 REDIS_URI_CUSTOM 环境变量以使用自定义 Redis 实例。
多个部署可以共享同一个 Redis 实例。例如,对于部署 A,REDIS_URI_CUSTOM 可以设置为 redis://<hostname_1>:<port>/1,对于部署 B,REDIS_URI_CUSTOM 可以设置为 redis://<hostname_1>:<port>/2。1 和 2 是同一实例中的不同数据库编号,但 <hostname_1> 是共享的。同一个数据库编号不能用于不同的部署。
LangSmith 跟踪¶
LangGraph 服务器自动配置为向 LangSmith 发送跟踪。有关每个部署选项的详细信息,请参阅下表。
| Cloud SaaS | 自托管数据平面 | 自托管控制平面 | 独立容器 |
|---|---|---|---|
| 必需 跟踪到 LangSmith SaaS。 |
可选 禁用跟踪或跟踪到 LangSmith SaaS。 |
可选 禁用跟踪或跟踪到自托管 LangSmith。 |
可选 禁用跟踪、跟踪到 LangSmith SaaS 或跟踪到自托管 LangSmith。 |
遥测¶
LangGraph 服务器自动配置为报告用于计费目的的遥测元数据。有关每个部署选项的详细信息,请参阅下表。
| Cloud SaaS | 自托管数据平面 | 自托管控制平面 | 独立容器 |
|---|---|---|---|
| 遥测发送到 LangSmith SaaS。 | 遥测发送到 LangSmith SaaS。 | 气隙许可证密钥的自报告使用(审计)。 LangGraph Platform 许可证密钥的遥测发送到 LangSmith SaaS。 |
气隙许可证密钥的自报告使用(审计)。 LangGraph Platform 许可证密钥的遥测发送到 LangSmith SaaS。 |
许可¶
LangGraph 服务器自动配置为执行许可证密钥验证。有关每个部署选项的详细信息,请参阅下表。
| Cloud SaaS | 自托管数据平面 | 自托管控制平面 | 独立容器 |
|---|---|---|---|
| 针对 LangSmith SaaS 验证 LangSmith API 密钥。 | 针对 LangSmith SaaS 验证 LangSmith API 密钥。 | 气隙许可证密钥或针对 LangSmith SaaS 验证的 LangGraph Platform 许可证密钥。 | 气隙许可证密钥或针对 LangSmith SaaS 验证的 LangGraph Platform 许可证密钥。 |