项目介绍:Paddler
什么是 Paddler
Paddler 是一个开源的、可生产使用的、有状态的负载均衡器和反向代理,专为优化运行在 llama.cpp 上的服务器而设计。Paddler 的独特之处在于其专注于 llama.cpp 的特定需求,能够有效利用服务器的多个请求处理槽(slots),以实现请求的高效分配。
为什么选择 Paddler
传统的负载均衡策略,如轮询(round robin)和最少连接数(least connections),在处理 llama.cpp 服务器时并不高效,因为这些服务器使用连续批处理算法,可以配置多个并发请求处理槽。Paddler 则为此提供了更优化的解决方案。
在 llama.cpp 中,所谓的“槽”是服务器内预先定义的内存片段,用于处理单个请求。每当一个请求到达时,它会被分配到一个可用的槽中进行处理。这种设计使得请求处理变得更为可预测和可配置。
Paddler 的主要特点
- 代理监控:使用代理监控每个 llama.cpp 实例的请求处理槽。
- 动态扩展:支持动态添加或移除 llama.cpp 服务器,便于与自动扩展工具集成。
- 请求缓冲:能够缓冲请求,使基础设施能够从零主机扩展。
- 内置仪表盘和集成:内置的仪表盘支持 StatsD 协议,并提供 AWS 集成。
工作原理
使用 Paddler 时,需要将 llama.cpp 实例注册到 Paddler 系统中,然后在这些实例旁边安装 Paddler 的代理。这些代理负责任地报告槽的状态给负载均衡器,以确保系统运作流畅。
使用方法
安装
用户可以从 Paddler 发布页面 下载适用于 Linux、Mac 或 Windows 平台的最新版本。如果在 Linux 系统中希望 Paddler 可以被系统范围访问,可以将下载的可执行文件重命名并移动到 /usr/bin
或 /usr/local/bin
。
运行 llama.cpp
在运行 llama.cpp 时,需要启用槽端点功能,可以通过添加 --slots
参数来实现。
运行 Paddler 代理
接下来,需要运行 Paddler 的代理程序。这些代理会在 llama.cpp 实例上注册并监控槽的状态。配置代理时,需提供若干连接信息,如主机地址和端口等。
特性亮点
聚合的健康状态
Paddler 可聚合多个 llama.cpp 实例的健康状态,报告可用和正在处理请求的槽总数。
请求缓冲和零扩展
负载均衡器的请求缓冲功能允许基础设施从零主机进行扩展,对于低流量项目尤为适用,因为它能降低使用服务时的成本。
状态仪表盘和 StatsD 支持
Paddler 还拥有内置的状态仪表盘,方便用户查看集群状态,同时支持 StatsD 指标报告功能。
AWS 集成
在 AWS 环境下,Paddler 支持通过云上元数据自动获取本地 IP 地址,以便于更灵活的网络配置。
为什么命名为 Paddler
起初,该项目打算使用 Raft 共识算法(Paddler 的灵感来自于划桨,即小船在 Raft 上划桨的动作),虽然最终未采纳这种算法,但名称保留了下来。团队也接受了来自 Simpson 中 "that's a paddlin'" 的幽默。
社区
关注 Paddler 的开发及支持可以加入其 Discord 社区:Paddler社区 来与其他开发者交流。
这个介绍详细涵盖了 Paddler 项目的重大特色及其与其他负载均衡器的不同之处,并为用户怎样上手提供了指导。希望这能为用户在选择负载均衡方案时提供参考。