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