javascript
SpringCloud(完结)
文章目錄
- 進(jìn)行服務(wù)降級操作
- 1.創(chuàng)建DeptClientServiceFallbackFactory類,實現(xiàn)FallbackFactory
- 2.在DeptClientService接口中的FeignClient注釋中,修改屬性fallbackFactory
- 3.在Feign消費(fèi)者的yml中,配置降級
- 4.此時開啟一系列服務(wù),并搜索不存在的id
- 5.關(guān)閉服務(wù)提供者,依舊可以返回指定的降級信息
- 服務(wù)熔斷和服務(wù)降級的區(qū)別再理解
- DashBoard流監(jiān)控
- 1.寫一個監(jiān)控頁面
- (1)創(chuàng)建springcloud-consumer-hystrix-dashboard模塊
- (2)導(dǎo)包
- (3)在dashborad消費(fèi)者的yml中設(shè)置端口號為9001
- (4)創(chuàng)建啟動類
- 2.保證每一個服務(wù)提供者的POM中已經(jīng)導(dǎo)入這個依賴
- 3.在hystrix服務(wù)提供者的啟動類中創(chuàng)建Servlet(隨機(jī)選擇一個服務(wù)提供者)
- 4.先開啟服務(wù)注冊中心,再開啟服務(wù)提供者8001,再開啟dashboard流監(jiān)控頁面
- (1)訪問監(jiān)控頁面
- (2)寫入http://localhost:8001/actuator/hystrix.stream
- (3)開啟消費(fèi)者80,進(jìn)行查詢操作
- (4)若直接訪問http://localhost:8001/actuator/hystrix.stream,則跳轉(zhuǎn)
- 5.分析監(jiān)控頁面數(shù)據(jù)含義
- 9.路由網(wǎng)關(guān)Zuul
- 什么是Zuul?
- Zuul能干嘛?
- 使用Zuul
- 1.創(chuàng)建springcloud-zuul-9527模塊
- 2.導(dǎo)入依賴
- 3.在yml中進(jìn)行配置
- 4.創(chuàng)建啟動類ZuulApplication_9527
- 5.在host文件中設(shè)置本機(jī)路徑
- 6.啟動服務(wù)注冊中心,再啟動服務(wù)提供者,再啟動Zuul模塊,再啟動消費(fèi)者
- 10.SpringCloud config分布式配置
- 分布式系統(tǒng)面臨的-配置文件的問題
- 什么是SpringCloud config分布式配置中心
- SpringCloud Config分布式配置中心能干嘛?
- Springcloud config 分布式配置中心與github整合
- 服務(wù)端連接Git配置
- 1.在碼云新建遠(yuǎn)程倉庫: [springcloud-config](https://gitee.com/wood_never_drunk/springcloud-config)
- 2.在本機(jī)寫application.yml,并放置克隆的項目目錄下,如上圖
- 3.建springcloud-config-server-3344模塊
- (1)導(dǎo)入依賴
- (2)在yml進(jìn)行配置
- (3)建啟動類
- 4.啟動config服務(wù),并訪問 http://localhost:3344/application-dev.yml
- 客戶端連接服務(wù)端訪問:
- 1.在克隆文件中建config-client.yml文件,并提交到遠(yuǎn)程倉庫
- 2.創(chuàng)建springcloud-config-client-3355模塊
- (1)導(dǎo)依賴
- (2)建application.yml和bootstrap.yml進(jìn)行配置
- (3)建啟動類
- (4)建ConfigClientController類
進(jìn)行服務(wù)降級操作
1.創(chuàng)建DeptClientServiceFallbackFactory類,實現(xiàn)FallbackFactory
@Component public class DeptClientServiceFallbackFactory implements FallbackFactory{@Overridepublic DeptClientService create(Throwable throwable) {return new DeptClientService() {@Overridepublic Dept queryById(Long id) {return new Dept().setDeptno(id).setDname("id=>"+id+"沒有對應(yīng)的信息,客戶端提供了降級的信息,這個服務(wù)現(xiàn)在已經(jīng)被關(guān)閉").setDb_source("沒有數(shù)據(jù)");}@Overridepublic List<Dept> queryAll() {return null;}@Overridepublic boolean addDept(Dept dept) {return false;}};} }2.在DeptClientService接口中的FeignClient注釋中,修改屬性fallbackFactory
@FeignClient(value = "SPRINGCLOUD-PROVIDER-DEPT",fallbackFactory = DeptClientServiceFallbackFactory.class)3.在Feign消費(fèi)者的yml中,配置降級
#開啟降級feign.hystrix feign:hystrix:enabled: true4.此時開啟一系列服務(wù),并搜索不存在的id
5.關(guān)閉服務(wù)提供者,依舊可以返回指定的降級信息
服務(wù)熔斷和服務(wù)降級的區(qū)別再理解
服務(wù)熔斷:用于服務(wù)端,某個服務(wù)超時或者異常,引起熔斷, 類似于保險絲。
服務(wù)降級:用于客戶端,從整體網(wǎng)站請求負(fù)載考慮,當(dāng)某個服務(wù)熔斷或者關(guān)閉之后,服務(wù)不再被調(diào)用
,此時在客戶端,我們可以準(zhǔn)備一個FallbackFactory,返回一個默認(rèn)的值,整體的服務(wù)水平下降了,但好歹能用,比直接掛掉強(qiáng)。
DashBoard流監(jiān)控
1.寫一個監(jiān)控頁面
(1)創(chuàng)建springcloud-consumer-hystrix-dashboard模塊
(2)導(dǎo)包
<!--實體類web--><dependencies><!--Hystrix--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-hystrix</artifactId><version>1.4.6.RELEASE</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-hystrix-dashboard</artifactId><version>1.4.6.RELEASE</version></dependency><!--Ribbon--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-ribbon</artifactId><version>1.4.6.RELEASE</version></dependency><!--Eureka--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId><version>1.4.6.RELEASE</version></dependency><dependency><groupId>com.muzi</groupId><artifactId>springcloud-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--熱部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency></dependencies>(3)在dashborad消費(fèi)者的yml中設(shè)置端口號為9001
server:port: 9001(4)創(chuàng)建啟動類
@SpringBootApplication //開啟監(jiān)控Dashboard流監(jiān)控 @EnableHystrixDashboard public class DeptConsumerDashboard_9001 {public static void main(String[] args){SpringApplication.run(DeptConsumerDashboard_9001.class,args);} }2.保證每一個服務(wù)提供者的POM中已經(jīng)導(dǎo)入這個依賴
<!--actuator完善監(jiān)控信息--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>3.在hystrix服務(wù)提供者的啟動類中創(chuàng)建Servlet(隨機(jī)選擇一個服務(wù)提供者)
//增加一個Servlet@Beanpublic ServletRegistrationBean HystrixMetricsStreamServlet(){ServletRegistrationBean registrationBean = new ServletRegistrationBean(new HystrixMetricsStreamServlet());registrationBean.addUrlMappings("/actuator/hystrix.stream");return registrationBean;}4.先開啟服務(wù)注冊中心,再開啟服務(wù)提供者8001,再開啟dashboard流監(jiān)控頁面
(1)訪問監(jiān)控頁面
(2)寫入http://localhost:8001/actuator/hystrix.stream
(3)開啟消費(fèi)者80,進(jìn)行查詢操作
相應(yīng)地,監(jiān)控頁面會有一定變化
(4)若直接訪問http://localhost:8001/actuator/hystrix.stream,則跳轉(zhuǎn)
5.分析監(jiān)控頁面數(shù)據(jù)含義
整圖說明:
9.路由網(wǎng)關(guān)Zuul
什么是Zuul?
? Zuul包含了對請求的路由和過濾兩個最主要的功能:
? 其中路由功能負(fù)責(zé)將外部請求轉(zhuǎn)發(fā)到具體的微服務(wù)實例上,是實現(xiàn)外部訪問統(tǒng)一入口的基礎(chǔ),而過濾器功能則負(fù)責(zé)對請求的處理進(jìn)行干預(yù),是實現(xiàn)請求校驗,服務(wù)聚合等功能的基礎(chǔ)。Zuul和Eureka進(jìn)行整合,將Zuul自身注冊為Eureka服務(wù)治理下的應(yīng)用,同時從Eureka中獲得其他微服務(wù)的信息,也即以后的訪問微服務(wù)都是通過Zuul跳轉(zhuǎn)后獲得。
? zhuy :Zuul服務(wù)最終還是會注冊進(jìn)Eureka
? 提供:代理+路由+過濾 三大功能。
Zuul能干嘛?
○路由
○過濾
使用Zuul
1.創(chuàng)建springcloud-zuul-9527模塊
模塊結(jié)構(gòu):
2.導(dǎo)入依賴
<!--zuul--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zuul</artifactId><version>1.4.6.RELEASE</version></dependency>3.在yml中進(jìn)行配置
server:port: 9527 spring:application:name: springcloud-zuul eureka:client:service-url:defaultZone: http://eureka7001.com:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/instance:instance-id: zuul9527.comprefer-ip-address: trueinfo:app.name: muzi-springcloudcompany.name: blog.muzistudy.com zuul:routes:#服務(wù)提供者的名字mydept.serviceId: springcloud-provider-dept#通過mydept來訪問,隱藏項目細(xì)節(jié)mydept.path: /mydept/**#不允許通過springcloud-provider-dept來訪問#ignored-services: springcloud-provider-dept#隱藏全部的真實項目名,(微服務(wù)不止一個)ignored-services: "*"#設(shè)置統(tǒng)一的前綴prefix: /muzi4.創(chuàng)建啟動類ZuulApplication_9527
@SpringBootApplication //開啟Zuul @EnableZuulProxy public class ZuulApplication_9527 {public static void main(String[] args){SpringApplication.run(ZuulApplication_9527.class,args);} }5.在host文件中設(shè)置本機(jī)路徑
6.啟動服務(wù)注冊中心,再啟動服務(wù)提供者,再啟動Zuul模塊,再啟動消費(fèi)者
訪問路徑: http://www.muzistudy.com:9527/muzi/mydept/dept/get/6
10.SpringCloud config分布式配置
分布式系統(tǒng)面臨的-配置文件的問題
微服務(wù)意味著要將單體應(yīng)用中的業(yè)務(wù)分成一個個子服務(wù),每個服務(wù)的粒度相對較小,因為系統(tǒng)中會出現(xiàn)大量的服務(wù),由于每個服務(wù)都需要必要的配置信息才能運(yùn)行,所以一套集中式的,動態(tài)的配置管理設(shè)施是必不可少的。
SpringCloud提供了ConfigServer來解決這個問題,我們每一個微服務(wù)自己帶著一個application.yml,那上百的配置文件要修改,豈不是要發(fā)瘋。
什么是SpringCloud config分布式配置中心
? SpringCloud Config為微服務(wù)架構(gòu)中的微服務(wù)提供集中化的外部配置支持,配置服務(wù)器為各個不同微服務(wù)應(yīng)用的所有環(huán)節(jié)提供了一個中心化外部配置。
? SpringCloud Config分為服務(wù)端和客戶端兩部分。
? 服務(wù)端也稱為分布式配置中心,它是一個獨立的微服務(wù)應(yīng)用,用來連接配置服務(wù)器并為客戶端提供獲取配置信息,加密,解密信息等訪問接口。
? 客戶端則是通過指定的配置中心來管理應(yīng)用資源,以及與業(yè)務(wù)相關(guān)的配置內(nèi)容,并在啟動的時候從配置中心獲得和加載配置信息。配置服務(wù)器more采用git來存儲配置信息,這樣就有助于對環(huán)境配置進(jìn)行版本管理。并且可以通過git客戶端工具來方斌的管理和訪問配置內(nèi)容。
SpringCloud Config分布式配置中心能干嘛?
○集中管理配置文件
○不同環(huán)境,不同配置,動態(tài)化的配置更新,分環(huán)境部署,比如/dev /test/ /prod /beta /release
○運(yùn)行期間動態(tài)調(diào)整配置,不再需要在每個服務(wù)部署的機(jī)器上編寫配置文件,服務(wù)會向配置中心統(tǒng)一拉取配置自己的信息。
○當(dāng)配置發(fā)生變動時,服務(wù)不需要重啟,即可感知到配置的變化,并應(yīng)用新的配置。
○將配置信息以REST接口的形式暴露
Springcloud config 分布式配置中心與github整合
由于SpringCloud config默認(rèn)使用Git來存儲配置文件(也有其他方式,比如支持SVN和本地文件),但是最推薦的還是,而且使用的是http/https訪問的形式。
服務(wù)端連接Git配置
1.在碼云新建遠(yuǎn)程倉庫: springcloud-config
復(fù)制項目git連接
通過git clone命令克隆文件到本機(jī)
2.在本機(jī)寫application.yml,并放置克隆的項目目錄下,如上圖
spring:profiles:active: dev--- spring:profiles: devapplication:name: springcloud-config-dev--- spring:profiles: testapplication:name: springcloud-config-test通過 git add, git commit -m “first commit”, git push origin master 三個命令提交到遠(yuǎn)程倉庫
3.建springcloud-config-server-3344模塊
(1)導(dǎo)入依賴
<dependencies><!--config--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId><version>2.1.1.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>(2)在yml進(jìn)行配置
server:port: 3344 spring:application:name: springcloud-config-server#連接遠(yuǎn)程倉庫cloud:config:server:git:#遠(yuǎn)程倉庫的https地址uri: https://gitee.com/wood_never_drunk/springcloud-config.git(3)建啟動類
@SpringBootApplication @EnableConfigServer public class Config_Server_3344 {public static void main(String[] args){SpringApplication.run(Config_Server_3344.class,args);} }4.啟動config服務(wù),并訪問 http://localhost:3344/application-dev.yml
能夠遠(yuǎn)程訪問倉庫配置
客戶端連接服務(wù)端訪問:
1.在克隆文件中建config-client.yml文件,并提交到遠(yuǎn)程倉庫
spring:profiles:active: dev ---- server:port: 8201#spring的配置 spring:profiles: devapplication:name: springcloud-provider-dept#Eureka配置,服務(wù)注冊到哪里 eureka:client:service-url:defaultZone: http://eureka7001.com:7001/eureka/ ----- server:port: 8202 #spring的配置 spring:profiles: testapplication:name: springcloud-provider-dept#Eureka配置,服務(wù)注冊到哪里 eureka:client:service-url:defaultZone: http://eureka7001.com:7001/eureka/2.創(chuàng)建springcloud-config-client-3355模塊
模塊結(jié)構(gòu)
(1)導(dǎo)依賴
<dependencies><!--config--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId><version>2.1.1.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>(2)建application.yml和bootstrap.yml進(jìn)行配置
#bootstrap.yml系統(tǒng)級別的配置spring: spring:cloud:config:#需要從git上讀取的資源名稱,不要后綴name: config-clientprofile: devlabel: master#連接服務(wù)端uri: http://localhost:3344 #application.yml用戶級別的配置 spring:application:name: springcloud-config-client-3355(3)建啟動類
@SpringBootApplication public class Config_Client_3355 {public static void main(String[] args){SpringApplication.run(Config_Client_3355.class,args);} }(4)建ConfigClientController類
@RestController public class ConfigClientController {@Value("${spring.application.name}")private String applicationName;@Value("${eureka.client.service-url.defaultZone}")private String eurekaServer;@Value("${server.port}")private String port;@RequestMapping("/config")public String getConfig(){return "applicationName:"+applicationName+"eurekaServer:"+eurekaServer+"port:"+port;} }3.啟動服務(wù),server和client
總結(jié)
以上是生活随笔為你收集整理的SpringCloud(完结)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32实现低功耗待机(电流低至5.7
- 下一篇: SSM框架终极篇——Spring、Spr