当前位置: 首页 > wzjs >正文

精品课程网站的建设南宁兴宁区建设局网站

精品课程网站的建设,南宁兴宁区建设局网站,亚马逊网官网首页,dede 网站搬家目录 Gateway作用 Gateway使用 Gateway作用 在微服务项目中,没有引入网关时,项目架构如下: 引入网关后,架构如下: 引入网关后,有如下优势: 1、客户端请求经过网关向后台统一分发请求&#xff0c…

目录

     Gateway作用

     Gateway使用


     Gateway作用

        在微服务项目中,没有引入网关时,项目架构如下:

        引入网关后,架构如下:

        引入网关后,有如下优势:

        1、客户端请求经过网关向后台统一分发请求,后台微服务的增加、减少对客户端影响较小

        2、客户端请求到每个后台微服务,可以经过网关实现统一的鉴权认证

        3、网关可以对后台微服务做限流管理

     Gateway使用

       Gateway中有如下核心概念:

        1、路由route:路由信息包括一个ID、一个目的URI、一组断言工厂、一组Filter组成。如果断言为真,则说明请求的 URL 和配置的路由匹配。

        2、断言predicates:可以理解为匹配到路由的条件

        3、过滤器Filter:对匹配的路由请求和响应进行处理

        如下图配置信息,当访问http://网关ip:端口/blog-user/blogUser/getById,系统会将地址自动转发到 http://blog-user服务ip:端口/blogUser/getById 的这个请求中,并且注意,通过uri: lb://blog-user  这样的配置,如果系统存在多个blog-user服务实例,gateway网关会负载均衡(轮询)的方式转发的对应的blog-user服务实例

        在微服务项目开发过程中,通常会建立一个网关项目,专门负责对各个微服务请求转发的管理,示例中建立了blog-gateway项目,步骤如下:

        1、添加gateway依赖

        由于gateway应用也会注册到nacos上,所以nacos服务发现的依赖也需要加上

        2、配置网关信息

        从下图中可以看出,配置了2个网关路由规则,

        当网关请求地址是:http://localhost:7777/blog-user/blogUser/getById时,系统会从nacos找到 blog-user微服务名,进而请求到实际的地址:http://localhost:8088/blogUser/getById

        当网关请求地址是:http://localhost:7777/blog-content/blogContent/getById?id=1时,系统会从nacos找到 blog-content微服务名,进而请求到实际的地址:http://localhost:8888/blogContent/getById?id=1 或 http://localhost:9999/blogContent/getById?id=1

        blog-gateway注册在nacos中的信息如下:

        blog-user注册在nacos中的信息如下:

        blog-content注册在nacos中的信息如下:

        3、实现网关自定义的过滤器

        自定义过滤器分两种。全局过滤器:实现globalFilter和order接口。局部过滤器:实现AbstractGatewayFilterFactory接口并自定义或者使用父类的Config类 ,然后在配置文件中将过滤器进行配置(指明哪种路由用到自定义过滤器)。

        下图自定义了网关过滤器CustomValidator,并配置在yml中,当请求网关地址:http://localhost:7777/blog-user/blogUser/getById 时,会先执行过滤器逻辑,然后再执行请求实际地址逻辑。

package com.gingko.filter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
import org.springframework.core.annotation.Order;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;import java.util.ArrayList;
import java.util.List;/*** 自定义过滤器 要在yml文件里配置自定义过滤器的过滤器名称CustomValidator (CustomValidatorGatewayFilterFactory)* (GatewayFilterFactory是默认名称,前面的就是自定义过滤器的名称)* filters:*   - CustomValidator=condition1,condition2,condition3,condition4*/
@Order(1)
@Component
@Slf4j
public class CustomValidatorGatewayFilterFactoryextends AbstractGatewayFilterFactory<CustomValidatorGatewayFilterFactory.Config> {public CustomValidatorGatewayFilterFactory() {super(Config.class);}@Overridepublic GatewayFilter apply(Config config) {return ((exchange, chain) -> {log.info("进入自定义过滤器...");ServerHttpRequest request = exchange.getRequest();ServerHttpResponse response = exchange.getResponse();String key = config.getParam();log.info("参数信息:{},{},{},{}" ,config.getParam(),config.getParam2(),config.getParam3(),config.getParam4() );return chain.filter(exchange);});}/***  如果是自定义config 则需要重写该方法返回list集合 以便routdefine通过反射传回参数*  ShortcutConfiguratble 这个类获取配置*  RouteDefinitionRouteLocator.getFilters 获得所有过滤器 然后按顺序执行* @return*/@Overridepublic List<String> shortcutFieldOrder() {List<String> list = new ArrayList<>();list.add("param");list.add("param2");list.add("param3");list.add("param4");return list;}/*** 你再路由配置那里给过滤器设置了多少参数那么就创建多少个参数变量来接收值*/static public class Config {private String param;private String param2;private String param3;private String param4;public String getParam2() {return param2;}public void setParam2(String param2) {this.param2 = param2;}public String getParam3() {return param3;}public void setParam3(String param3) {this.param3 = param3;}public String getParam4() {return param4;}public void setParam4(String param4) {this.param4 = param4;}public String getParam() {return param;}public void setParam(String param) {this.param = param;}}
}

          控制台运行结果如下:从日志时间上可以看出,请求网关地址:http://localhost:7777/blog-user/blogUser/getById 后,先执行的过滤器逻辑,打印输出了参数信息(p1,p2,p3,p4),然后执行了实际分发地址的逻辑。


