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