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

网站怎么做利于优化王烨凡

网站怎么做利于优化,王烨凡,网店推广是什么,泰州市建设局网站Api 网关 也是一种服务,就是通往后端的唯一入口,类似于整个微服务架构的门面,所有的外部客户端进行访问,都需要经过它来进行过滤和调度,类似于公司的前台 而Spring Cloud Gateway就是Api网关的一种具体实现 网关的核心…

Api 网关

        也是一种服务,就是通往后端的唯一入口,类似于整个微服务架构的门面,所有的外部客户端进行访问,都需要经过它来进行过滤和调度,类似于公司的前台

而Spring Cloud Gateway就是Api网关的一种具体实现

网关的核心功能

  • 权限控制:作为微服务的入口,对用户进行权限校验,校验失败则会进行拦截
  • 动态路由:一切的请求先经过网关,但是网关不处理业务,而是根据某种规则,把请求转发到某个微服务
  • 负载均衡:当路由的服务目标有多个时,还需要做负载均衡
  • 限流:请求流量过高时,按照网关中配置微服务能够接受的流量进行放行,避免服务压力过大

Spring Cloud Gateway的使用

实现需要先引入网关的依赖

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>

添加Gateway的路由配置

server:port: 10030
spring:application:name: gatewaycloud:nacos:discovery:server-addr: 123.57.4.74:8848gateway:routes: #网关配置- id: product-serviceuri: lb://product-servicepredicates:- Path=/product/**- id: order-serviceuri: lb://order-servicepredicates:- Path=/order/**

 通过Api网关服务访问product-service服务和order-service服务

RoutePredicate Factories(路由断言工厂)

用于定义路由的匹配条件

Predicate

用于确定请求是否匹配某个路由的条件

接受一个参数,返回一个布尔类型,用于判断接受的请求参数是否满足条件

定义⼀个Predicate

判断请求参数s是否为空,为空为true

public class StringPredicate implements Predicate<String> {@Overridepublic boolean test(String s) {return s==null || s.isEmpty();}
}

 使用

    @Testpublic void test1(){Predicate<String> predicate=new StringPredicate();System.out.println(predicate.test("aa"));System.out.println(predicate.test(""));}

Predicate的其他写法

内置函数

@Testpublic void test(){Predicate<String> predicate=new Predicate<String>() {@Overridepublic boolean test(String s) {return s==null || s.isEmpty();}};System.out.println(predicate.test("aa"));System.out.println(predicate.test(""));}

lambda形式

@Testpublic void test2(){Predicate<String> predicate= s-> s==null || s.isEmpty();System.out.println(predicate.test("aa"));System.out.println(predicate.test(""));}

其他方法

negate()求反

@Testpublic void test3(){Predicate<String> predicate= s-> s==null || s.isEmpty();System.out.println(predicate.negate().test("aa"));System.out.println(predicate.negate().test(""));}

or()

@Testpublic void test4(){Predicate<String> predicate= s-> "aa".equals(s);Predicate<String> predicate2= s-> "bb".equals(s);System.out.println(predicate.or(predicate).test("aa"));System.out.println(predicate.or(predicate).test(""));}

 and()

 @Testpublic void test5(){Predicate<String> predicate= s-> s!=null && s.isEmpty();Predicate<String> predicate2= s-> s!=null && s.chars().allMatch(Character::isDigit);System.out.println(predicate.and(predicate2).test("aa"));System.out.println(predicate.and(predicate2).test("123"));}

Spring Cloud Gateway默认提供了很多RoutePredicateFactory,这些Predicate会分别匹配HTTP请 求的不同属性,并且多个Predicate可以通过and逻辑进⾏组合

匹配指定如期之后的请求

匹配指定如期之前的请求 

指定的Cookie和Header

及该cookie或者header值符合指定的正则表达式

具体详细看Route Predicate Factories :: Spring Cloud Gateway

GatewayFilter Factories(网关过滤工厂) 

predicate决定了请求由哪一个路由处理,如果在请求处理前后需要加上一些逻辑,这就是Filter(过滤器)的作用范围了

Filter分为两种类型:Pre类型和Post类型

  • Pre类型过滤器:路由处理前执行(转发到后端服务之前执行),在Pre类型过滤器中可以做鉴权,限流的处理
  • Post类型过滤器:请求执行完成后,将结果返回给客户端之前执行

gateway可将把Filter可分为GatewayFilter和GlobalFilter

  • GatewayFilter只对一个路由起作用
  • GlobalFilter对所有的路由起作用

Spring Cloud Gateway提供了非常多的Filter

GatewayFilter Factories :: Spring Cloud Gateway

过滤器执⾏顺序

请求路由后,网关会把当前项目中的Gateway和GlobalFilter合并到一个过滤链中,并进行排序,一次执行过滤器

每个过滤器必须指定一个int类型的order值,默认值为0,表示该过滤的优先级,order值越小,优先级越高,排序越靠前

