服务器基础设施
除了 LangGraph 服务器本身,每个服务器的以下基础设施组件也包含在“数据平面”的广义定义中:- PostgreSQL:用户、运行和内存数据的持久化层。
- Redis:用于工作进程的通信和临时元数据。
- 密钥存储:安全管理环境变量密钥。
- 自动扩缩器:根据负载扩缩服务器容器。
“监听器”应用程序
数据平面“监听器”应用程序会定期调用 控制平面 API 来- 确定是否应创建新的部署。
- 确定是否应更新现有部署(即新版本)。
- 确定是否应删除现有部署。
PostgreSQL
PostgreSQL 是 LangGraph 服务器中所有用户、运行和长期内存数据的持久层。它存储检查点(更多信息请参阅此处)、服务器资源(线程、运行、助手和定时任务),以及长期内存存储中保存的项目(更多信息请参阅此处)。Redis
每个 LangGraph 服务器都使用 Redis 作为服务器和队列工作进程进行通信以及存储临时元数据的方式。Redis 中不存储任何用户或运行数据。通信
LangGraph 服务器中的所有运行都由每个部署的后台工作进程池执行。为了为这些运行启用某些功能(例如取消和输出流),我们需要一个服务器和处理特定运行的工作进程之间的双向通信通道。我们使用 Redis 来组织这种通信。- Redis 列表用作新运行创建后立即唤醒工作进程的机制。此列表中仅存储一个哨兵值,没有实际的运行信息。运行信息随后由工作进程从 PostgreSQL 中检索。
- Redis 字符串和 Redis PubSub 通道的组合用于服务器向相应的工作进程传达运行取消请求。
- Redis PubSub 通道由工作进程用于在处理运行期间广播来自代理的流式输出。服务器中任何开放的
/stream请求都将订阅该通道,并在事件到达时将其转发到响应。Redis 中不会随时存储任何事件。
临时元数据
LangGraph 服务器中的运行可能会因特定故障(目前仅限于运行期间遇到的瞬态 PostgreSQL 错误)而重试。为了限制重试次数(目前每个运行最多 3 次尝试),我们会在将其提取时将尝试次数记录在 Redis 字符串中。这不包含除其 ID 之外的任何特定于运行的信息,并在短时间延迟后过期。数据平面功能
本节描述了数据平面的各种功能。数据区域
仅适用于云 数据区域仅适用于 云 部署。
自动扩缩
生产类型部署自动扩缩至 10 个容器。扩缩基于 3 个指标:
- CPU 利用率
- 内存利用率
- 待处理(进行中)运行的数量
静态 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 |
| 34.59.244.194 | |
| 34.9.99.224 | |
| 34.68.27.146 | |
| 34.41.178.137 | |
| 34.123.151.210 | |
| 34.135.61.140 | |
| 34.121.166.52 | |
| 34.31.121.70 |
自定义 PostgreSQL
可以使用自定义 PostgreSQL 实例来替代控制平面自动创建的实例。指定POSTGRES_URI_CUSTOM 环境变量以使用自定义 PostgreSQL 实例。 多个部署可以共享同一个 PostgreSQL 实例。例如,对于 Deployment A,POSTGRES_URI_CUSTOM 可以设置为 postgres://<user>:<password>@/<database_name_1>?host=<hostname_1>;对于 Deployment B,POSTGRES_URI_CUSTOM 可以设置为 postgres://<user>:<password>@/<database_name_2>?host=<hostname_1>。<database_name_1> 和 database_name_2 是同一个实例中的不同数据库,但 <hostname_1> 是共享的。不能将相同的数据库用于不同的部署。自定义 Redis
可以使用自定义 Redis 实例来替代控制平面自动创建的实例。指定 REDIS_URI_CUSTOM 环境变量以使用自定义 Redis 实例。 多个部署可以共享同一个 Redis 实例。例如,对于Deployment A,REDIS_URI_CUSTOM 可以设置为 redis://<hostname_1>:<port>/1;对于 Deployment B,REDIS_URI_CUSTOM 可以设置为 redis://<hostname_1>:<port>/2。1 和 2 是同一个实例中的不同数据库编号,但 <hostname_1> 是共享的。不能将相同的数据库编号用于不同的部署。LangSmith 追踪
LangGraph 服务器会自动配置为将跟踪发送到 LangSmith。有关每个部署选项的详细信息,请参阅下表。| 云 | 混合 | 自托管 |
|---|---|---|
| 必填 跟踪到 LangSmith SaaS。 | 可选 禁用跟踪或跟踪到 LangSmith SaaS。 | 可选 禁用跟踪、跟踪到 LangSmith SaaS 或跟踪到自托管 LangSmith。 |
遥测
LangGraph 服务器已自动配置为报告用于计费的遥测元数据。有关每个部署选项的详细信息,请参见下表。| 云 | 混合 | 自托管 |
|---|---|---|
| 遥测数据发送到 LangSmith SaaS。 | 遥测数据发送到 LangSmith SaaS。 | 用于空隙许可密钥的自报使用情况(审计)。 使用 LangSmith 许可密钥将遥测数据发送到 LangSmith SaaS。 |
许可
LangGraph 服务器已自动配置为执行许可证密钥验证。有关每个部署选项的详细信息,请参见下表。| 云 | 混合 | 自托管 |
|---|---|---|
| LangSmith API 密钥已针对 LangSmith SaaS 进行验证。 | LangSmith API 密钥已针对 LangSmith SaaS 进行验证。 | 空隙许可密钥或平台许可密钥已针对 LangSmith SaaS 进行验证。 |
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。