网关功能
(1)动态路由:新开发某个服务,动态把请求路径和服务的映射关系热加载到网关里去;服务增减机器,网关自动热感知
(2)灰度发布:基于现成的开源插件来做
(3)授权认证
(4)限流熔断
(5)性能监控:每个API接口的耗时、成功率、QPS
(6)系统日志
(7)数据缓存
技术选型
Kong、Zuul、getway、Nginx+Lua(OpenResty)、自研网关
Kong:Nginx里面的一个基于lua写的模块,实现了网关的功能 Zuul:Spring Cloud来玩儿微服务技术架构,Zuul
Nginx+Lua(OpenResty):课程目录里面,有一个文档,课程免费学习,亿级流量系统架构的课程,详细讲解了Nginx+Lua的开发,基于lua自己写类似Kong的网关 自研网关:自己来写类似Zuul的网关,基于Servlet、Netty来做网关,实现上述所有的功能
Zuul(Servlet、Java):高并发能力不强
Nginx(Kong、Nginx+Lua):Nginx抗高并发的能力很强
网关高并发优化
LVS(集群) 负载均衡 + Nginx(集群)负载均衡 + 网关集群
网关的动态路由
1.重写zuul 网关路由组件中的加载路由信息的方法,动态加入我们的路由信息
2.定时任务调用 zuul 发布刷路由事件是刷新路由信息
网关的灰度发布
1.基础它的拦截器。重写方法中 比对 请求地址是否需要灰度发布
2.定义 需要灰度发布的 逻辑