知识卡片
网关等于路由器加过滤器及与负载均衡器的目的差异
内容
微服务环境下网关的存在感远高于单体架构,原因是每个服务节点可能由不同 团队负责、接口各不相同,如果没有统一对外的代理人,外部消费者就必须 知道所有服务节点的精确坐标——这会同时撞上网络限制(节点不一定都能 外网直连)、安全限制(浏览器同源策略等)、依赖限制(服务坐标不属于对外 接口承诺,随时可能变)三重麻烦。网关的公式因此是”网关=路由器(基础 职能)+过滤器(可选职能)”,本质首先是路由器,在此基础上才附加安全、 认证、限流、监控等可选功能。网关和负载均衡器在技术实现上几乎没有差别 (很多服务网关本身就基于Nginx、HAProxy等老牌负载均衡器实现),但目的 不同:负载均衡器是按均衡算法把流量”平均地”分发出去,网关是按流量本身 携带的特征(IP、URL、Header等)”正确地”路由到目标服务——网关能支持的 网络协议层次因此直接决定了后端服务能选用什么通信方式:只暴露TCP服务 (如etcd)四层网关就够,暴露HTTP服务就必须部署七层网关按URL/Header 特征路由,若还要支持WebSocket/SOAP等更上层协议,网关也必须跟着支持。
参考来源
- 位置:《凤凰架构:构建可靠的大型分布式系统》第7章"从类库到服务"
7.2.1节"网关的职责"(源文件:_epub-src对应OEBPS/Text/chapter89.xhtml)
- 结论依据:原文说明微服务下缺少统一网关会带来网络/安全/依赖三重限制,
给出"网关=路由器+过滤器"的定义,并区分负载均衡器"平均路由流量"与
网关"按特征正确路由"的目的差异,直接支撑本卡片结论。
- 原始内容:网关=路由器(基础职能)+过滤器(可选职能)……从目的角度来看,
负载均衡器与服务网关会有一些区别,具体在于前者是为了根据均衡算法对
流量进行平均地路由,后者是为了根据流量中的某种特征进行正确地路由。