1.nginx和Gateway的区别?

首先,我们要了解网关这个概念。对应nginx和Gateway这两者来说,他们都是网关,但他们的使用场景却不同,也就是说,他们的作用是不同的。

Gateway 作为更底层的微服务网关,通常是作为外部 Nginx 网关和内部微服务系统之间的桥梁,起了这么一个承上启下的作用。

 首先,用户通过浏览器访问域名,域名通过DNS服务器进行解析,解析到对应的ip,一般一些大公司,为了避免单点故障,我们可以在这层加层保险。具体的实现,有几种方式。

第一种:将域名映射成两个IP地址做主备。

第二种:根据用户IP所属区域做Loadbalancer(负载均衡),将请求导向就近的IP地址。

2.虚IP

上面我们说到,为了避免单点故障,在域名解析到IP这一步,实际上我们使用的是一个虚ip,它后面有可能是映射到一个网关集群上。

在阿里云上,提供了一个产品叫:全局流量管理的产品,有点类似这个。

 3.为什么请求到达微服务最一步是微服务网关

Gateway既然叫“微服务网关”,就说明它也是一个微服务。简单来说,它也是Nacos服务注册中的一员。因此它能获取到Nacos中所有的服务注册表。这样一来,Gateway就可以根据本地的路由规则,将请求精准无误地送到每个微服务组件中。

3.1.Gateway的好处

1.高扩展性

2.高度可定制化

4.Gateway路由规则

组成部分路由谓语过滤器

4.1.路由

路由是 Gateway 的一个基本单元 ,每个路由都有一个目标地址,这个目标地址就是当前
路由规则要调用的目标服务。

4.2.谓语

所谓谓词,实际上是路由的判断规则 ,一个路由中可以添加多个谓词的组合。
打个比方,你可以为某个路由设置一条谓词规则,约定访问路径的匹配规则为 Path=/bingo/*,在这种情况下只有以 /bingo 打头的请求才会被当前路由选中。
谓词和路由是怎么配合工作?
其实 Gateway 里通常会配置多个路由单元。因为在真实项目里,每个微服务都有不同的路由规则,但每个请求只能被一个路由规则选中。
如果某个请求同时匹配上了多个路由,该选择哪个路由呢?
Gateway 提供了一种“优先级”设置,你可以通过设置路由的优先级参数来调整生效的先后顺序。        

4.3.过滤器

过滤器和路由、目标地址之间是什么关系呢?

Gateway 在把请求转发给目标地址的过程中,把这个任务全权委托给了 Filter(过滤器)来处理。

Gateway 组件使用了一种 FilterChain 的模式 对请求进行处理,每一个服务请求 (Request)在发送到目标服务之前都要被一串 FilterChain 处理。同理,在 Gateway 接收服务响应(Response)的过程中也会被 FilterChain 处理一把。
Gateway 的过滤器主要分为两种,一种是 GlobalFilter,也就是“ 全局过滤器 ”;另一种是GatewayFilter,也就是对指定路由生效的“ 局部过滤器 ”。

Logo

开源、云原生的融合云平台

更多推荐