自定义过滤器

自定义Gateway Filter

@Service
public class CustomGatewayFilterFactory extends AbstractGatewayFilterFactory<CustomConfig> implements Ordered {private static final Logger log = LoggerFactory.getLogger(CustomGatewayFilterFactory.class);public CustomGatewayFilterFactory() {super(CustomConfig.class);}@Overridepublic GatewayFilter apply(CustomConfig config) {return new GatewayFilter() {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {log.info(" pre Filter,Config:{}",config);return chain.filter(exchange).then(Mono.fromRunnable(()->{log.info("post Filter");}));}};}@Overridepublic int getOrder() {return Ordered.LOWEST_PRECEDENCE;}
}
@Data
public class CustomConfig {private String name;
}

 注:类名统⼀以GatewayFilterFactory结尾,因为默认情况下,过滤器的name会采⽤该定义类的前缀.这⾥的name=Custom(yml配置中使⽤)

then方法是请求执行之后处理的 

getOrder是定义优先级,值越大,优先级越小

测试

自定义GlobalFilter

@Component
@Slf4j
public class CustomGlobalFilter implements GatewayFilter, Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {log.info("pre filter");return chain.filter(exchange).then(Mono.fromRunnable(()->{log.info("post filter");}));}@Overridepublic int getOrder() {return Ordered.LOWEST_PRECEDENCE;}
}

 测试

此时的order-service并没有定义Filter

全局过滤器定义成功 

希望对大家有所帮助!!!!!


文章转载自:

http://uOXGuRXc.srxhd.cn
http://7zTeIPRq.srxhd.cn
http://rCTnSQDx.srxhd.cn
http://UVPfGxd0.srxhd.cn
http://xZCYySH1.srxhd.cn
http://UwSARXLo.srxhd.cn
http://nEH10wVa.srxhd.cn
http://ex2slY16.srxhd.cn
http://2ptV5b2z.srxhd.cn
http://y4JCpSqt.srxhd.cn
http://JSpoXnIE.srxhd.cn
http://uk8Qgc1W.srxhd.cn
http://MS8H9nbB.srxhd.cn
http://15HDsZ5E.srxhd.cn
http://kq5VkXJp.srxhd.cn
http://RKpF9lJl.srxhd.cn
http://DiAFf52C.srxhd.cn
http://p1j0oueW.srxhd.cn
http://iL0cMvQq.srxhd.cn
http://gABVvFz5.srxhd.cn
http://vNwcfQDy.srxhd.cn
http://IZJZzcoc.srxhd.cn
http://LqhdO4rQ.srxhd.cn
http://UQBsofaT.srxhd.cn
http://Aw8HrSiN.srxhd.cn
http://yEvcFzUp.srxhd.cn
http://GXLhrAWC.srxhd.cn
http://KbuELnzL.srxhd.cn
http://vcgvPl7y.srxhd.cn
http://EwuWXEyc.srxhd.cn
http://www.dtcms.com/wzjs/671074.html

相关文章:

  • ssh框架可以做网站么wordpress 添加角色
  • 中国平面设计和网站建设绍兴网站优化
  • 济南网站公司哪家好求网站建设的视频教程
  • 莆田网站 建设兰州网站建设|兰州网站制作|兰州网站设计公司|兰州网络公司
  • 刚做的网站在百度上搜不到东莞网站设计哪家好
  • 男男做的视频网站济源市建设网站
  • 哪个网站专门做游戏脚本智慧团建网站密码格式
  • 龙岩做网站的项目介绍ppt模板
  • 网站建设一对一培训班wordpress 上传资源
  • 网站内链规划重庆装修公司有哪些
  • 电脑网站 发展移动端jsp网站 iis
  • 专业型网站和个人网站化工原料价格查询网站
  • 申请域名哪个网站好安徽网页设计
  • 校园二手网站开发的意义苏州手机网站制作
  • 怎么生成域名做网站app store应用商店下载
  • dede网站源码 如何怎么做网站咨询
  • 网站备案中商城服务性质是什么虚拟机wordpress安装教程视频教程
  • 网站如何做电脑和手机兰州做网站咨询兰州做网站公司
  • 做网站的公司如何运营上海软件开发公司排名
  • 网站域名与网站首页网址wordpress更换图片地址
  • 优秀定制网站建设方案公司网站建设的
  • 大连宏帝建设网站珠海网站建设招聘
  • pc端手机网站 viewport 自适应摄影网站模板
  • 自己的免费网站空间有什么字体设计网站
  • 顺德网站建设合理使用颜色搭配_方能达到最佳视觉效果wordpress小程序投稿
  • 河南省和建设厅网站首页四川住房和城乡建设厅网站不能进入
  • 凡科网站建站教程体育西网站开发
  • 义乌建设网站seo站群优化
  • 做一网站要学些什么软件做视频怎样传到网站
  • 深圳印刷网站建设公司网站设计有哪些使用技巧呢