概述一个大型的系统可以拆分为很多个微服务,客户端去访问微服务时会通过服务的URL地址进行访问,如果有很多个URL地址时,我们只能在客户端保存地址分别去访问,而且在调用微服务时还需要独立的认证以及跨域的请求,这样的话就提高了代码的复杂性。为了简化服务的调用逻辑和复杂度,就有了网关的概念。
Spring cloud Gateway优缺点分析网关本质上要提供一个各种服务访问的入口,并提供服务接收并转发所有内外部的客户端调用,还有就是权限认证,限流控制等等。
Spring Cloud Gateway是Spring公司基于Spring 5.0,Spring Boot 2.0 和 等技术开发的一个网关组件,它旨在为微服务架构提供一种简单有效的统一的 API入口,负责服务请求路由、组合及协议转换,并且基于 Filter 链的方式提供了权限认证,监控、限流等功能。
1.优点
性能强大,速度是Zuul的1.6倍
功能强大,内置了很多实用的功能,例如转发、监控、限流等
设计优雅,容易扩展
Spring cloud Gateway限流2.缺点
依赖Netty与WebFlux(Spring5.0),不是传统的Servlet编程模型(Spring MVC就是基于此模型实现),学习成本高。
需要Spring Boot 2.0及以上的版本,才支持
Gateway具体工作流程从 1.6.0 版本开始,Sentinel 提供了 Spring Cloud Gateway 的适配模块,可以提供两种资源维度的限流:
route 维度:即在 Spring 配置文件中配置的路由条目,资源名为对应的 routeId
自定义 API 维度:用户可以利用 Sentinel 提供的 API 来自定义一些 API 分组
在使用时需要导入依赖:
com.alibaba.csp sentinel-spring-cloud-gateway-adapterx.y.z 配置文件(yml)
server: port: 8090 spring: application: name: spring-cloud-gateway cloud: gateway: enabled: true discovery: locator: lower-case-service-id: true routes: # Add your routes here. - id: product_route uri: lb://product predicates: - Path=/product/** - id: httpbin_route uri: https://httpbin.org predicates: - Path=/httpbin/** filters: - RewritePath=/httpbin/(?.*), /${segment} 其中:路由(Route) 是 gateway 中最基本的组件之一,表示一个具体的路由信息载体。主要定义了下面的几个信息:
id,路由标识符,区别于其他 Route。
小结:
uri,路由指向的目的地 uri,即客户端请求最终被转发到的微服务。
predicate,断言(谓词)的作用是进行条件判断,只有断言都返回真,才会执行路由。
filter,过滤器用于修改请求和响应信息。什么是网关?服务访问(流量)的一个入口,类似生活中的“海关“
为什么使用网关?(服务安全,统一服务入口管理,负载均衡,限流,鉴权)
Spring Cloud Gateway 应用的初始构建过程(添加依赖,配置)
Gateway 服务的启动底层是通过谁去实现的?(Netty网络编程框架-ServerSocket)
Gateway 服务做请求转发时一定要在注册中心进行注册吗?(不一定,可以直接通过远端url进行服务访问)
客户端向Spring Cloud Gateway发出请求。 如果Gateway Handler Mapping 通过谓词predicates(predicates)的集合确定请求与路由(Routers)匹配,则将其发送到Gateway Web Handler。 Gateway Web Handler 基于路由配置调用过滤链中的过滤器(也就是所谓的责任链模式)进一步的处理请求。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)