首页 > 资讯 > 正文
spring cloud之微服务网关gateway
来源:六六短链 阅读量:
Zuul作为spring cloud的微服务网关,目前已被spring cloud放弃,原因是zuul是基于阻塞io的过滤器实现的,它的弊端是无法高效利用线程资源,可支持的系统并发数与吞吐量远不如nio实现的网关。Springcloud-gateway弥补了这一问题,它是基于netty实现的微服务网关。
 
gateway作为系统的入口,具备以下特点:

1、高可用、负载均衡、容错。
2、权限认证与身份校验。
3、支持灰度发布。
4、可以定义多种限制规则,实现流量控制。
5、支持动态路由。
6、记录请求与响应数据,进行耗时分析。
 
与nginx不同的是,gateway是基于java编写,易于扩展与维护,可以实现熔断、重试。Nginx适合于服务器端实现负载均衡,一般是对外的入口,springcloud gateway介于客户端与服务端之间的中间层,nginx可以选择作为gateway的前置,所有的外部请求都会先经过gateway这一层,也就是gateway实现上更多的与业务逻辑相关,安全、监控都可以交给gateway做,具体的微服务不用再实现安全相关,提高了业务的灵活性和系统安全性。Ribbon适合与在微服务中RPC远程调用实现本地服务负载均衡,spring cloud gateway就是这种方式。Nginx不具备gateway的一些特点,如权限认证与身份校验、动态路由、熔断、重试、可扩展与维护。
 
Spring cloud gateway特性:
1、编写predicates(谓词)和filters(过滤器)。filters为GatewayFilter,它是由特殊的工厂构建,通过Filter可以在下层请求路由前后改变http请求与响应。
2、能够在任意请求属性上匹配route(路由), 是网关的基本组件。它由ID、目标URI、谓词集合和过滤器集合定义。如果聚合谓词为true,匹配路由。
3、集成了Hystrix断路器。                                                                                           
4、集成了Spring Cloud DiscoveryClient。
 
Predicates是基于java8的函数接口Predicate,允许开发人员根据当前的http请求进行规则的匹配,所有这些predicates用于匹配HTTP请求的不同属性,如http请求头,请求时间等,匹配的结果将决定执行哪种路由。Spring Cloud Gateway 包含许多内置的 Route Predicate Factories,多个 Route Predicate Factories 可以通过逻辑与(and)结合起来一起使用。
 
GatewayFilter Factories(网关过滤器),路由过滤器允许以某种方式修改传入的HTTP请求或传出HTTP响应。路由过滤器的作用域是特定的路由。Spring Cloud Gateway包含许多内置的网关过滤器工厂。
 
Global Filters(全局过滤器),GlobalFilter接口的方法签名和GatewayFilter相同。这些是有条件地应用于所有路由的特殊过滤器。
 
 


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.link66.cn/news/3049.html