文章转载自:

http://MljZXIeM.qgwdc.cn
http://Dm9bf6bc.qgwdc.cn
http://Mkxdr8G9.qgwdc.cn
http://aUYTCxbQ.qgwdc.cn
http://YPMbzZPF.qgwdc.cn
http://vvhjRy1Y.qgwdc.cn
http://M6slpsFA.qgwdc.cn
http://fEqqArQk.qgwdc.cn
http://djzfmADC.qgwdc.cn
http://tfGG80pe.qgwdc.cn
http://Y5j8jSLe.qgwdc.cn
http://7iijhy3m.qgwdc.cn
http://mCjGP2Ka.qgwdc.cn
http://in41PU4j.qgwdc.cn
http://AK0LscTE.qgwdc.cn
http://Dd5KSvlR.qgwdc.cn
http://4RUnVGoG.qgwdc.cn
http://HVK8uggP.qgwdc.cn
http://KmBcNKX7.qgwdc.cn
http://KkLdu82Y.qgwdc.cn
http://jA6c6XQ7.qgwdc.cn
http://X3iyywrL.qgwdc.cn
http://Ii2RhtNw.qgwdc.cn
http://HAXJY3ex.qgwdc.cn
http://SQwFLqhn.qgwdc.cn
http://29AFOufO.qgwdc.cn
http://WLOjKofb.qgwdc.cn
http://Y4bqIwGi.qgwdc.cn
http://qUNF5xnO.qgwdc.cn
http://hzXIcYCk.qgwdc.cn
http://www.dtcms.com/wzjs/647547.html

相关文章:

  • 业务宣传网站建设ImQQ网站是怎么做的
  • 程序员不是做网站的南昌企业网站设计
  • 网站建设小细节图片小型互联网公司市值排名
  • 写资料的网站有哪些用自己的话回答网络营销是什么
  • 闵行区网站设计网站建设有什么理论依据
  • 沈阳网站开发公司怎么做网页背景
  • 广州做网页做网站优化竞价区别
  • 双语企业网站源码深圳家园网社区论坛
  • 电脑版传奇网站深圳网站建设哪家好
  • 公司网站建设是哪个部门的事情?个人网页设计开题报告
  • 南京制作公司网站深圳手机网站设计
  • 可以做海报的网站网站标题关键词怎么做
  • 织梦cms可以做外贸网站吗网页设计后面是网站建设吗
  • 云网站制作的流程图国产长尾关键词拘挖掘
  • 郑州网站建设公司有哪些网页设计的首页版式
  • 合肥专门做网站杭州省建设厅网站
  • 做简历网站 39东阳网站建设
  • 团购网站怎么做南昌官网seo
  • 磐安网站建设公司asp 网站运行
  • 广东省农业农村厅网站东莞行业推广
  • 网站定制需求达州建设企业网站
  • 上传照片的网站赚钱网站建设公司宣传范文
  • 重庆建设网站多久时间网站模块规划
  • 北京珠宝网站建设dedecms购物网站
  • dede网站如何换源码wordpress菜单排序
  • 网站营销案例展示多企业宣传网站建设
  • 贵州城乡建设部网站推广网站可以做跳转吗
  • 百度收录提交之后如何让网站更快的展示出来单页营销型网站模板
  • 宿州网站建设费用怎么样才能在网上卖东西
  • 凡科做的网站怎么打不开了wordpress更改中文版后还是英文