记录一下:gateway的接触

记录一下今天做的东西

今天花了几个小时,东找西查,终于也算是把 Gateway 这一块给弄起来了。实现的东西其实并不多,也了解不是很深,后面有时间会看一下的。

(1)做了访问的限流(只使用Postman进行了压测,也成功了)

(2)还做了鉴权,主要是对token的合法性进行检测,当然只用到了做最简单的全局的过滤,目前还没需要到小范围的过滤需求,不过实现应该差不多。

涉及到的token使用的是JWT。之前一直把token挂在嘴边,但是这段时间真正去做了才真正的了解到是什么东西,不是很了解的
小伙伴可以认真去看一下。

然后再说一下为什么我选用 Spring Cloud 里面的自带的 Gateway 来做网关(表述应该没问题吧?),而不是使用 Netflix 的 zuul?

  • 其实我主要考虑到了一下亮点:
    1. Gateway 是 Spring Cloud 自己推出的,后期应该着重对它进行维护和优化,使其在 Spring Cloud上的效率更高。
    2. 我了解到的 Gateway 应该使用的是非阻塞(具体怎么实现,我还没有具体去了解),而 zuul 1.0 是阻塞和多线程的工作方式,虽然说 zuul后面的2.x和3.x用的也是非阻塞,但是好像 Spring 不打算去整合。

所以上面两点就是我选择Gateway的主要原因,希望对大家的选择有参考价值。

有什么问题大家可以留言,我很乐意和大家一起去解决问题。

<think>嗯,用户想了解网关路由的原理,我需要用中文来解释清楚。首先,我得回忆一下网关在系统架构中的作用,它通常是请求的入口,负责路由、过滤、安全等。路由是核心功能之一,所以需要详细说明路由的工作机制。 可能用户是开发者或者刚接触微服务架构的人,他们需要理解请求是如何被正确转发到后端服务的。我应该从基本概念入手,比如路由的定义,然后逐步深入组件和流程。需要提到路由规则,比如路径匹配、谓词、过滤器,可能还要举例说明,比如Spring Cloud Gateway或Nginx的配置,这样更具体。 另外,用户可能想知道动态路由和静态路由的区别,以及负载均衡、服务发现如何与路由结合。这部分需要简明扼要,避免太过技术化,但又要准确。同时,要确保用词通俗易懂,避免使用太多专业术语而不解释。 可能还需要提到网关路由的应用场景,比如微服务中的API网关,或者边缘服务中的反向代理。这样用户能更好地理解其实际用途。最后,总结一下路由的重要性,比如解耦客户端和服务端,提高系统的灵活性和可维护性。 检查有没有遗漏的关键点,比如路由匹配的优先级,过滤器链的执行顺序,以及如何处理异常情况。确保流程步骤清晰,逻辑连贯,用户看完后能对网关路由有一个全面的认识。</think>网关Gateway)路由是分布式系统或微服务架构中的核心机制,负责将客户端请求**正确转发**到后端服务。以下是其核心原理和工作流程: --- ### **1. 路由的核心概念** 路由的本质是**匹配规则 + 转发策略**,网关根据预先定义的规则,将接收到的请求分发到对应的目标服务。 --- ### **2. 路由规则的关键要素** - **路径匹配** 例如:`/order/**` 的请求转发到订单服务,`/user/**` 转发到用户服务。 - **谓词(Predicate)** 定义匹配条件(如HTTP方法、Header、请求参数、权重等),例如:`GET` 请求且包含 `X-API-Version=2.0` 的请求。 - **过滤器(Filter)** 在转发前后执行逻辑(如鉴权、限流、日志、修改请求头等)。 --- ### **3. 路由流程示例** 以 **Spring Cloud Gateway** 为例: 1. **接收请求**:客户端发送请求到网关(如 `http://gateway:8080/order/123`)。 2. **匹配路由**:网关根据配置的路由规则,判断路径 `/order/**` 对应订单服务。 3. **执行过滤器链**: - 前置过滤器:鉴权、记录请求时间。 - 目标服务用:转发到 `http://order-service/order/123`。 - 后置过滤器:修改响应头、记录日志。 4. **返回响应**:将目标服务的响应返回给客户端。 --- ### **4. 动态路由 vs 静态路由** - **静态路由**:配置文件硬编码路由规则(如Nginx)。 - **动态路由**:通过配置中心(如Consul、Nacos)实时更新路由规则,无需重启网关。 --- ### **5. 典型路由配置示例** ```yaml # Spring Cloud Gateway 配置 routes: - id: order_route uri: lb://order-service # lb表示负载均衡 predicates: - Path=/order/** filters: - StripPrefix=1 # 移除路径前缀(/order) ``` --- ### **6. 关键技术点** - **负载均衡**:结合服务发现(如Eureka),通过算法(轮询、权重)选择目标实例。 - **服务发现**:自动感知服务实例的地址变化(如Kubernetes或注册中心)。 - **熔断降级**:当目标服务不可用时,快速失败或返回兜底响应。 --- ### **7. 常见网关实现** - **Nginx**:基于反向代理,高性能但配置相对静态。 - **Spring Cloud Gateway**:基于异步非阻塞模型,适合微服务动态路由。 - **Kong**:基于OpenResty(Nginx + Lua),插件生态丰富。 - **Envoy**:支持高级流量管理,常用于Service Mesh。 --- ### **核心价值** - **解耦客户端与服务端**:客户端无需感知后端服务细节。 - **统一管控**:集中处理安全、监控、流量治理等逻辑。 - **灵活扩展**:通过路由规则动态整系统行为(如灰度发布、A/B测试)。 如果需要更具体的实现细节或某个组件的深入分析,可以进一步探讨!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值