欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
  1.为什么是SpringCloudGateway
 
  一句话,SpringCloud已经放弃NetflixZuul了。现在SpringCloud中引用的还是Zuul1.x版本,而这个版本是基于过滤器的,是阻塞IO,不支持长连接。Zuul2.x版本跟1.x的架构大一样,性能也有所提升。既然SpringCloud已经不再集成Zuul2.x了,那么是时候了解一下SpringCloudGateway了。
 
  可以看到,最新的SpringCloud中的Zuul还是1.3.1版本
 
  而且,官网中也明确说了不再维护Zuul了
 
  (PS:顺便补充几个名词:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon))
 
  2.API网关
 
  API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供REST/HTTP的访问API。
 
  网关应当具备以下功能:
 
  性能:API高可用,负载均衡,容错机制。
 
  安全:权限身份认证、脱敏,流量清洗,后端签名(保证全链路可信调用),黑名单(非法调用的限制)。
 
  日志:日志记录(spainid,traceid)一旦涉及分布式,全链路跟踪必不可少。
 
  缓存:数据缓存。
 
  监控:记录请求响应数据,api耗时分析,性能监控。
 
  限流:流量控制,错峰流控,可以定义多种限流规则。
 
  灰度:线上灰度部署,可以减小风险。
 
  路由:动态路由规则。
 
  目前,比较流行的网关有:Nginx、Kong、Orange等等,还有微服务网关Zuul、SpringCloudGateway等等
 
  对于APIGateway,常见的选型有基于Openresty的Kong、基于Go的Tyk和基于Java的Zuul。这三个选型本身没有什么明显的区别,主要还是看技术栈是否能满足快速应用和二次开发。
 
  以上说的这些功能,这些开源的网关组件都有,或者借助Lua也能实现,比如:Nginx+Lua
 
  那要SpringCloudGateway还有什么用呢?
 
  其实,我个人理解是这样的:
 
  像Nginx这类网关,性能肯定是没得说,它适合做那种门户网关,是作为整个全局的网关,是对外的,处于最外层的;而Gateway这种,更像是业务网关,主要用来对应不同的客户端提供服务的,用于聚合业务的。各个微服务独立部署,职责单一,对外提供服务的时候需要有一个东西把业务聚合起来。
 
  像Nginx这类网关,都是用不同的语言编写的,不易于扩展;而Gateway就不同,它是用Java写的,易于扩展和维护
 
  Gateway这类网关可以实现熔断、重试等功能,这是Nginx不具备的

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h56945.shtml