开篇:为什么微服务需要一个"大门"?
想象一下,你住在一个大型小区里,小区有 20 栋楼,每栋楼都有自己的门禁。如果外卖小哥要挨个找门禁才能送餐,效率会非常低。所以小区会设一个统一的大门和门卫室,外卖到了先到门卫室登记,由门卫告诉他该去哪栋楼。
微服务系统也是一样。当你有几十个微服务,每个服务都有不同的 IP 和端口,让客户端直接调各个服务,会遇到一堆问题:跨域、认证、限流、日志……每个服务都要自己实现一遍。
网关就是那个"门卫室"。客户端所有请求先到网关,由网关统一处理路由、认证、限流等横切关注点,再转发到后端微服务。Spring Cloud Gateway 是 Spring 官方推出的第二代网关(替代 Zuul),基于 WebFlux 和 Netty 构建,天生支持异步非阻塞。
大约 7 分钟