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

公司网站海报怎么做怎样制作网站

公司网站海报怎么做,怎样制作网站,做外贸怎样利用免费b2b网站,政府网站怎么管理系统什么是网关? 网关是一个服务,是访问内部系统的唯一入口,提供内部服务的路由中转,额外还可以在此基础上提供如身份验证、监控、负载均衡、限流、降级与应用检测等功能。 Spring Cloud Gateway 与 Zuul 对比 zuul1.x与zuul2.x Zu…

什么是网关?

在这里插入图片描述

网关是一个服务,是访问内部系统的唯一入口,提供内部服务的路由中转,额外还可以在此基础上提供如身份验证、监控、负载均衡、限流、降级与应用检测等功能。

Spring Cloud Gateway 与 Zuul 对比

zuul1.x与zuul2.x

Zuul 1.x 基于同步 IO

zuul2.x

基于异步io

zuul1.x 对比 zuul2.x 性能提升

在这里插入图片描述

zuul 与Gateway对比

SpringCloud Gateway 使用

断言 predicates

多个断言可以配合使用

path断言

        predicates:- Path=/mg/**

Query断言

参数值可以写正则,也可以只写参数名

        predicates:- Query=foo,ba.

Method断言

        predicates:- Method=get

Host断言

  predicates:- Host=mashibing.com

Cookie断言

        predicates:- Cookie=name,yiming

基本路由

依赖

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

配置文件

spring:cloud:gateway:routes:- id: xxoorouteuri: http://localhost:8080  filters:- StripPrefix=2server:port: 80

整合Eureka

依赖

<!-- eureka-client -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId><version>4.0.0</version></dependency>

配置

spring:cloud:gateway:discovery:locator:// 开启从eureka 拉取服务列表  并自动映射enabled: trueapplication:name: myGateWay
eureka:client:service-url:defaultZone: http://euk1.com:7002/eureka/server:port: 80

负载均衡

spring:cloud:gateway:discovery:locator:enabled: trueroutes:- id: mdbpredicates:- Path=/mangodb/**uri: lb://MDBfilters:- StripPrefix=1application:name: myGateWayeureka:client:service-url:defaultZone: http://euk1.com:7002/eureka/server:port: 80

自定义负载均衡

配置
MDB:ribbon:NFLoadBalancerRuleClassName: com.mashibing.admin.MyRule
package com.mashibing.admin;import java.util.List;import com.netflix.client.config.IClientConfig;
import com.netflix.loadbalancer.AbstractLoadBalancerRule;
import com.netflix.loadbalancer.Server;public class MyRule extends AbstractLoadBalancerRule{@Overridepublic Server choose(Object key) {// TODO Auto-generated method stubList<Server> list = this.getLoadBalancer().getReachableServers();System.out.println(list);// 各种逻辑~~~~System.out.println("xxoo");return list.get(0);}@Overridepublic void initWithNiwsConfig(IClientConfig clientConfig) {// TODO Auto-generated method stub}}

自定义路由

@Beanpublic RouteLocator routeLocator (RouteLocatorBuilder locatorBuilder) {return locatorBuilder.routes().route(p -> p.path("/xxoo").filters(f -> f.stripPrefix(1)).uri("http://mashibing.com")).route(p ->p.path("/go").filters(f -> f.stripPrefix(1)).uri("lb://MDB")).build();}

自定义过滤器

package com.mashibing.admin;import java.util.List;import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import org.springframework.web.server.ServerWebExchange;import reactor.core.publisher.Mono;@Component
public class MyFilter implements Ordered,GlobalFilter {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {ServerHttpRequest request = exchange.getRequest();MultiValueMap<String, String> queryParams = request.getQueryParams();List<String> list = queryParams.get("id");if (null == list || list.size() ==0) {// 非法请求System.out.println("不要~");//			exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
//			
//			return exchange.getResponse().setComplete();DataBuffer dataBuffer = exchange.getResponse().bufferFactory().wrap("xiake~!!".getBytes());exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);return exchange.getResponse().writeWith(Mono.just(dataBuffer));}return chain.filter(exchange);}@Overridepublic int getOrder() {// TODO Auto-generated method stubreturn 0;}}

SpringCloud Gateway

在这里插入图片描述

路由

使用webflux

	@Beanpublic RouterFunction<ServerResponse> function(){RouterFunction<ServerResponse> route = RouterFunctions.route(RequestPredicates.path("/002"),req -> ServerResponse.ok().body(BodyInserters.fromValue("xxx")));return route;}

缓存

权重与灰度发布

随机算法

      routes:- id: w1predicates:- Path=/w/**- Weight=service,95uri: lb://MDBfilters:- StripPrefix=1- id: w2predicates:- Path=/w/**- Weight=service,5uri: lb://MDB2filters:- StripPrefix=1        

过滤器

SpringCloud Gateway用于拦截用户请求和链式处理,可以实现面向切面编程,在切面中可以实现与应用无关的需求,比如安全、访问超时等

有序

order值越小 优先级越高

	@Overridepublic int getOrder() {// TODO Auto-generated method stubreturn 110;}

限流

内置令牌桶 + Redis

pom

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis-reactive</artifactId></dependency>
      routes:- id: w1predicates:- Path=/w/**uri: lb://MDB2filters:- StripPrefix=1- name: RequestRateLimiterargs:key-resolver: '#{@userKeyResolver}'redis-rate-limiter.replenishRate: 1redis-rate-limiter.burstCapacity: 3
public class RateLimitConfig {KeyResolver userKeyResolver() {return exchange -> Mono.just(exchange.getRequest().getQueryParams().getFirst("user"));}
}

整合GoogleGuava

DefaultRateLimiter

package com.mashibing.admin;import java.util.HashMap;
import java.util.Objects;import javax.validation.constraints.DecimalMin;import org.springframework.cloud.gateway.filter.ratelimit.AbstractRateLimiter;
import org.springframework.cloud.gateway.support.ConfigurationService;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;import com.google.common.util.concurrent.RateLimiter;import reactor.core.publisher.Mono;@Component
@Primary
public class DefaultRateLimiter extends AbstractRateLimiter<DefaultRateLimiter.Config> {public DefaultRateLimiter() {super(Config.class, "default-rate-limit", new ConfigurationService());}/*** 每秒一个请求,每秒发一个令牌*/private final RateLimiter limiter = RateLimiter.create(1);@Overridepublic Mono<Response> isAllowed(String routeId, String id) {Config config = getConfig().get(routeId);limiter.setRate(Objects.isNull(config.getPermitsPerSecond()) ? 1 : config.getPermitsPerSecond());boolean isAllow = limiter.tryAcquire();return Mono.just(new Response(isAllow, new HashMap<>()));}@Validatedpublic static class Config {@DecimalMin("0.1")private Double permitsPerSecond;public Double getPermitsPerSecond() {return permitsPerSecond;}public Config setPermitsPerSecond(Double permitsPerSecond) {this.permitsPerSecond = permitsPerSecond;return this;}}}

