javascript
Spring Cloud 第二天课堂笔记
1. Feign應用
目標:Feign的作用;使用Feign實現consumer-demo代碼中調用服務
分析:
小結:
Feign主要作用:自動根據參數拼接http請求地址。
- 啟動器依賴;
- Feign客戶端:
2. Feign負載均衡及熔斷
目標:可以配置Feign內置ribbon配置項和Hystrix熔斷的Fallback配置
分析:
- 負載均衡
- 服務熔斷
- 請求壓縮
- 日志級別
都可以通過配置項在Feign中開啟使用。
小結:
在服務消費工程consumer-demo中的配置文件:
ribbon:ConnectTimeout: 1000 # 連接超時時長ReadTimeout: 2000 # 數據通信超時時長MaxAutoRetries: 0 # 當前服務器的重試次數MaxAutoRetriesNextServer: 0 # 重試多少次服務OkToRetryOnAllOperations: false # 是否對所有的請求方式都重試 feign:hystrix:enabled: true # 開啟Feign的熔斷功能compression:request:enabled: true # 開啟請求壓縮mime-types: text/html,application/xml,application/json # 設置壓縮的數據類型min-request-size: 2048 # 設置觸發壓縮的大小下限response:enabled: true logging:level:com.itheima: debug3. Spring Cloud Gateway網關簡介
目標:Spring Cloud Gateway網關的作用
小結:
Spring Cloud Gateway的核心就是一系列的過濾器,可以將客戶端的請求轉發到不同的微服務。主要作用:過濾和路由。
4. Spring Cloud Gateway入門
目標:搭建網關服務工程測試網關服務作用
分析:
需求:通過網關系統heima-gateway將包含有 /user 的請求 路由到 http://127.0.0.1:9091/user/用戶id
實現步驟:
http://127.0.0.1:10010/user/8 --> http://127.0.0.1:9091/user/8
小結:
- 啟動器依賴
- 配置文件
5. 面向服務的路由
目標:使用在eureka注冊的服務作為路由地址
分析:
如果將路由服務地址寫死明顯是不合理的;在Spring Cloud Gateway中可以通過配置動態路由解決。
小結:
面向服務的路由;只需要在配置文件中指定路由路徑類似: lb://user-service
lb 之后編寫的服務名必須要在eureka中注冊才能使用
6. 路由前綴處理
目標:可以對請求到網關服務的地址添加或去除前綴
分析:
提供服務的地址:http://127.0.0.1:9091/user/8
- 添加前綴:對請求地址添加前綴路徑之后再作為代理的服務地址;
http://127.0.0.1:10010/8 --> http://127.0.0.1:9091/user/8 添加前綴路徑/user
- 去除前綴:將請求地址中路徑去除一些前綴路徑之后再作為代理的服務地址;
http://127.0.0.1:10010/api/user/8 --> http://127.0.0.1:9091/user/8 去除前綴路徑/api
小結:
客戶端的請求地址與微服務的服務地址如果不一致的時候,可以通過配置路徑過濾器實現路徑前綴的添加和去除。
7. 過濾器簡介
目標:Gateway默認過濾器的用法和過濾器類型
小結:
- 用法:在配置文件中指定要使用的過濾器名稱;
- 類型:局部、全局;
- 使用場景:請求鑒權、異常處理、記錄調用時長等。
8. 自定義局部過濾器
目標:按照默認過濾器編寫并配置一個自定義局部過濾器,該過濾器可以通過配置文件中的參數名稱獲取請求的參數值
分析:
需求:在過濾器(MyParamGatewayFilterFactory)中將http://localhost:10010/api/user/8?name=itcast中的參數name的值獲取到并輸出到控制臺;并且參數名是可變的,也就是不一定每次都是name;需要可以通過配置過濾器的時候做到配置參數名。
實現步驟:
小結:
-
配置;與其他過濾器的配置一致。
-
實現過濾器
9. 自定義全局過濾器
目標:定義一個全局過濾器檢查請求中是否攜帶有token參數
分析:
需求:編寫全局過濾器,在過濾器中檢查請求地址是否攜帶token參數。如果token參數的值存在則放行;如果token的參數值為空或者不存在則設置返回的狀態碼為:未授權也不再執行下去。
實現步驟:
小結:
@Component public class MyGlobalFilter implements GlobalFilter, Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {System.out.println("--------------全局過濾器MyGlobalFilter------------------");String token = exchange.getRequest().getQueryParams().getFirst("token");if(StringUtils.isBlank(token)){//設置響應狀態碼為未授權exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);return exchange.getResponse().setComplete();}return chain.filter(exchange);}@Overridepublic int getOrder() {//值越小越先執行return 1;} }10. Gateway其它配置說明
目標:Gateway網關的負載均衡和熔斷參數配置
小結:
網關服務配置文件:
server:port: 10010 spring:application:name: api-gatewaycloud:gateway:routes:# 路由id,可以任意- id: user-service-route# 代理的服務地址#uri: http://127.0.0.1:9091# lb表示從eureka中獲取具體服務uri: lb://user-service# 路由斷言: 可以匹配映射路徑predicates:#- Path=/user/**#- Path=/**- Path=/api/user/**filters:# 添加請求路徑的前綴#- PrefixPath=/user#1表示過濾1個路徑,2表示兩個路徑,以此類推- StripPrefix=1- MyParam=name# 默認過濾器,對所有路由都生效default-filters:- AddResponseHeader=X-Response-Foo, Bar- AddResponseHeader=abc-myname,heimaglobalcors:corsConfigurations:'[/**]':#allowedOrigins: * # 這種寫法或者下面的都可以,*表示全部allowedOrigins:- "http://docs.spring.io"allowedMethods:- GET eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eurekainstance:prefer-ip-address: true hystrix:command:default:execution:isolation:thread:timeoutInMilliseconds: 6000 ribbon:ConnectTimeout: 1000ReadTimeout: 2000MaxAutoRetries: 0MaxAutoRetriesNextServer: 0Gateway網關一般直接給終端請求使用;Feign一般用在微服務之間調用。
11. Spring Cloud Config分布式配置中心簡介
目標:分布式配置中心的作用
小結:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-cRXbpOdx-1638370181161)(assets/1560919656472.png)]
spring cloud config作用:可以通過修改在git倉庫中的配置文件實現其它所有微服務的配置文件的修改。
12. 搭建配置中心微服務
目標:創建碼云的遠程公開git倉庫,搭建配置中心微服務config-server
分析:
- 創建git倉庫:在碼云上創建倉庫
- 搭建配置中心config-server:使用spring boot方式搭建和配置
小結:
- 配置中心依賴
- 配置中心的配置文件
在gitee中修改了配置文件會在配置中心服務及時更新。
13. 獲取配置中心配置
目標:改造用戶微服務user-service,配置文件信息不再由微服務項目提供,而是從配置中心獲取
分析:
需求:將服務提供工程user-service的application.yml配置文件刪除,修改為從配置中心config-server中獲取。
實現步驟:
小結:
將原來的application.yml刪除;然后添加bootstrap.yml配置文件,該文件也是spring boot的默認配置文件,其內容經常配置一些項目中固定的配置項。如果是項目經常變動的應該配置到application.yml中,現在使用了配置中心則應該配置到git倉庫中對于的配置文件。
- 依賴
- 配置文件bootstrap.yml
14. Spring Cloud Bus簡介
目標:了解Spring Cloud Bus作用
小結:
Spring Cloud Bus作用:將git倉庫的配置文件更新,在不重啟系統的情況下實現及時同步到各個微服務。
15. Spring Cloud Bus應用
目標:啟動RabbitMQ通過修改碼云中的配置文件后發送Post請求實現及時更新用戶微服務中的配置項
分析:
需求:在碼云的git倉庫中修改user-dev.yml配置文件,實現不重啟user-service的情況下可以及時更新配置文件。
實現步驟:
小結:
- config-server的依賴添加內容
- config-server的配置文件添加內容
- user-service的依賴添加內容
- user-service的配置文件添加內容
- UserController的修改
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-okXNXJ6L-1638370181164)(assets/1561003475491.png)]
16. Spring Cloud 體系技術綜合應用說明
目標:了解Spring Cloud中的Eureka、GateWay、Config、Bus、Feign等技術的綜合應用
小結:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-AimFV13Z-1638370181167)(assets/1561004983897(1)].png)
r-rabbit
org.springframework.boot
spring-boot-starter-actuator
- UserController的修改
[外鏈圖片轉存中…(img-okXNXJ6L-1638370181164)]
16. Spring Cloud 體系技術綜合應用說明
目標:了解Spring Cloud中的Eureka、GateWay、Config、Bus、Feign等技術的綜合應用
小結:
[外鏈圖片轉存中…(img-AimFV13Z-1638370181167)].png)
總結
以上是生活随笔為你收集整理的Spring Cloud 第二天课堂笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Cloud 第一天课堂笔记
- 下一篇: ElasticSearch第一天