1.微服务为什么设置不同的namespace

为了实现三种服务三种情况下的隔离。

微服务必须使用grpc 微服务还要nginx吗_微服务

2.为什么要用nginx为naocos集群结点做负载均衡?

2.1 正向代理

就像我们访问外网需要一个代理。

微服务必须使用grpc 微服务还要nginx吗_nginx_02

 2.2 反向代理

我们不需要访问真实的ip,只需要访问 这个服务的代理服务器即可,就会被转发到真实的ip,隐藏了真实服务器的ip地址。

就像访问域名,它会给你的请求分到别的具体ip服务器。

微服务必须使用grpc 微服务还要nginx吗_反向代理_03

2.3 Nginx为啥不用来做服务的负载均衡?

Nacos是做服务的注册与发现(暂不讨论其他功能)的,内部封装了ribbon负载均衡,与open feign整合使用能够很灵活的开发项目;
Nginx能够实现反向代理和负载均衡,一般用来搭建服务器的集群,实现高并发;

微服务必须使用grpc 微服务还要nginx吗_nginx_04

作用不同:
区别就是Nacos能够做的服务的注册与发现,Nginx可以实现对服务端的反向代理,但做不到主动让服务的发现。

  1. 如果使用Nginx来实现服务之间的调用,远没有使用Nacos方便;
  2. Nacos同样也做不到实现一个服务器集群的反向代理,如上图所示,Nacos如果只有一台服务器,会存在单点故障的风险,所以使用nginx做了集群,不仅消除了风险还提高了并发量。

 nginx 可以对 服务器集群做反向代理。

下面这是 nginx 的代理,nacos的代理 都是分到具体服务器(具体的ip和端口),而不是分到集群。

微服务必须使用grpc 微服务还要nginx吗_负载均衡_05

2.4 nacos 需要有集群,那不然你nacos注册中心也会挂啊

微服务都需要集群,你ngnix也需要集群。

3.Http连接池(跟数据库连接池差不多)

3.1 Http 存在的问题

微服务必须使用grpc 微服务还要nginx吗_反向代理_06

3.2 创建http 线程池

微服务必须使用grpc 微服务还要nginx吗_微服务_07

3. 3 通过连接池获取httpClient(这个对象就是发请求的)

微服务必须使用grpc 微服务还要nginx吗_nginx_08

 3.4 设定请求类型并执行请求

3.5 连接池状态观察

微服务必须使用grpc 微服务还要nginx吗_nginx_09

4 .gateway和 nginx的区别

有了nginx做网关,为啥还要用到gateway呢?

4.1 不同之处

首先这两种网关的定义不一样

nginx用户访问的总入口,也就是前端页面的容器,流量网关。比如对某个ip服务器的访问。

gateway的定义是针对每一个业务,微服务,属于业务网关。

gateway的主要功能有,路由,断言,过滤器,利用它的这些特性,可以做流量控制(对流量进行筛选。

nginx做网关,更多的是做总流量入口,反向代理,负载均衡等,还可以用来做web服务器。

4.2 相同之处

都对流量做负载均衡。

nginx对总流量复杂均衡,gateway对业务流量做负载均衡。

4.3 geteWay的负载均衡还是要去nacos 里扒。

所以得配置nacos的地址。 

微服务必须使用grpc 微服务还要nginx吗_负载均衡_10

微服务必须使用grpc 微服务还要nginx吗_nginx_11

5.gateway只实现了只实现了 31种过滤器,但是我们能不能自定义一个呢?

全局过滤器的作用也是处理一切进入网关的请求和微服务响应,与 GatewayFilter 的作用一样。区别在于 GlobalFilter 的逻辑可以写代码来自定义规则;而 GatewayFilter 通过配置定义,处理逻辑是固定的。

当然gate way是有自己的全局过滤器。

微服务必须使用grpc 微服务还要nginx吗_反向代理_12

过滤器 如果 order (用来排序的)的值都一样,那就默认过滤器>当前过滤器> GlobalFilter。

过滤器执行的顺序规则如下:

微服务必须使用grpc 微服务还要nginx吗_负载均衡_13

6. gateway解决跨域问题