开发者学堂课程【精通Spring Cloud Alibaba:Nginx与网关之间存在那些区别】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/634/detail/10116
Nginx 与网关之间存在那些区别
Nginx 与网关之间存在那些区别
首先会发现网关和 nginx 是非常相似的,微服务网关能够做的事情,nginx 也可以实现,但两者之间仍然存在一些区别。
相同点:都是可以实现 API 的拦截,也可以实现负载均衡,反向代理,请求过滤,可以完全和网关实现一样的效果,这是显而易见的。
早期工作中没有用网关进行处理,因为当时没有网关,当时是基于项目名称转到真正的地址,但是后来发现这样做的唯物性很差,因为有时需要通过做一些复杂的工作, Nginx 就要结合复杂的语言。
所以他们之间的不同点有:
Nginx 采用 c 语言编写,作为 Java 程序员很少有人能懂得 C 语言的编写,因为他们的入门语言就是 Java 语言。
在微服务领域中,都是自己语言编写的,微服务领域是一种架构思想,任何语言都有微服务领域,在微服务领域中在每个编程语言中都存在,比如使用 Java 构建微服务项目,既然使用Java来构建微服务项目,那么能够知道的是 Gateway 也就是 Java 语言编写的。
毕竟 gateway 是用 Java 语言写的,所以在想做扩展功能时,就能够自己上手,困难性不高,如果用 Nginx 来做的话就需要结合语言来进行扩展,这样的话就需要学习 C 语言和 lua 语言,困难性更高。所以专业的人要去做专业的事情。
Nginx 也能做服务类的项目,比如服务熔断,还可以做黑名单白名单项目,有些公司中 nginx 可以解决黑名单和白名单。毕竟 gateway 属于 Java 语言编写的,能够更好的对微服务实现扩展功能,大公司里面会有对入门语言有要求,Java 就不是很专业。相比 nginx 如何实现扩展功能的话,必须要学习 lua 或者 c 语言,那么整个学习成本会非常高。
lua 语言能结合 Nginx 做扩展功能。在大公司中,Nginx 用来做黑名单白名单项目,但只针对于对于 lua 语言专业的人群来说。