1. 程式人生 > 實用技巧 >在springboot的基礎上,引入元件的啟動器

在springboot的基礎上,引入元件的啟動器

SpringCloud:在springboot的基礎上構建微服務框架

1、引入元件的啟動器 2、覆蓋預設配置 3、在引導類上新增相應的註解

eureka:註冊中心,服務的註冊與發現

服務端:

1、引入服務端啟動器:eureka-server

2、新增配置

        spring.application.name 服務名
	eureka.client.service-url.defaultZone http://localhost:10086/eureka
	剔除無效連線的間隔時間 eureka.server.eviction-interval-timer-in-ms
	關閉自我保護 eureka.server.enable-self-preservation

3、@EnableEurekaServer 開啟eureka服務端功能

客戶端:

1、引入啟動器:eureka-client

2、新增配置

		spring.application.name
		eureka.client.service-url.defaultZone
		心跳時間 eureka.instance.lease-renewal-interval-in-seconds
		過期時間 eureka.instance.lease-expiration-duration-in-seconds
		是否註冊給eureka容器 eureka.client.register-with-eureka
		是否拉取服務列表 eureka.client.fetch-registry
		拉取服務的間隔時間 eureka.client.registry-fetch-interval-seconds

3、啟用eureka客戶端:@EnableDiscoveryClient

Ribbon:負載均衡元件

eureka、feign以及zuul已整合。

配置負載均衡策略:

<service-provider(服務名)>.ribbon.NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule(負載均衡策略全路徑)

@LoadBalanced 在RestTemplate的@Bean方法上

hystrix:容斷元件

降級:

1、引入hystrix啟動器

2、新增配置,超時時間的配置:

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 6000

3、啟用熔斷元件 @EnableCircuitBreaker

組合註解:@SpringCloudApplication,包含了@SpringBootApplication和@EnableDiscveryClient

區域性熔斷:返回值和引數列表和被熔斷的方法一致

在被熔斷的方法上 @HystrixCommand(fallbackMethod="熔斷方法名")

全域性熔斷:返回值和被熔斷的方法返回值一致,不能有引數列表

在類上 @DefaultProperties(defaultFallbck="全域性熔斷方法名")

在具體的被熔斷方法上 @HystrixCommand

熔斷:

1、close:關閉狀態

所有請求都正常訪問

2、open:開啟狀態

所有請求都無法訪問

觸發:連續失敗的比例大於50%或者失敗次數不少於20

維持5s的休眠時間

3、half open:半開狀態

釋放部分請求通過,如果正常就進入close狀態,如果不正常就進入open狀態

觸發:休眠時間之後

feign:遠端呼叫元件,整合ribbon和hystrix

1、引入feign的啟動器

2、開啟熔斷:feign.hystrix.enable=true

3、開啟feign的功能:@EnableFeignClients

4、實現:定義一個介面,使用註解@FeignClient(value="服務名", fallback=實現類.class),方法上的註解使用的都是springMVC的註解

zuul:閘道器元件,有路由和過濾器功能

1、引入啟動器

2、配置

路由字首:zuul.prefix

四種路由配置方式

1、

		zuul.routes.<路由名>.path=/service-provider/**
		zuul.routes.<路由名>.url=http://localhost:8081

2、

		zuul.routes.<路由名>.path=/service-provider/**
		zuul.routes.<路由名>.serviceId=service-provider

3、

		zuul.routes.<路由名:服務名>=/service-provider/**

4、

預設服務的入口就是以服務名為字首(不配置)

3、開啟zuul閘道器元件 @EnableZuulProxy

4、自定義過濾器

介面:IZuulFilter,預設的抽象實現類:ZuulFilter

filterType:pre、post、route、error

filterOrder:執行順序,返回值越小優先順序越高

shouldFilter:是否執行run方法,true為執行

run:過濾器的具體邏輯

四種執行順序:

正常情況下:

pre-->route-->post

異常:

pre或者route出現異常,直接執行error-->post

post出現異常,error-->響應

error出現異常,error-->post