SpringCloud怎么实现Zuul集群

  介绍

小编给大家分享一下SpringCloud怎么实现Zuul集群,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!

一、使用Nginx + Zuul实现网关集群

1。互联网公司中网关都是集群搭建集群:Nginx + Zuul一主一备,或者轮询多个。

2。在微服务中,所有服务请求都会统一请求到Zuul网关上。

图示:

 SpringCloud怎么实现Zuul集群

过程:客户端发送请求统一到Nginx上,在使用Nginx实现反向代理和负载均衡,采用轮询算法转发到网关上。

1。创建Eurek注册中心,会员服务,订单服务(略)

搭建Zull集群前,应该对尤里卡注册中心,以及创建SpringBoot项目应该有了解,这里就不一一赘述了。

实际上创建会员服务,订单服务这一步可以省略,因为我们仅仅是为了演示Nginx对Zuul网关的负载均衡效果。

<强>会员服务配置:

<>强过程:客户端发送请求统一到Nginx上,在使用Nginx实现反向代理和负载均衡,采用轮询算法转发到网关上。 1。创建Eurek注册中心,会员服务,订单服务(略)

搭建Zull集群前,应该对尤里卡注册中心,以及创建SpringBoot项目应该有了解,这里就不一一赘述了。实际上创建会员服务,订单服务这一步可以省略,因为我们仅仅是为了演示Nginx对Zuul网关的负载均衡效果。

<强>会员服务配置:

#会员服务   服务器:   ,,端口:8082   春天:   应用程序才能:   ,,,的名字:,member-service ,,, #服务名   #尤里卡配置   尤里卡:   客户:才能   ,,,服务url:   ,,,,,defaultZone:, http://127.0.0.1:8761尤里卡/,,,,,#注册中心的地址

<强>订单服务:

#订单服务   服务器:   ,,端口:8081   春天:   应用程序才能:   ,,,的名字:,order-service ,, #服务名   #尤里卡配置   尤里卡:   客户:才能   ,,,服务url:   ,,,,,defaultZone:, http://127.0.0.1:8761尤里卡/,,,,,,#注册中心地址

2。创建Zuul服务

<强>应用程序。yml文件中配置(Zull的配置生产时一般是放到配置中心中)

#配置Zuul端口   服务器:   ,,端口:81   春天:   应用程序才能:   ,,,的名字:,zull-gateway-service ,,, #服务名   #尤里卡配置   尤里卡:   客户:才能   ,,,服务url:   ,,,,,defaultZone:, http://127.0.0.1:8761尤里卡/,,,,#注册中心地址   ,,,,,   #,配置网关反向代理,例如访问/api-member/* *,直接重定向到会员服务服务,实现路由转发,隐藏服务的真实ip(服务都实在内网中)   # zull根据服务名,去尤里卡获取服务真实地址,并通过本地转发,而且默认开启带实现负载均衡   #默认读取尤里卡注册列表,默认30秒间隔,,   zuul:   ,路线:   ,,,api: #会员服务网关配置   ,,,,路径:,api-member/* *,,, #访问只要是api-member/,开头的直接转发到会员服务服务   ,,,,#服务名   ,,,,serviceId:会员服务   ,,,api-b: #订单服务网关配置   ,,,,路径:/api-order/* *   ,,,,serviceId:, order服务

<强>创建TokenFilet类继承ZuulFilter,在运行方法中输入网关的端口,调用服务时方便查看Nginx转发到哪个网关

package  com.example.zuul.filter;   import  com.netflix.zuul.ZuulFilter;   import  com.netflix.zuul.context.RequestContext;   import  com.netflix.zuul.exception.ZuulException;   import  io.micrometer.core.instrument.util.StringUtils;   import  org.springframework.beans.factory.annotation.Value;   import  org.springframework.stereotype.Component;   import  javax.servlet.http.HttpServletRequest;   @ component   public  class  TokenFilter  extends  ZuulFilter  {//统计当前Zuul调用次数   ,,,int  count =, 0;   ,,,,//获取Zuul服务端口号   ,,,@ value (“$ {server.port}“)   ,,,private  String 防;   ,,,,   ,,,/* *   ,,,,*,指定该滤波器的类型   ,,,,*,ERROR_TYPE =,“error";   ,,,,*,POST_TYPE =,“post";   ,,,,*,PRE_TYPE =,“pre";   ,,,,*,ROUTE_TYPE =,“route";   ,,,*/,,@Override   ,,,public  String  filterType (), {   ,,,,,,,System.out.println (“filterType ()…“);   ,,,,,,,return “pre";   ,,,}   ,,,/* *   ,,,,*,指定该滤波器执行的顺序(过滤器从小到大执行)   ,,,,*,DEBUG_FILTER_ORDER =, 1;   ,,,,*,FORM_BODY_WRAPPER_FILTER_ORDER =, 1;   ,,,,*,PRE_DECORATION_FILTER_ORDER =, 5;   ,,,,*,RIBBON_ROUTING_FILTER_ORDER =, 10;   ,,,,*,SEND_ERROR_FILTER_ORDER =, 0;   ,,,,*,SEND_FORWARD_FILTER_ORDER =, 500;   ,,,,*,SEND_RESPONSE_FILTER_ORDER =, 1000;   ,,,,*,SIMPLE_HOST_ROUTING_FILTER_ORDER =, 100;   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

SpringCloud怎么实现Zuul集群