中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站建設(shè)要代碼有什么好處中國(guó)疫情最新數(shù)據(jù)

網(wǎng)站建設(shè)要代碼有什么好處,中國(guó)疫情最新數(shù)據(jù),建造網(wǎng)站過(guò)程,武漢光谷企業(yè)網(wǎng)站建設(shè)什么是網(wǎng)關(guān)? 網(wǎng)關(guān)是一個(gè)服務(wù),是訪問(wèn)內(nèi)部系統(tǒng)的唯一入口,提供內(nèi)部服務(wù)的路由中轉(zhuǎn),額外還可以在此基礎(chǔ)上提供如身份驗(yàn)證、監(jiān)控、負(fù)載均衡、限流、降級(jí)與應(yīng)用檢測(cè)等功能。 Spring Cloud Gateway 與 Zuul 對(duì)比 zuul1.x與zuul2.x Zu…

什么是網(wǎng)關(guān)?

在這里插入圖片描述

網(wǎng)關(guān)是一個(gè)服務(wù),是訪問(wèn)內(nèi)部系統(tǒng)的唯一入口,提供內(nèi)部服務(wù)的路由中轉(zhuǎn),額外還可以在此基礎(chǔ)上提供如身份驗(yàn)證、監(jiān)控、負(fù)載均衡、限流、降級(jí)與應(yīng)用檢測(cè)等功能。

Spring Cloud Gateway 與 Zuul 對(duì)比

zuul1.x與zuul2.x

Zuul 1.x 基于同步 IO

zuul2.x

基于異步io

zuul1.x 對(duì)比 zuul2.x 性能提升

在這里插入圖片描述

zuul 與Gateway對(duì)比

SpringCloud Gateway 使用

斷言 predicates

多個(gè)斷言可以配合使用

path斷言

        predicates:- Path=/mg/**

Query斷言

參數(shù)值可以寫正則,也可以只寫參數(shù)名

        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:// 開(kāi)啟從eureka 拉取服務(wù)列表  并自動(dòng)映射enabled: trueapplication:name: myGateWay
eureka:client:service-url:defaultZone: http://euk1.com:7002/eureka/server:port: 80

負(fù)載均衡

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

自定義負(fù)載均衡

配置
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();}

自定義過(guò)濾器

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) {// 非法請(qǐng)求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;}

緩存

權(quán)重與灰度發(fā)布

隨機(jī)算法

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

過(guò)濾器

SpringCloud Gateway用于攔截用戶請(qǐng)求和鏈?zhǔn)教幚?#xff0c;可以實(shí)現(xiàn)面向切面編程,在切面中可以實(shí)現(xiàn)與應(yīng)用無(wú)關(guān)的需求,比如安全、訪問(wèn)超時(shí)等

有序

order值越小 優(yōu)先級(jí)越高

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

限流

內(nèi)置令牌桶 + 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());}/*** 每秒一個(gè)請(qǐng)求,每秒發(fā)一個(gè)令牌*/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

權(quán)限

寫在filter中

hystrix

項(xiàng)目里講

生命周期

在這里插入圖片描述

Spring Cloud Gateway同zuul類似,有“pre”和“post”兩種方式的filter??蛻舳说恼?qǐng)求先經(jīng)過(guò)“pre”類型的filter,然后將請(qǐng)求轉(zhuǎn)發(fā)到具體的業(yè)務(wù)服務(wù),比如上圖中的user-service,收到業(yè)務(wù)服務(wù)的響應(yīng)之后,再經(jīng)過(guò)“post”類型的filter處理,最后返回響應(yīng)到客戶端。

http://www.risenshineclean.com/news/60139.html

相關(guān)文章:

  • 做網(wǎng)站怎么自定義背景圖片管理系統(tǒng)
  • 做圖書(shū)網(wǎng)站的代碼熊貓seo實(shí)戰(zhàn)培訓(xùn)
  • 重慶江津網(wǎng)站建設(shè)外包seo服務(wù)收費(fèi)標(biāo)準(zhǔn)
  • 域名及網(wǎng)站建設(shè)實(shí)驗(yàn)報(bào)告長(zhǎng)尾關(guān)鍵詞快速排名軟件
  • 網(wǎng)站建設(shè)客戶需求表 文庫(kù)北京網(wǎng)站推廣營(yíng)銷服務(wù)電話
  • 做網(wǎng)站什么都不懂 怎么做電工培訓(xùn)機(jī)構(gòu)
  • 短鏈接生成算法淄博seo網(wǎng)絡(luò)公司
  • 濟(jì)南旅游網(wǎng)站建設(shè)現(xiàn)狀sem和seo哪個(gè)工作好
  • 連云港網(wǎng)站 建設(shè)百度一下就知道
  • 手機(jī)網(wǎng)站開(kāi)發(fā)者工具淄博seo網(wǎng)站推廣
  • 飼料公司網(wǎng)站建設(shè)方案如何制作一個(gè)宣傳網(wǎng)頁(yè)
  • 溫州外貿(mào)網(wǎng)站設(shè)計(jì)如何進(jìn)行網(wǎng)站宣傳推廣
  • 為什么說(shuō)做網(wǎng)站賺錢搜索排名影響因素
  • 蘇州網(wǎng)站建設(shè)科技有限公司html網(wǎng)頁(yè)制作
  • 上海做設(shè)計(jì)公司網(wǎng)站疫情最新政策最新消息
  • vs 2008網(wǎng)站做安裝包太原seo公司
  • 日本做受視頻網(wǎng)站互聯(lián)網(wǎng)廣告代理商
  • 校園網(wǎng)站如何建立網(wǎng)站關(guān)鍵詞排名優(yōu)化方法
  • 鄭州東區(qū)做網(wǎng)站的公司蘋果自研搜索引擎或?yàn)樘娲雀?/a>
  • 行政部建設(shè)公司網(wǎng)站值得收藏的五個(gè)搜索引擎
  • 網(wǎng)站維護(hù) 收錄湖南長(zhǎng)沙最新疫情
  • 自己做網(wǎng)站系統(tǒng)首選平臺(tái)域名解析ip地址
  • 模板網(wǎng)站建設(shè)優(yōu)惠青島seo
  • 福建省建筑信息平臺(tái)上海怎么做seo推廣
  • 網(wǎng)站怎么做二級(jí)頁(yè)面寧波seo托管公司
  • 抽獎(jiǎng)的網(wǎng)站怎么做今日熱搜榜前十名
  • 網(wǎng)站建設(shè)與網(wǎng)頁(yè)制作教程流程優(yōu)化四個(gè)方法
  • 個(gè)人網(wǎng)站做重定向圖片網(wǎng)站怎么添加外鏈
  • 蕪湖市網(wǎng)站建設(shè)站長(zhǎng)工具外鏈查詢
  • 永久免費(fèi)網(wǎng)站空間北京突發(fā)重大消息