Resin 是什么:一个能独立读懂的定义
Resin(GitHub 仓库 Resinat/Resin)是一个用 Go 编写的开源高性能代理池网关:把成百上千条代理订阅、最多十万级的零散节点聚合起来,对外只暴露一个稳定、智能、可观测的统一代理入口,并支持会话粘性(sticky sessions),让同一业务账号长期绑定同一个出口 IP。典型使用场景是爬虫与数据采集、多账号业务的出口调度——凡是要同时管理大量代理节点、又要保证业务出口稳定的后端服务,都是它的主场。项目 MIT 协议开源,GitHub 约 2300 star(2026-09 查询为 2337),官方提供 Docker 镜像 ghcr.io/resinat/resin,二进制覆盖 Linux/macOS/Windows 的 amd64/arm64(官方 README,下同)。
为什么直连一堆订阅节点不稳
把订阅节点散着用,不稳定的根源集中在三处:节点抖动、出口 IP 漂移、单点故障。这三件事业务代码自己解决不了,所以才需要网关层。
- 节点抖动:代理节点的延迟和质量时刻在变,客户端运气不好选中一个正在劣化的节点,请求超时、重试、报错全来了,而且每次重选都是一次新的赌博。
- 出口 IP 漂移:订阅刷新后节点列表会增删替换,同一个”节点名”对应的出口 IP 也可能变化。对 IP 敏感的业务(登录态、会话连续性)经不起这种漂移。
- 单点故障:业务里写死某个节点当出口,节点一挂整条业务线跟着挂,人工切换的速度追不上节点劣化的速度。
代理池网关的解法是在业务和节点之间加一层调度:节点随便坏,业务拿到的入口始终稳定。Resin 的全部设计都围绕这个目标展开。
核心设计:聚合、粘性、熔断、可观测
Resin 把”底层不稳定、上层稳定”拆成四个能力模块,每个都对应官方 README 里明确列出的特性。
海量聚合。 官方定位是为接管海量节点设计,“轻松管理十万级规模的代理节点,高性能,原生支持高并发”(README)。跨订阅智能去重会自动合并不同订阅里配置相同的节点并共享健康状态,避免重复探测——同时接入多家订阅源,也不担心节点冗余浪费资源。
粘性代理。 通过平台(Platform)与账号(Account)两级业务概念,让同一业务账号优先绑定同一出口 IP;节点异常时自动切换到同 IP 的另一节点,在多数场景下减少业务波动(README)。粘性的锚点选在出口 IP 上,多个节点出口 IP 相同时可以在粘性会话里互换(DESIGN.md)——这层设计的原理在 Resin 粘性会话与熔断调度实战里展开。
智能调度与熔断。 被动加主动的全自动健康探测、出口 IP 探测、延迟分析,精准剔除坏节点;节点选择采用 P2C 算法结合按域名的延迟加权评分(README)。
可观测性。 可视化 Web 管理后台提供详细性能指标与日志;完整的结构化请求日志支持按平台、账号、目标站点等维度查询与审计(README)。出问题时它能直接回答”哪个账号、什么时间、从哪个出口、访问了哪个站点”。
配套的工程特性也齐全:热更新让改配置不重启、刷新订阅不断流量;状态持久化让重启后恢复节点健康数据、延迟统计与租约绑定;多入站端点支持在 WebUI 热添加监听端口,并按端口独立控制开关(README)。
三种接入模式怎么选
Resin 同时支持 HTTP 正向代理、SOCKS5 正向代理与基于 URL 的反向代理三种接入模式(README),按客户端能力对号入座:
| 接入模式 | 客户端要求 | 接入方式 | 典型场景 |
|---|---|---|---|
| HTTP 正向代理 | 能设置 HTTP 代理 | 代理地址 + 认证信息 | 脚本与程序最常用的通用出口 |
| SOCKS5 正向代理 | 支持 SOCKS5 | socks5:// 地址 + 认证 | 非 HTTP 流量、桌面工具 |
| URL 反向代理 | 能修改服务 BaseURL | 把 BaseURL 换成 Resin 反代路径 | API 长期集成,可观测性最好 |
反向代理的 URL 格式为 /令牌/Platform(可选).Account(可选)/协议/目标地址(README),一条命令即可验证:
curl http://127.0.0.1:2260/my-token/./https/api.ipify.org
官方建议很明确:条件允许时优先用反向代理,对可观测性更友好;客户端不支持改 BaseURL,或需要 utls、非纯 WebAPI 请求这类反代不擅长的场景,再用正向代理(README)。
和 Clash 这类订阅客户端是什么分工
Clash/Mihomo 这类工具与 Resin 处理的是同一条链路的不同层:前者站在客户端侧做本地分流,后者站在服务端侧做出口调度。放一张表看得更清楚:
| 工具 | 所在层 | 核心职责 | 产出的结果 |
|---|---|---|---|
| SubBoost 这类订阅管理工具 | 订阅管理层 | 订阅转换、聚合、节点维护 | 一份干净的标准化聚合订阅 |
| Clash/Mihomo | 客户端层 | 本地分流规则、代理组切换 | 个人设备上网流量 |
| Resin | 服务端网关层 | 代理池调度、粘性、熔断、审计 | 业务程序的稳定出口 |
实际组合时链路是这样的:上游用 SubBoost 这类订阅管理工具把多家订阅清洗聚合成标准化订阅(订阅聚合的实战细节本站有专文:多订阅聚合),中间 Resin 拉取订阅构建代理池、向业务提供稳定出口,下游业务程序按需选择正向或反向代理接入。订阅的”干净”交给上游工具,出口的”稳定”交给 Resin,两层互不越界。
P2C 调度是什么
P2C(Power of Two Choices)是负载均衡领域的经典算法:从节点池里随机挑两个候选,比较评分后选较优者,整个选择过程 O(1) 完成。它的价值在于无需全局扫描——两次随机加一次比较,就能以极高概率避开劣质节点,这也是它能支撑十万级节点池的算法基础。Resin 的评分结合了出口 IP 的租约负载与按域名统计的加权延迟(README、DESIGN.md),评分公式与调参细节在粘性会话实战篇里拆解。
适合谁用
- 爬虫与数据采集团队:出口 IP 需求量大,节点坏了要自动摘除,重试成本要低。
- 多账号业务调度:每个账号要绑定稳定出口,账号与 IP 的对应关系要可查询、可审计。
- 自托管基础设施玩家:已经有订阅管理层,想给业务程序一个统一的稳定出口。
- 重可观测性的后端工程师:需要结构化请求日志,能按账号、平台、目标站点维度审计流量。
一个中性的提醒:代理池网关是给业务做稳定出口调度的基础设施工具,使用行为需符合所在地法律法规与目标服务条款——这也是 Resin 官方 README 里写明的要求。
常见问题
什么是代理池?
代理池是把大量代理节点统一收纳、做健康检查并按需分配出口的中间层,业务面向池,无需关心具体节点。以 Resin 为例,它把海量订阅聚合成统一入口,节点故障自动剔除,业务侧只感知到稳定出口。
代理池网关和 Clash 有什么区别?
Clash 是客户端工具,负责本地分流和代理组切换,服务个人设备上网;代理池网关是服务端组件,负责给业务程序调度出口 IP、维持会话粘性和故障熔断。前者管流量怎么分流,后者管出口稳不稳。
Resin 支持哪些订阅格式和接入方式?
订阅支持 sing-box JSON、Clash JSON/YAML、URI 行(vmess、vless、trojan、ss、hysteria2 等)、纯 IP:PORT 代理行与 Base64 文本;接入支持 HTTP 正向、SOCKS5 正向、URL 反向代理三种模式(README)。部署步骤见 Resin 部署教程。