跳到主要内容
LangSmith 旨在根据您的工作负载进行横向扩展。服务的每个实例都是无状态的,并且不会在内存中保留任何资源。该服务旨在优雅地处理新实例的添加或移除,包括硬关机情况。

服务器可扩展性

当您向服务添加更多实例时,只要在它们前面放置了适当的负载均衡机制,它们将分担 HTTP 负载。在大多数部署模式中,我们会自动为服务配置负载均衡器。在“无控制平面自托管”模式中,您有责任添加负载均衡器。由于实例是无状态的,任何负载均衡策略都将起作用,不需要会话粘性,也不建议使用。服务器的任何实例都可以与任何队列实例通信(通过 Redis PubSub),这意味着取消或流式传输正在进行的运行的请求可以由任何任意实例处理。

队列可扩展性

当您向服务添加更多实例时,它们将线性增加运行吞吐量,因为每个实例都被配置为处理一定数量的并发运行(默认值为 10)。每次运行的每次尝试都将由一个实例处理,并通过 Postgres 的 MVCC 模型强制执行精确一次语义(有关崩溃弹性详细信息,请参阅下面的部分)。由于瞬时数据库错误而失败的尝试最多重试 3 次。我们不使用长期事务或锁,这使我们能够更有效地利用 Postgres 资源。

弹性

当队列实例正在处理运行程序时,该队列工作程序将在 Redis 中记录一个定期心跳时间戳。 当收到正常关机请求 (SIGINT) 时,实例进入关机模式,该模式
  • 停止接受新的 HTTP 请求
  • 给予任何正在进行的运行有限的秒数来完成(如果未完成,它将被放回队列中)
  • 停止实例从队列中提取更多运行程序
如果由于服务器崩溃或基础设施故障导致硬关机,任何正在进行的运行将由内部清除程序任务拾取,该任务查找已超出其心跳窗口的正在进行的运行。清除程序每 2 分钟运行一次,并将运行放回队列中,以便另一个实例将其拾取。

Postgres 弹性

对于我们管理 Postgres 数据库的部署模式,我们有定期备份和持续复制的备用副本,用于自动故障转移。此 Postgres 配置仅适用于 生产 部署类型云部署选项 所有与 Postgres 的通信都针对可重试错误实现重试。如果 Postgres 暂时不可用,例如在数据库重新启动期间,大多数/所有流量应该继续成功。Postgres 的长时间故障将导致 LangGraph 服务器不可用。

Redis 弹性

所有需要持久存储的数据都存储在 Postgres 中,而不是 Redis 中。Redis 仅用于临时元数据以及实例之间的通信。因此,我们不对 Redis 提出持久性要求。 所有与 Redis 的通信都针对可重试错误实现重试。如果 Redis 暂时不可用,例如在数据库重新启动期间,大多数/所有流量应该继续成功。Redis 的长时间故障将导致 LangGraph 服务器不可用。
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.