网关 - 业界方案
2021-05-26 14:09:23 3 举报
AI智能生成
网关 - 业界方案
作者其他创作
大纲/内容
实现方案
基于Nginx+Lua+ OpenResty
Kong,orange都是基于这个方案
基于Netty、非阻塞IO模型
宜人贷等一些公司是基于这种方案,成熟的方案。
基于Node.js
应用了Node.js天生的非阻塞的特性
基于java Servlet
zuul基于的就是这种方案
产品介绍
Nginx
说明
模块编译
Lua及C++开发(OpenResty)
优点
具备URL转发映射及反向代理功能
效率高
缺点
如具备身份认证与安全、审查与监控,需要模块化开发,开发成本高
限于HTTP的解析,非JAVA语言开发
Kong
说明
基于OpenResty的 API 网关服务和网关服务管理层
优点
基于Nginx的,所以在性能和稳定性上表现不错
插件扩展功能
前置的负载均衡器分发请求
网关热更新,不重启服务
多种集群缓存
缺点
需要自研相应功能插件
有一定的学习成本
Netflix 的 Zuul
说明
核心是一系列的过滤器
JAVA开发
优点
具备URL转发映射及反向代理功能
可以扩展自己需要的过滤器
缺点
性能和线上大面积故障
Spring Cloud 的 Zuul
说明
Spring Cloud整合和增强
优点
JAVA原生,设计简单代码不多,容易读懂;同步 Servlet,采用多线程阻塞模型;
具备URL转发映射及反向代理功能
增加了安全验证、动态路由、负载分配等
缺点
线程本身需要消耗 CPU 和内存资源,多线程之间切换开销多;
预热后性能更会好,Servlet容器把.class文件中的数据读到内存中;
更新需要重启中断服务;
网络请求处理位于高层次网络层
Spring Cloud Gateway
说明
Spring Cloud的开源项目之一
与整合增强zuul地位不一样
优点
具备URL转发映射及反向代理功能
可以扩展自己需要的过滤器
效率相对较高
缺点
基于JAVA,运行体量大
依赖使用Spring多套框架
netty自研API网关
说明
利用Netty实现的filter
JAVA开发
优点
具备URL转发映射及反向代理功能
利用了netty的高性能
可以实现的filter来增加各种功能
缺点
需要从头开发,踩坑会较多
filter越多性能会不断下降
缓存不容易做好
重点对比
语言
zuul:JAVA
优势
kong:LUA
设计
zuul:设计简单代码不多,容易读懂
优势
kong:脚本作用于Nginx的不同工作阶段,需要原理性理解
功能扩展
zuul:通过filter重复开发
kong:通过插件扩展功能
优势
负载层次
zuul:顶位负载网络层
kong:四层或七层网络层负载
优势
负载均衡器
zuul:后置的负载均衡器分发请求
kong:前置的负载均衡器分发请求
优势
网关更新
zuul:会中断服务
kong:热更新,不中断服务
优势
性能
zuul:性能平稳
kong:性能优秀
优势
喜欢麻烦右上角点赞赞
0 条评论
下一页