微服务网关Zuul和Gateway的区别
1、相同点:
1、底层都是servlet
2、两者均是微服务网关,处理的是http请求
2、不同点:
1、内部实现:
gateway对比zuul多依赖了spring-webflux,在spring的支持下,功能更强大,内部实现了限流、负载均衡等,扩展性也更强,但同时也限制了仅适合于Spring Cloud套件
zuul则可以扩展至其他微服务框架中,其内部没有实现限流、负载均衡等。
2、是否支持异步
zuul仅支持同步
gateway支持异步。理论上gateway则更适合于提高系统吞吐量(但不一定能有更好的性能),最终性能还需要通过严密的压测来决定
3、性能
WebFlux 模块的名称是 spring-webflux,名称中的 Flux 来源于 Reactor 中的类 Flux。Spring webflux 有一个全新的非堵塞的函数式 Reactive Web 框架,可以用来构建异步的、非堵塞的、事件驱动的服务,在伸缩性方面表现非常好。使用非阻塞API。 Websockets得到支持,并且由于它与Spring紧密集成,所以将会是一个更好的 开发 体验。
Zuul 1.x,是一个基于阻塞io的API Gateway。Zuul已经发布了Zuul 2.x,基于Netty,也是非阻塞的,支持长连接。
Nginx和Gateway
访问一个域名经历哪些组件
- 找IP(DNS域名解析得到IP)
- 访问接入层,比如部署在阿里云上,接入层是SLB。内部是一个LVS+NGINX实现的四层+七层负载均衡
- 应用网关,如:gateway、zuul,做统一鉴权
- 应用层服务
1、controller
2、service
3、dao - Mysql
Nginx实现了哪些?
- 反向代理
- 负载均衡
Gateway实现了哪些?
- 统一鉴权
Gateway和Nginx?
gateway的负载均衡是内部服务的负载均衡,更贴近于业务后端的技术栈。nginx是gateway的前置负载均衡。
一般情况下nginx是处在负载均衡端,gateway处在springcloud集群的入口处,所有流量会先经过nginx负载均衡到gateway上。
nginx是为了承压,gateway是抽取各服务的通用功能。