Skip to main content
LangSmith旨在与您的负载水平扩展。每个服务实例都是无状态的,不保留内存中的任何资源。该服务设计用于优雅地处理新实例的添加或删除,包括硬关闭情况。

服务器可扩展性

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

队列可伸缩性

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

弹性

当队列实例正在处理运行时,该队列工作器将在Redis中记录一个周期性心跳时间戳。 當收到优雅關閉請求(SIGINT)時,一個實例進入關閉模式,其
  • 停止接受新的HTTP请求
  • 给任何正在进行的运行分配有限的时间来完成(如果未完成,它将被放回队列)
  • 停止实例从队列中获取更多运行
如果由于服务器崩溃或基础设施故障发生硬关机,任何正在进行的运行将由一个内部清理任务接管,该任务会寻找超出心跳窗口的正在进行的运行。清理任务每2分钟运行一次,并将运行放回队列,以便其他实例再次接管。

Postgres 弹性

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

Redis 弹性

所有需要持久存储的数据都存储在Postgres中,而不是Redis。Redis仅用于临时元数据和实例间的通信。因此,我们对Redis没有持久性要求。 所有与Redis的通信都实现了对可重试错误的重试。如果Redis暂时不可用,例如在数据库重启期间,大多数/所有流量应继续成功。Redis长时间失败将使LangGraph服务器不可用。