配置

      routes:- id: w1predicates:- Path=/w/**uri: lb://MDB2filters:- StripPrefix=1- name: RequestRateLimiterargs:rate-limiter: "#{@defaultRateLimiter}"key-resolver: "#{@userKeyResolver}"default-rate-limit.permitsPerSecond: 0.5

权限

写在filter中

hystrix

项目里讲

生命周期

在这里插入图片描述

Spring Cloud Gateway同zuul类似,有“pre”和“post”两种方式的filter。客户端的请求先经过“pre”类型的filter,然后将请求转发到具体的业务服务,比如上图中的user-service,收到业务服务的响应之后,再经过“post”类型的filter处理,最后返回响应到客户端。

http://www.hkea.cn/news/410537/

相关文章:

  • 瑞安网站建设公司关键词排名网络推广
  • 南京学做网站友情链接检查工具
  • 参考文献网站开发百度重庆营销中心
  • 如何做微信ppt模板下载网站企业网页设计公司
  • 做b2b网站百度点击快速排名
  • 网站怎么做移动图片不显示不出来吗芭嘞seo
  • 旅游网站建设服务器ip域名解析
  • 企业网站建设三个原则百度指数资讯指数是指什么
  • 房地产集团网站建设方案软文文案案例
  • 阜蒙县建设学校网站是什么北京seo编辑
  • 珠海建设局网站十大经典事件营销案例分析
  • 创建网站开发公司互联网推广引流是做什么的
  • 万盛集团网站建设seo网站推广全程实例
  • 做教育的网站需要资质吗网站怎么开发
  • 微网站怎么做滚动中国万网域名注册官网
  • 个人如何免费建网站seo在线优化工具 si
  • 双线主机可以做彩票网站吗网络推广合作协议
  • 做外贸的b2b网站域名批量查询系统
  • 建设网站需要哪些职位网站建设策划书
  • 苏州网站建设哪里好网站点击排名优化
  • 网站建设收费标准策划百度推广关键词越多越好吗
  • 网站怎么做更新吗如何建立网页
  • 国外建设工程招聘信息网站tool站长工具
  • 专业做相册书的网站电商网站建设制作
  • 银川网站开发公司电话东莞网
  • 环境保护局网站管理制度建设百度指数的主要功能有
  • 安装wordpress提示500错误关键词优化的策略有哪些
  • 企业网站建设公司排名深圳高端seo公司助力企业
  • 做网站套餐网站seo
  • 网站上的代码网页怎么做的下载百度软件