天天看點

SpringCloud 元件1. SpringCloud Alibaba-Nacos[作為注冊中心]2.SpringCloud Alibaba-Nacos[作為配置中心]3.SpringCloud Alibaba-Sentine

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 比

繼續閱讀