上游连接管理(Peer)
Pingora 支持通过 Peer 管理与上游服务器的连接。
正确配置和管理 Peer 可以提高代理性能、稳定性和可用性。
什么是 Peer
- Peer 代表一个上游服务器或服务器组
- 负责处理客户端请求的转发
- 提供连接池、复用和故障恢复机制
配置上游服务器
在配置文件中定义 Peer:
proxy:
upstreams:
- name: backend
servers:
- "127.0.0.1:8000"
- "127.0.0.1:8001"
max_connections: 50
retry_policy:
retries: 3
backoff: 100ms
`
参数说明
| 参数 | 说明 |
|---|---|
name |
上游服务器名称 |
servers |
上游服务器地址列表 |
max_connections |
最大并发连接数 |
retry_policy |
失败重试策略,包括重试次数和间隔 |
连接复用
Pingora 的 Peer 自动管理连接池,支持长连接复用:
let peer = Peer::new("127.0.0.1:8000");
peer.get_connection()?; // 从连接池获取或新建
- 减少频繁建立 TCP/TLS 连接的开销
- 提高请求处理效率
- 支持 HTTP/1.1 和 HTTP/2 多路复用
负载均衡策略
Pingora 提供多种上游负载均衡策略:
- 轮询(Round-Robin):均匀分配请求
- 最少连接(Least Connections):优先发送到活跃连接最少的服务器
- 自定义策略:可通过过滤器或回调实现
故障处理与切换
当某个 Peer 失败或不可用时:
- 标记该 Peer 为不可用
- 根据重试策略选择其他可用 Peer
- 自动记录失败次数,支持恢复检测
通过合理配置 Peer 和连接池,Pingora 可以高效、可靠地管理上游服务器连接,实现稳定的代理服务和灵活的负载均衡策略。
相关内容
- 高级主题 (WIP) 探索 Pingora 的高级特性,包括内部机制、异步运行时、线程模型和自定义扩展。
- 后台服务 学习如何在 Pingora 中配置和运行后台服务,包括定时任务、异步执行和守护进程管理。
- 异步上下文中的阻塞代码 学习如何在 Pingora 异步运行时中处理阻塞代码,确保高并发请求环境下的性能和稳定性。
- 构建 HTTP 代理 学习如何使用 Pingora 构建 HTTP 代理服务,包括基本请求转发、上游配置和自定义过滤器。
- 配置文件 了解 Pingora 的配置文件结构、主要参数及其作用,学习如何为不同场景编写高效、清晰的配置。
- 连接池与复用 学习如何在 Pingora 中使用连接池和连接复用,提高代理服务的性能和资源利用率。