微服务⽹关Zuul、Gateway、nginx的区别
对⽐Spring Cloud Netflix Zuul和Spring Cloud Gateway
前⾯整理了两者的特点,现在对⽐来分析,得出以下结论:
两者均是web⽹关,处理的是http请求
springcloud难学吗gateway对⽐zuul多依赖了spring-webflux,在spring的⽀持下,功能更强⼤,内部实现了限流、负载均衡等,扩展性也更强,但同时也限制了仅适合于Spring Cloud套件,⽽zuul则可以扩展⾄其他微服务框架中,其内部没有实现限流、负载均衡等
gateway很好的⽀持异步,⽽zuul仅⽀持同步,那么理论上gateway则更适合于提⾼系统吞吐量(但不⼀定能有更好的性能),最终性能还需要通过严密的压测来决定
从框架设计的⾓度看,gateway具有更好的扩展性,并且其已经发布了2.0.0的RELESE版本,稳定性也是⾮常好的
编码上看,zuul更加简洁易懂,注释规范清晰,⽽gateway作为Spring家族的⼀份⼦,竟然⼏乎不注释…
总的来说,在微服务架构,如果使⽤了Spring Cloud⽣态的基础组件,则Spring Cloud Gateway相⽐⽽⾔更加具备优势,单从流式编程+⽀持异步上就⾜以让开发者选择它了。
⽽对于⼩型微服务架构或是复杂架构(不仅包括微服务应⽤还有其他⾮Spring Cloud服务节点),zuul也是⼀个不错的选择,当然,这种场景下⼀般会选择nginx,因为nginx从各个⽅⾯都会表现的更好…
Nginx在微服务中的地位
最后简单聊⼀下nginx,在过去⼏年微服务架构还没有流⾏的⽇⼦⾥,nginx已经得到了⼴⼤开发者的认可,其性能⾼、扩展性强、可以灵活利⽤lua脚本构建插件的特点让⼈没有抵抗⼒。
有⼀个能满⾜我所有需求还很⽅便我扩展的东西,还免费,凭啥不⽤??
但是,如今很多微服务架构的项⽬中不会选择nginx,我认为原因有以下⼏点:
微服务框架⼀般来说是配套的,集成起来更容易
如今微服务架构中,仅有很少的公司会⾯对⽆法解决的性能瓶颈,⽽他们也不会因此使⽤nginx,⽽是选择开发⼀套适合⾃⼰的微服务框架spring boot对于⼀些模板引擎如FreeMarker、themleaf的⽀持是⾮常好的,很多应⽤还没有达到动、静态⽂件分离的地步,对nginx的需求程度并不⼤。
⽆论如何,nginx作为⼀个好⽤的组件,最终使不使⽤它都是由业务来驱动的,只要它能为我们⽅便的解决问题,那⽤它⼜有何不可呢?
⼩结
通过总结发现,在微服务架构中⽹关上的选择,最好的⽅式是使⽤现在⽐较成熟的Spring Cloud套件,其提供了Spring Cloud Gateway⽹关,或是结合公司情况来开发⼀套适合⾃⼰的微服务套件,⾄少从⽹关上可以看出来其内部实现并不难,同时也⽐较期待开源项⽬Nacos、Spring Cloud Alibaba 建设情况,期待它能构建⼀个⾼活跃社区的、稳定的、适合中国特⾊(⼤流量、⾼并发)的微服务基础架构。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。