1. SpringCloud Alibaba-Nacos[作為注冊中心]
1. 下載下傳 nacos-serve
Nacos 文檔位址: https://nacos.io/zh-cn/docs/quick-start.html
2. 啟動 nacos-server
- 輕按兩下 bin 中的 startup.cmd 檔案
- 通路 http://localhost:8848/nacos/
- 使用預設的 nacos/nacos 進行登入
3. 将微服務注冊到 nacos 中
1. 首先,修改 pom.xml 檔案,引入 Nacos
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2. 在應用的 /src/main/resources/application.properties 配置文 件中配置 Nacos Server 地
3.使用@EnableDiscoveryClient 開啟服務注冊發現功能
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
4.啟動應用,觀察 nacos 服務清單是否已經注冊上服務
注意:每一個應用都應該有名字,這樣才能注冊上去。修改 application.properties 檔案
spring.application.name=service-provider
server.port=8000
5.注冊更多的服務上去,測試使用 feign 遠端調
Nacos 使用三步
1、導包 nacos-discovery
2、寫配置,指定 nacos 位址,指定應用的名字
3、開啟服務注冊發現功能@EnableDiscoveryClient
Feign 使用三步
1、導包 openfeign
2、開啟@EnableFeignClients 功能
3、編寫接口,進行遠端調用
6.更多配置
https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/na cos-example/nacos-discovery-example/readme-zh.md#more
2.SpringCloud Alibaba-Nacos[作為配置中心]
1.pom.xml 引入 Nacos Config Sta
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.在應用的 /src/main/resources/bootstrap.properties 配置檔案中配置 Nacos Config 中繼資料
## 主要配置應用名和配置中心位址
spring.application.name=nacos-config-example
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
3.在 nacos 中添加配置
在 nacos 中建立一個 應用名.properties 配置檔案并編寫配置
Nacos Config 資料結構
Nacos Config 主要通過 dataId 和 group 來唯一确定一條配置。
Nacos Client 從 Nacos Server 端擷取資料時,調用的是此接口 ConfigService.getConfig(String dataId, String group, long timeoutMs)
Spring Cloud 應用擷取資料
dataID:
在 Nacos Config Starter 中,dataId 的拼接格式如下
1、${prefix} - ${spring.profiles.active} . ${file-extension} prefix 預設為 spring.application.name的值,也可以通過配置項spring.cloud.nacos.config.prefix 來配置。
2、spring.profiles.active 即為目前環境對應的 profile
注意,當 activeprofile 為空時,對應的連接配接符 - 也将不存在,dataId 的拼接格式變成 p r e f i x . {prefix}. prefix.{file-extension}
file-extension 為配置内容的資料格式,可以通過配置項
spring.cloud.nacos.config.file-extension 來配置。 目前隻支援 properties 類型。
Group:
Group 預設為 DEFAULT_GROUP,可以通過 spring.cloud.nacos.config.group 配
4.在應用中使用@Value 和@RefreshScop
完成上述兩步後,應用會從 Nacos Config 中擷取相應的配置,并添加在 Spring Environment的 PropertySources 中 。 這 裡 我們 使 用 @Value 注 解 來 将 對 應 的 配 置 注 入 到 SampleController 的 userName 和 age 字段,并添加 @RefreshScope
@RefreshScope
class SampleController {
@Value("${user.name}")
String userName;
@Value("${user.age}")
int age;
}
3.SpringCloud Alibaba-Sentine
1.熔斷降級限流
什麼是熔斷
A 服務調用 B 服務的某個功能,由于網絡不穩定問題,或者 B 服務卡機,導緻功能時間超長。如果這樣子的次數太多。我們就可以直接将 B 斷路了(A 不再請求 B 接口),凡是 調用 B 的直接傳回降級資料,不必等待 B的超長執行。 這樣 B 的故障問題,就不會級聯影 響到 A。
什麼是降級
整個網站處于流量高峰期,伺服器壓力劇增,根據目前業務情況及流量,對一些服務和頁面進行有政策的降級[停止服務,所有的調用直接傳回降級資料]。以此緩解伺服器資源的 的壓力,以保證核心業務的正常運作,同時也保持了客戶和大部分客戶的得到正确的相應。
異同:
相同點:
1、為了保證叢集大部分服務的可用性和可靠性,防止崩潰,犧牲小我
2、使用者最終都是體驗到某個功能不可用
不同點:
1、熔斷是被調用方故障,觸發的系統主動規則
2、降級是基于全局考慮,停止一些正常服務,釋放資源
什麼是限流
對打入服務的請求流量進行控制,使服務能夠承擔不超過自己能力的流量壓力
2.Sentinel 簡介
官方文檔:https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D
項目位址:https://github.com/alibaba/Sentinel
3.Hystrix 與 Sentinel 比