一、网关的使用场景
1.1)网关的作用——无网关
1.2)网关的作用——有网关
请求转发相当于我们翻墙,直接访问油管会被墙挡住,那么我们将请求发送给代理(代理不被墙),代理将请求转发给目标网站,目标网站将内容返回给代理,代理再将返回的内容转发给我
1.3)网关应用——鉴权认证
1.4)网关应用——灰度发布
发布问题:新版本发布后关闭旧服务,比如注册新帐号测试按照正常的注册流程没问题,等到上线后有一些用户名中携带表情之类注册,在保存进数据库的时候报错。而旧服务是没问题的用户使用不顺畅可能不用了,只要不是用户必须再次使用概率极低
灰度发布:在大版本改动的时候将流量权重比例逐步向新服务迁移的一种发布方式
蓝绿发布
A/B Test
金丝雀发布
二、网关技术选型
2.1)OpenResty
初始化阶段:init_by_lua可以通过脚本加载Nginx配置文件,想修改配置文件在此步开发,init_worker_by_lua用来做健康检查
Rewrite/Access阶段:Request Start表示请求打进来了,Secure request判断是不是加密,是的话通过ssl_certificate_by_lua握手连接进行认证工作,Set_by_lua用来设置变量
2.2)Zuul
Pre Filters可以做限流、鉴权,Post Filters可以做请求封装、统计,Error Filters可以做重试、日志通知
2.3)Gateway
三、Gateway实战
gateway-service
gateway-sample
四、Gateway架构原理
4.1)Gateway的请求处理过程
4.2)RoutePredicateFactory
演示1:BeforeRoutePredicateFactory——请求在指定日期之前
演示2:AfterRoutePredicateFactory——请求在指定日期之后
演示3:CookieRoutePredicateFactory——请求中携带的Cookie是否匹配配置的规则
演示4:HeaderRoutePredicateFactory——请求中Header头消息对应的name和value与Predicate配置的值是否匹配
演示5:HostRoutePredicateFactory——匹配请求中的Host字段进行路由
演示6:MethodRoutePredicateFactory——根据HTTP请求的Method属性来匹配以实现路由
4.3)RouteFilterFactory
演示1:AddRequestParameterGatewayFilterFactory——该过滤器的功能是对所有匹配的request请求中添加一个查询参数
演示2: AddResponseHeaderGatewayFilterFactory——该过滤器会对所有匹配的请求,在返回结果给客户端之前,在Header中添加相应的数据
演示3:RequestRateLimiterGatewayFilterFactory——该过滤器会对访问到当前网关的所有请求执行限流过滤
演示4:RetryGatewayFilterFactory——请求重试过滤器,根据指定的触发条件,发起重试操作
演示5:GatewayMetricsFilter——网关指标过滤器,这个过滤器会添加name=gateway.requests的timer metrics
演示6:自定义过滤器(自定义Predicate也差不多)
GatewayFilter
GlobalFilter
五、集成Nacos实现请求负载
gateway-nacos-provider
gateway-nacos-consumer