Java-Interview-Advanced/docs/distributed-system/gateway-model-selection.md

41 lines
2.2 KiB
Markdown
Raw Permalink Normal View History

2020-04-25 11:55:58 +00:00
### 网关的核心功能
#### (1)动态路由:新开发某个服务,动态把请求路径和服务的映射关系热加载到网关里去;服务增减机器,网关自动热感知
#### (2)灰度发布
#### (3)授权认证
#### (4)性能监控每个API接口的耗时、成功率、QPS
#### (5)系统日志
#### (6)数据缓存
#### (7)限流熔断
### 几种技术选型
#### Kong、Zuul、Nginx+LuaOpenResty、自研网关
**KongNginx里面的一个基于lua写的模块实现了网关的功能**
**ZuulSpring Cloud来玩儿微服务技术架构Zuul**
**Nginx+LuaOpenResty课程目录里面有一个文档课程免费学习亿级流量系统架构的课程详细讲解了Nginx+Lua的开发**基于lua自己写类似Kong的网关
**自研网关自己来写类似Zuul的网关基于Servlet、Netty来做网关实现上述所有的功能**
大厂BAT、京东、美团、滴滴之类的自研网关都是基于Netty等技术自研网关Nginx + LuaTengine来做封装网关的功能
中小型公司Spring Cloud技术栈主要是用ZuulGateway如果是Dubbo等技术栈有的采用Kong等网关也可以直接不用网关很多公司压根儿就没用网关直接Nginx反向代理+负载均衡;
Zuul基于Java开发核心网关功能都比较简单但是比如灰度发布、限流、动态路由之类的很多都要自己做二次开发
Kong依托于Nginx实现OpenRestylua实现的模块现成的一些插件可以直接使用
ZuulServlet、Java高并发能力不强部署到一些机器上去还要基于Tomcat来部署Spring Boot用Tomcat把网关系统跑起来Java语言开发可以直接把控源码可以做二次开发封装各种需要的功能
NginxKong、Nginx+LuaNginx抗高并发的能力很强少数几台机器部署一下就可以抗很高的并发精通Nginx源码很难c语言很难说从Nginx内核层面去做一些二次开发和源码定制
Java技术栈为主的大厂很多其实用Java、Servlet、Netty来开发高并发、高性能的网关系统自己可以把控一切