> ## Documentation Index
> Fetch the complete documentation index at: https://langchain-zh.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# LangSmith 数据平面

*数据平面* 由您的 [Agent 服务器](/langsmith/agent-server)（部署）、其支持基础设施以及持续轮询 [LangSmith 控制平面](/langsmith/control-plane)更新的“监听器”应用程序组成。

## 服务器基础设施

除了 [Agent 服务器](/langsmith/agent-server)本身，以下每个服务器的基础设施组件也包含在广义的“数据平面”定义中：

* **PostgreSQL**：用户、运行和内存数据的持久化层。
* **Redis**：工作进程的通信和临时元数据存储。
* **密钥存储**：环境密钥的安全管理。
* **自动扩缩器**：根据负载扩缩服务器容器。

## “监听器”应用程序

数据平面“监听器”应用程序定期调用 [控制平面 API](/langsmith/control-plane#control-plane-api) 以：

* 确定是否应创建新的部署。
* 确定现有部署是否应更新（即新版本）。
* 确定现有部署是否应删除。

换句话说，数据平面“监听器”读取控制平面的最新状态（期望状态），并采取行动协调待处理的部署（当前状态）以匹配最新状态。

## PostgreSQL

PostgreSQL 存储服务器资源（线程、运行、助手、定时任务）以及保存在 [长期记忆存储](/oss/python/langgraph/persistence#memory-store) 中的项目。它也是 [检查点](/oss/python/langgraph/persistence)（图执行状态）的默认后端。您可以选择将检查点存储在 MongoDB 中——请参阅 [配置检查点后端](/langsmith/configure-checkpointer)。无论检查点后端如何，PostgreSQL 始终是必需的。

## Redis

Redis 在每个 Agent 服务器中用作服务器和队列工作进程之间通信的方式，并用于存储临时元数据。用户或运行数据不会存储在 Redis 中。

### 通信

Agent 服务器中的所有运行都由作为每个部署一部分的后台工作进程池执行。为了为这些运行启用某些功能（例如取消和输出流式传输），我们需要一个服务器和处理特定运行的工作进程之间的双向通信通道。我们使用 Redis 来组织这种通信。

1. Redis 列表用作一种机制，以便在创建新运行时立即唤醒工作进程。此列表中仅存储一个哨兵值，不包含实际的运行信息。运行信息随后由工作进程从 PostgreSQL 中检索。
2. Redis 字符串和 Redis PubSub 通道的组合用于服务器向相应工作进程传达运行取消请求。
3. Redis PubSub 通道由工作进程用于在运行处理期间广播来自代理的流式输出。服务器中任何打开的 `/stream` 请求都将订阅该通道，并在事件到达时将其转发到响应中。任何时候都不会在 Redis 中存储事件。

### 临时元数据

Agent 服务器中的运行可能会针对特定故障进行重试（目前仅针对运行期间遇到的暂时性 PostgreSQL 错误）。为了限制重试次数（目前每个运行限制为 3 次尝试），我们在运行被拾取时在 Redis 字符串中记录尝试次数。这除了其 ID 外不包含任何运行特定信息，并在短暂延迟后过期。

## 数据平面功能

本节描述数据平面的各种功能。

### 数据区域

<Info>
  **仅适用于云部署**
  数据区域仅适用于 [云](/langsmith/cloud) 部署。
</Info>

部署可以在 2 个数据区域创建：美国和欧盟

部署的数据区域由创建部署的 LangSmith 组织的数据区域决定。部署及其底层数据库不能在数据区域之间迁移。

### 自动扩缩

[`生产` 类型](/langsmith/control-plane#deployment-types) 的部署会自动扩展到最多 10 个容器。扩缩基于 3 个指标：

1. CPU 利用率
2. 内存利用率
3. 待处理（进行中）[运行](/langsmith/assistants#execution) 的数量

对于 CPU 利用率，自动扩缩器以 75% 的利用率为目标。这意味着自动扩缩器将增加或减少容器数量，以确保 CPU 利用率达到或接近 75%。对于内存利用率，自动扩缩器同样以 75% 的利用率为目标。

对于待处理运行数量，自动扩缩器以 10 个待处理运行为目标。例如，如果当前容器数量为 1，但待处理运行数量为 20，则自动扩缩器会将部署扩展到 2 个容器（20 个待处理运行 / 2 个容器 = 每个容器 10 个待处理运行）。

每个指标都是独立计算的，自动扩缩器将根据导致最大容器数量的指标来确定扩缩操作。

这些指标并不都适用于每种容器类型。[队列工作进程](/langsmith/agent-server#runtime-architecture) 根据待处理运行数量扩缩——当积压增长时，更多工作进程会启动以处理积压。[API 服务器](/langsmith/agent-server#runtime-architecture) 根据 CPU 和内存扩缩，响应客户端请求量。这意味着运行提交的激增不会减慢读取操作（如获取线程状态）。有关自托管配置详情，请参阅 [为扩缩配置 Agent 服务器](/langsmith/agent-server-scale)。

缩减操作在采取任何行动之前会延迟 30 分钟。换句话说，如果自动扩缩器决定缩减部署，它将首先等待 30 分钟再缩减。30 分钟后，重新计算指标，如果重新计算的指标导致容器数量低于当前数量，则部署将缩减。否则，部署保持扩展状态。这个“冷却”期确保部署不会过于频繁地扩缩。

### 静态 IP 地址

<Info>
  **仅适用于云部署**
  静态 IP 地址仅适用于 [云](/langsmith/cloud) 部署。
</Info>

2025 年 1 月 6 日之后创建的所有部署的流量都将通过 NAT 网关。此 NAT 网关将根据数据区域拥有多个静态 IP 地址。有关静态 IP 地址列表，请参阅 [允许列表 IP 地址表](/langsmith/deploy-to-cloud#allowlist-ip-addresses)。

### 负载大小

<Info>
  **仅适用于云部署**
  负载大小限制仅适用于 [云](/langsmith/cloud) 部署。
</Info>

发送到 [云](/langsmith/cloud) 部署的所有请求的最大负载大小为 25 MB。尝试发送负载大于 25 MB 的请求将导致 `413 Payload Too Large` 错误。

### 自定义 PostgreSQL

<Info>
  自定义 PostgreSQL 实例仅适用于 [混合](/langsmith/hybrid) 和 [自托管](/langsmith/self-hosted) 部署。
</Info>

可以使用自定义 PostgreSQL 实例代替 [控制平面自动创建的实例](/langsmith/control-plane#database-provisioning)。指定 [`POSTGRES_URI_CUSTOM`](/langsmith/env-var#postgres_uri_custom) 环境变量以使用自定义 PostgreSQL 实例。

多个部署可以共享同一个 PostgreSQL 实例。例如，对于 `部署 A`，`POSTGRES_URI_CUSTOM` 可以设置为 `postgres://<用户>:<密码>@/<数据库名称_1>?host=<主机名_1>`，对于 `部署 B`，`POSTGRES_URI_CUSTOM` 可以设置为 `postgres://<用户>:<密码>@/<数据库名称_2>?host=<主机名_1>`。`<数据库名称_1>` 和 `数据库名称_2` 是同一实例中的不同数据库，但 `<主机名_1>` 是共享的。**同一数据库不能用于不同的部署**。

### 自定义 Redis

<Info>
  自定义 Redis 实例仅适用于 [混合](/langsmith/hybrid) 和 [自托管](/langsmith/self-hosted) 部署。
</Info>

可以使用自定义 Redis 实例代替控制平面自动创建的实例。指定 [REDIS\_URI\_CUSTOM](/langsmith/env-var#redis_uri_custom) 环境变量以使用自定义 Redis 实例。

多个部署可以共享同一个 Redis 实例。例如，对于 `部署 A`，`REDIS_URI_CUSTOM` 可以设置为 `redis://<主机名_1>:<端口>/1`，对于 `部署 B`，`REDIS_URI_CUSTOM` 可以设置为 `redis://<主机名_1>:<端口>/2`。`1` 和 `2` 是同一实例中的不同数据库编号，但 `<主机名_1>` 是共享的。**同一数据库编号不能用于不同的部署**。

### MongoDB 检查点存储

<Info>
  适用于 [云](/langsmith/cloud)（使用外部管理的 MongoDB 实例）和 [独立](/langsmith/deploy-standalone-server) 部署。
</Info>

您可以使用 MongoDB 作为检查点存储的替代后端。配置后，MongoDB 仅处理检查点数据——PostgreSQL 对于所有其他服务器资源仍然是必需的。

有关设置说明，请参阅 [配置检查点后端](/langsmith/configure-checkpointer)。

### LangSmith 追踪

Agent 服务器自动配置为向 LangSmith 发送追踪。有关每个部署选项的详细信息，请参阅下表。

| 云部署                         | 混合部署                             | 自托管部署                                              |
| --------------------------- | -------------------------------- | -------------------------------------------------- |
| 必需<br />追踪到 LangSmith SaaS。 | 可选<br />禁用追踪或追踪到 LangSmith SaaS。 | 可选<br />禁用追踪、追踪到 LangSmith SaaS 或追踪到自托管 LangSmith。 |

### 遥测

Agent 服务器自动配置为报告遥测元数据用于计费目的。有关每个部署选项的详细信息，请参阅下表。

| 云部署                   | 混合部署                  | 自托管部署                                                               |
| --------------------- | --------------------- | ------------------------------------------------------------------- |
| 遥测发送到 LangSmith SaaS。 | 遥测发送到 LangSmith SaaS。 | 自报告使用情况（审计）用于气隙许可证密钥。<br />对于 LangSmith 许可证密钥，遥测发送到 LangSmith SaaS。 |

### 许可

Agent 服务器自动配置为执行许可证密钥验证。有关每个部署选项的详细信息，请参阅下表。

| 云部署                                   | 混合部署                                  | 自托管部署                                |
| ------------------------------------- | ------------------------------------- | ------------------------------------ |
| LangSmith API 密钥针对 LangSmith SaaS 验证。 | LangSmith API 密钥针对 LangSmith SaaS 验证。 | 气隙许可证密钥或平台许可证密钥针对 LangSmith SaaS 验证。 |

***

<div className="source-links">
  <Callout icon="edit">
    [Edit this page on GitHub](https://github.com/langchain-ai/docs/edit/main/src/i18n\zh-CN\langsmith\data-plane.mdx) or [file an issue](https://github.com/langchain-ai/docs/issues/new/choose).
  </Callout>

  <Callout icon="terminal-2">
    [Connect these docs](/use-these-docs) to Claude, VSCode, and more via MCP for real-time answers.
  </Callout>
</div>
