springcloud

2次阅读
没有评论

 

既然你对 Spring Cloud 了解较少,我们可以把“网关(Gateway)”和“注册中心(Nacos)”想象成一个大型医院的导诊系统

1. 核心角色:Nacos 与 Gateway

  • Nacos(注册中心/配置中心):相当于医院的**“排班表”**。

    • 所有的医生(微服务,如订单服务、用户服务)上线后,都会去 Nacos 登记自己的 IP 和端口。

    • 网关不需要死记硬背每个服务的地址,只需要问 Nacos:“现在哪几个‘挂号医生’在线?”

  • Spring Cloud Gateway(网关):相当于医院的**“大门和导诊台”**。

    • 所有的病人(客户端请求)必须先进大门。

    • 导诊台负责:看你的挂号单(权限校验)、告诉你去哪个诊室(路由分配)。


2. 路由分配到节点(动态路由)

在 Spring Cloud 中,网关是如何精准地把请求发给某个 Java 进程的?

  1. 服务发现:网关启动时会连接 Nacos。

  2. 配置路由规则:你在配置文件里写:如果路径以 /order/ 开头,就转发给 order-service

  3. 负载均衡(Load Balancer)

    • 网关从 Nacos 获取 order-service 的节点列表(假设有 3 台服务器 A、B、C)。

    • 网关会根据算法(如轮询)选出一台,比如 B 节点,然后把请求转发过去。


3. 权限校验(统一门禁)

这是网关最核心的价值之一:不再需要在每个微服务里写一遍登录校验。

  • 全局过滤器(Global Filter):网关里可以写一段逻辑,拦截所有进入的请求。

  • 校验流程

    1. 提取 Token:从 HTTP Header 里拿到 Authorization(通常是 JWT)。

    2. 验证合法性:检查 Token 是否过期、签名是否正确。

    3. 鉴权:甚至可以去 Redis 查一下这个用户有没有访问该接口的权限。

    4. 放行或拒绝

      • 校验通过:chain.filter(exchange),请求继续往后走。

      • 校验失败:直接返回 401 Unauthorized,请求根本进不到后面的业务服务器。


4. 为什么要这么做?(资深开发的思维)

如果你不写代码做程序员了,转去做产品经理或技术管理,理解这个架构也非常重要:

  1. 解耦:后端服务只管写业务逻辑(比如怎么算优惠券),不用管用户是怎么登录的。

  2. 安全:后端服务可以部署在内网,只暴露网关一个公网入口,极大减少了被黑客攻击的风险。

  3. 灰度发布:你可以通过网关配置:5% 的流量去新版本节点,95% 去旧版本。如果新版本有问题,直接在网关切断,不需要重启任何服务。


🛠 给你的起步建议

虽然你现在想转型,但如果要面试相关公司,建议了解一下这几个具体的配置名词:

  • Predicate(断言):匹配请求的条件(比如:路径、参数、时间)。

  • Filter(过滤器):匹配后要做的事(比如:改 Header、限流、日志)。

  • Nacos Discovery:Java 代码里只需要加一个注解 @EnableDiscoveryClient,服务就能自动排班。

既然聊到了网关权限校验,你想看看在网关层如何通过一行代码把“解析出的用户 ID”透传给后面的微服务吗?这对后端开发非常关键。

正文完
 0
bdspAdmin
版权声明:本站原创文章,由 bdspAdmin 于2026-03-30发表,共计1231字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)