news 2026/6/23 2:09:48

代理架构:构造解耦分布式系统,提升系统质量与高可用性

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
代理架构:构造解耦分布式系统,提升系统质量与高可用性

代理架构:构造解耦分布式系统,提升系统质量属性与高可用性

此模式用于构造解耦的分布式系统,系统中组件通过远程调用彼此交互,代理负责组件之间的通信协调,通常还具备日志、安全、路由、缓存、熔断等系统质量相关功能,可保证系统高可用、高性能、容错性、安全等特性。

技术案例架构

技术案例架构包括 Nginx、Apache Server、HAProxy、Kong、云服务商的 SLB、Redis 集群代理、多网合一的短信平台、Spring Cloud Gateway、Ingress Gateway 等。

代理架构在微服务系统中的作用

软件系统之间很少直接连接调用,通常通过增加一层代理来实现服务发现和路由功能,代理架构是组成微服务系统中一种重要的架构。在分布式系统中,代理架构的实现组件称为网关。

代理架构的内部实现与基本功能

代理架构自身的架构内部通常通过管道模式来实现路由、内容转化等基础功能和质量属性。其基本功能如下:

基本功能描述
发现和路由允许后端系统注册服务到网关,或者通过网关管理员配置后端系统服务。请求将根据配置路由到后端系统,比如 /order 的请求将路由到 Order 微服务系统,/pay 的请求将路由到 Pay 相关的微服务系统 ,/download 的路由到文件服务系统
内容转化对调用或者响应的内容或者协议进行更改,比如 HTTP 调用,网关会自动在响应头里增加跨域信息。HTTP 调用通过 API 网关转化 Dubbo 泛化调用,或者相反过程
集成后端服务对外提供一个单点服务,聚合了后端多个系统的功能,使得代理后的应用看起来像一个应用。比如网关整合后端订单和支付系统,对外提供 xxx.com/pay 和 xxx.com/oder 的 URI
负载均衡当后端系统有多个可用实例的时候,代理将请求路由到任意一台实例,可以采取的路由策略有随机、轮训、基于负载、基于权重等策略,此机制保证了后端系统的高可用、伸缩性以及高性能

代理架构提升系统质量属性的具体功能

代理架构提升了整个系统的质量属性,可以将后端系统的公共质量要求统一交给代理实现,具体质量功能如下:

质量功能描述
错误恢复当后端某实例节点暂时不可用,可以路由到可用的实例节点。当后端永久不可用,可以给与客户端响应,如提示客户端重定向到新的访问地址
日志记录访问日志,这些日志可以导出以作访问统计
熔断网关禁止请求转发到后端以保护后端,这适合后端系统已经崩溃
限流网关只允许少量请求转发到后端系统以保护后端,这适合后端系统已经超载
降级网关对一些特定请求作降级处理以保护后端系统主要功能正常。比如某些耗费资源的请求将不在转发到后端系统,或者忽略处理系统的次要功能,比如电商系统取消积分查询,保留订单查询
缓存对相同的请求内容,网关可以直接返回缓存的内容,比如对于 HTTP GET 请求,根据 URL 地址,可以返回上次缓存的内容
安全提供审计记录和查询,网关也可以供防止黑客攻击功能、基于请求的用户验证功能等。对于 HTTP 网关,基于 SSL 的 HTTP,经过 HTTP 网关后解码后,转化为明文 HTTP 调用后端 Web 服务而无需后端服务提供 SSL 功能
灰度测试允许识别请求方,把请求路由到测试系统。比如根据 HTTP 头里的某个标识判断灰度请求
其他功能代理的内部架构是流水线,因此通常网关可以自定义 Filter 来实现任何功能,比如 Spring Cloud Gateway 允许扩展实现 AbstractGatewayFilterFactory

熔断、限流、降级相关说明

熔断、限流、降级将在高可用战术里详细描述。需要注意的是,大多数熔断限流的生效逻辑都依赖业务自己特点,因此需要网关后端系统自己完成(或者专门的限流中间件),而无需依靠网关。

电信短信平台架构与微服务网关功能

如下是一个电信短信平台的架构,短信网关将根据不同的目的电信运营商,把统一的短信内容转发到电信运营商,并完成运行商各个协议的转化,比如转化为电信的 SMGP 协议,或者其他服务商自己的 HTTP 协议。

微服务网关 API gateway 则提供了服务发现以及协议转化等功能,系统 A 提供了 HTTP 服务,允许手机 APP 通过代理网关访问系统 A,也允许内部系统使用 Dubbo 协议,通过代理网关访问系统 A。

保证代理服务高可用的方法

网关保证了其后端系统的高可用,要保证代理服务自身的高可用,通常需要部署多个代理服务实例节点,并且前置一个高可用代理组件,如下是使用云厂商的 SLB,保证其后的 Nginx 和 Spring Gateway 高可用。

其他方式还包括:

  • 最简单的方式是安装守护进程,在网关节点停止后自动重启。
  • 使用 Keeplived 自动将请求转向可用的节点,Keepalived 基于 Linux 的一个内部协议,让多台服务器共享一个虚拟 IP(VIP),实现故障自动切换。

其他办法还包括让客户端重试:

  • 为 DNS 服务提供多个地址,客户端访问 DNS,客户端通过 DNS 得到可用的代理服务器实例中的一个地址。
  • 提供给客户端多个代理服务器地址,客户端访问其中一个失败,可以重试另外一个代理服务。关于重试,将在高可用战术中说明。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 18:47:27

汽车电子硬件工程师五年实战:从设计到测试的完整技能图谱

1. 五年汽车电子路:从设计到测试,再回归设计 时间这东西,抓不住,留不下,一眨眼,我在汽车电子这个行当里已经摸爬滚打了五年。这五年,像画了一个圈,从硬件设计出发,兜转到…

作者头像 李华
网站建设 2026/6/23 2:09:27

FlipIt翻页时钟屏保:为Windows电脑注入优雅的时间艺术

FlipIt翻页时钟屏保:为Windows电脑注入优雅的时间艺术 【免费下载链接】FlipIt Flip Clock screensaver 项目地址: https://gitcode.com/gh_mirrors/fl/FlipIt 在数字时代,我们的电脑屏幕不仅是工作工具,更可以成为一件动态的艺术品。…

作者头像 李华
网站建设 2026/6/7 13:10:37

GCN-BiLSTM混合框架:内网威胁检测的创新解决方案

1. 内网威胁检测的技术挑战与创新思路在网络安全领域,内网威胁(Insider Threat)一直是最难防范的安全风险之一。与外部攻击不同,内网威胁来自于拥有合法系统访问权限的内部人员,这使得传统基于边界防护的安全体系往往失…

作者头像 李华
网站建设 2026/6/7 13:56:36

基于ATTiny85与HC-SR04的可穿戴社交距离监测装置设计与实现

1. 项目概述:一个可穿戴的社交距离“小哨兵”在过去的几年里,保持社交距离成为了一种新的公共健康习惯。作为一个常年泡在工作室里折腾Arduino和树莓派的创客,我一直在想,能不能用手里这些简单的电子元件,做一个既实用…

作者头像 李华
网站建设 2026/6/5 18:43:22

基于树莓派的智能爬宠饲养箱:物联网环境监控与自动喂食系统

1. 项目概述与核心思路养过爬宠的朋友都知道,维持一个稳定、适宜的饲养环境有多费心。温度高了低了,UV灯开久了短了,喂食时间忘了,每一个细节都可能影响到小家伙的健康。作为一个资深的技术爱好者和爬宠饲养者,我一直在…

作者头像 李华