大使模式是什么
大使模式为主应用代理出站连接:在应用同主机或同容器内运行一个代理进程,统一处理服务发现、连接池、重试与超时、传输层加密、分片与异地路由,应用侧只关心业务参数。它与边车方向相反:边车多处理入站流量与横切能力,大使专注出站依赖,典型场景是数据库分片代理、异地双活路由与老应用对接新协议。
为什么把出站治理外提
老应用常把连接地址写死在配置里,各自实现重试与超时,改一处就要动代码并重新发布。把这部分逻辑移到代理层后,治理策略可以统一下发、独立升级,应用无需改造就能获得连接复用与故障切换能力。代价是多了一跳延迟与一类新的运维对象,代理本身必须做高可用,否则出站通道的单点故障会直接让应用不可用。
基本信息
| 部署位置 | 与应用同主机或同容器内的代理进程 |
|---|---|
| 典型职责 | 连接池、重试与超时、服务发现、分片与异地路由 |
| 主要收益 | 应用无需内置复杂的网络治理逻辑,策略可独立升级 |
| 与边车区别 | 边车侧重入站与横切能力,大使专注出站依赖 |
| 成本代价 | 增加一跳延迟与运维对象,代理自身必须高可用 |
职责分工
| 职责 | 代理承担 | 应用保留 |
|---|---|---|
| 连接管理 | 连接池、复用与健康检查 | 无 |
| 重试与超时 | 统一策略与重试预算 | 业务级补偿逻辑 |
| 路由 | 分片、读写与异地路由 | 业务参数拼装 |
| 安全 | 传输加密与凭据轮换 | 无 |
| 可观测 | 出站调用指标与日志 | 业务埋点 |
典型使用场景
- 老应用访问分片数据库,用代理统一处理分片键路由
- 异地双活场景按策略把出站请求路由到不同集群
- 应用需要对接新协议或新证书体系,但短期无法改造代码
- 多语言应用统一出站治理策略,避免每种语言各写一套
代理会成为出站路径上的单点:要与业务实例同生命周期部署并配置健康检查,避免代理异常后应用整体无法访问外部依赖。
重试逻辑不要同时存在于应用与代理:两层各重试一次会让实际重试次数相乘,故障期间反而把下游压垮。