?作者簡介:2022年博客新星 第八。熱愛國學(xué)的Java后端開發(fā)者,修心和技術(shù)同步精進(jìn)。
??個人主頁:Java Fans的博客
??個人信條:不遷怒,不貳過。小知識,大智慧。
??當(dāng)前專欄:SpringCloud 微服務(wù)學(xué)習(xí)專欄
?特色專欄:國學(xué)周更-心性養(yǎng)成之路
??本文內(nèi)容:SpringCloud 微服務(wù)系列——Spring Cloud Alibaba 微服務(wù)工具集
Spring Cloud Alibaba 是一個基于 Spring Cloud 的微服務(wù)工具集,它提供了一系列的組件和工具,幫助開發(fā)者快速構(gòu)建和部署微服務(wù)應(yīng)用。其中包括服務(wù)注冊與發(fā)現(xiàn)、配置中心、消息總線、負(fù)載均衡、熔斷器、限流器、分布式事務(wù)等功能。Spring Cloud Alibaba 還提供了一些特有的組件,如 Nacos、Sentinel、Seata 等,這些組件都是阿里巴巴在實(shí)際業(yè)務(wù)中使用的成熟技術(shù),具有高可用、高性能、易用性等優(yōu)點(diǎn)。通過使用 Spring Cloud Alibaba,開發(fā)者可以更加輕松地構(gòu)建和管理微服務(wù)應(yīng)用,提高開發(fā)效率和系統(tǒng)穩(wěn)定性。
當(dāng)前阿里巴巴版本為 2.2.1,Boot版本為 2.2.5。
1.簡介
Spring Cloud Alibaba provides a one-stop solution for distributed application development. It contains all the components required to develop distributed applications, making it easy for you to develop your applications using Spring Cloud.
- spring cloud 用來解決微服務(wù)系統(tǒng)中(分布式系統(tǒng))解決方案
- spring cloud alibaba 用來解決微服務(wù)系統(tǒng)中解決方案
With Spring Cloud Alibaba, you only need to add some annotations and a small amount of configurations to connect Spring Cloud applications to the distributed solutions of Alibaba, and build a distributed application system with Alibaba middleware.
2.環(huán)境搭建
要搭建 Spring Cloud Alibaba 微服務(wù)工具集環(huán)境,需要按照以下步驟進(jìn)行:
-
安裝 JDK:首先需要安裝 JDK,建議使用 JDK 8 或以上版本。
-
安裝 Maven:Spring Cloud Alibaba 微服務(wù)工具集使用 Maven 進(jìn)行項(xiàng)目管理,需要安裝 Maven。
-
創(chuàng)建 Spring Boot 項(xiàng)目:使用 Spring Initializr 創(chuàng)建一個 Spring Boot 項(xiàng)目,選擇需要的依賴,包括 Spring Cloud Alibaba 的相關(guān)依賴。
-
配置 Nacos:Nacos 是 Spring Cloud Alibaba 提供的服務(wù)注冊與發(fā)現(xiàn)組件,需要在項(xiàng)目中配置 Nacos 的地址和端口號。
-
配置 Sentinel:Sentinel 是 Spring Cloud Alibaba 提供的流量控制和熔斷降級組件,需要在項(xiàng)目中配置 Sentinel 的相關(guān)參數(shù)。
-
配置 Seata:Seata 是 Spring Cloud Alibaba 提供的分布式事務(wù)組件,需要在項(xiàng)目中配置 Seata 的相關(guān)參數(shù)。
-
編寫業(yè)務(wù)代碼:根據(jù)項(xiàng)目需求編寫業(yè)務(wù)代碼,使用 Spring Cloud Alibaba 提供的組件和工具進(jìn)行開發(fā)。
-
運(yùn)行項(xiàng)目:使用 Maven 進(jìn)行項(xiàng)目打包,然后在命令行中運(yùn)行項(xiàng)目。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
<properties>
<spring.cloud.alibaba.version>2.2.1.RELEASE</spring.cloud.alibaba.version>
<spring.cloud-version>Hoxton.SR6</spring.cloud-version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3.Nacos
什么是Nacos Name Service(服務(wù)注冊與發(fā)現(xiàn)) & Configurations Services(統(tǒng)一配置中心)
-
https://nacos.io/zh-cn/index.html
-
Nacos 致力于幫助您發(fā)現(xiàn)、配置和管理微服務(wù)。Nacos 提供了一組簡單易用的特性集,幫助您快速實(shí)現(xiàn)動態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理。
-
https://nacos.io/zh-cn/index.html
-
Nacos 致力于幫助您發(fā)現(xiàn)、配置和管理微服務(wù)。Nacos 提供了一組簡單易用的特性集,幫助您快速實(shí)現(xiàn)動態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理。
安裝Nacos
準(zhǔn)備環(huán)境
- 1.64 bit OS,支持 Linux/Unix/Mac/Windows,推薦選用 Linux/Unix/Mac。必須滿足
- 2.64 bit JDK 1.8+;下載 & 配置。 必須滿足
- 3.Maven 3.2.x+;下載 & 配置。
1.下載nacos
- https://github.com/alibaba/nacos/releases
2.解壓縮安裝包到指定位置
- [root@localhost ~]# tar -zxvf nacos-server-1.3.1.tar.gz
- bin 啟動nacos服務(wù)的腳本目錄
- conf nacos的配置文件目錄
- target nacos的啟動依賴存放目錄
- data nacos啟動成功后保存數(shù)據(jù)的目錄
3.啟動安裝服務(wù)
- linux/unix/mac啟動
打開終端進(jìn)入nacos的bin目錄執(zhí)行如下命令
./startup.sh -m standalone - windows啟動
在 cmd中
執(zhí)行 startup.cmd -m standalone
4.訪問nacos的web服務(wù)管理界面
- http://localhost:8848/nacos/
- 用戶名 和 密碼都是nacos
開發(fā)服務(wù)注冊到nacos
<!--引入nacos client的依賴-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
1.配置注冊地址
server.port=8789 #指定當(dāng)前服務(wù)端口
spring.application.name=nacosclient # 指定服務(wù)名稱
spring.cloud.nacos.server-addr=localhost:8848 #指定nacos服務(wù)地址
spring.cloud.nacos.discovery.server-addr=${spring.cloud.nacos.server-addr} #指定注冊中心地址
management.endpoints.web.exposure.include=* #暴露所有web端點(diǎn)
-------------------------------------------
server:
port: 8851
spring:
application:
name: ORDERS
cloud:
nacos:
server-addr: localhost:8848
2.加入啟動服務(wù)注冊注解
3.查看nacos的服務(wù)列表
點(diǎn)擊詳情
點(diǎn)擊編輯
<img src="springcloud.assets/image-20230222211748920.png"
alt="image-20230222211748920" style="zoom: 50%;" />
權(quán)重生效需要設(shè)置負(fù)載均衡策略為NacosRule,否則不生效
NACOSCLIENT: # 被調(diào)用服務(wù)的名稱
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
4.使用nacos作為配置中心
1.創(chuàng)建項(xiàng)目并引入nacons配置中心依賴
<!--引入nacos client 依賴-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--引入配置中心依賴-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.配置配置中心地址
spring.cloud.nacos.server-addr=localhost:8848 # 遠(yuǎn)程配置中心的地址
spring.cloud.nacos.config.server-addr=${spring.cloud.nacos.server-addr} # 去指定nacos地址讀取配置
spring.cloud.nacos.config.group=DEFAULT_GROUP # 讀取配置的分組
spring.cloud.nacos.config.file-extension=properties # 指定讀取文件后綴
spring.application.config.name=config # 指定讀取文件的前綴
----------------------------------------------
spring:
cloud:
nacos:
server-addr: localhost:8848
config:
group: DEFAULT_GROUP
name: user-dev
file-extension: yml
namespace: public
3.在nacos中創(chuàng)建配置
4.編寫控制器測試配置讀取情況
@RestController
@Slf4j
public class HelloController {
//注入配置
@Value("${user.name}")
private String username;
@GetMapping("/hello/config")
public String config(){
log.info("用戶名: [{}]",username);
return username;
}
}
5.啟動項(xiàng)目測試配置讀取
DataId
1.DataId
- 用來讀取遠(yuǎn)程配置中心的中具體配置文件其完整格式如下:
- ${prefix}-${spring.profile.active}.${file-extension}
a. prefix 默認(rèn)為 spring.application.name 的值,也可以通過配置項(xiàng) spring.cloud.nacos.config.prefix來配置。
b. spring.profile.active 即為當(dāng)前環(huán)境對應(yīng)的 profile,詳情可以參考 Spring Boot文檔。 注意:當(dāng) spring.profile.active 為空時,對應(yīng)的連接符 - 也將不存在,dataId 的拼接格式變成 ${prefix}.${file-extension}
c. file-exetension 為配置內(nèi)容的數(shù)據(jù)格式,可以通過配置項(xiàng) spring.cloud.nacos.config.file-extension 來配置。目前只支持 properties 和 yaml 類型。
實(shí)現(xiàn)自動配置刷新
1.自動刷新
- 默認(rèn)情況下nacos已經(jīng)實(shí)現(xiàn)了自動配置刷新功能,如果需要刷新配置直接在控制器中加入@RefreshScope注解即可
@RestController
@Slf4j
@RefreshScope
public class HelloController {
//注入配置
@Value("${user.name}")
private String username;
@GetMapping("/hello/config")
public String config(){
log.info("用戶名: [{}]",username);
return username;
}
}
日志頻繁刷新,可設(shè)置日志輸出的級別進(jìn)行調(diào)整
# Nacos 注冊中心客戶端心跳日志禁用 get changedGroupKeys:[]
logging:
level:
com.alibaba.nacos.client.config.impl: WARN
5.sentinel 流量衛(wèi)兵
什么是sentinel
sentinel使用
- sentinel提供了兩個服務(wù)組件:
一個是 sentinel 用來實(shí)現(xiàn)微服務(wù)系統(tǒng)中服務(wù)熔斷、降級等功能。 這點(diǎn)和hystrix 類似
一個是 sentinel dashboard 用來監(jiān)控微服務(wù)系統(tǒng)中流量調(diào)用等情況 流控 熔斷 降級 配置。 這點(diǎn)和hystrix dashboard類似
1. sentinel dashboard的安裝
# 1.下載
- https://github.com/alibaba/Sentinel/releases
2.啟動
- 儀表盤是個jar包可以直接通過java命令啟動 如: java -jar 方式運(yùn)行 默認(rèn)端口為 8080
- java -Dserver.port=9191 -jar sentinel-dashboard-1.7.2.jar
3.訪問web界面
-
http://localhost:8080/#/login
4.登錄
- 用戶名&密碼: sentinel
sentinel 實(shí)時監(jiān)控服務(wù)
# 1.創(chuàng)建項(xiàng)目引入依賴
<!--引入nacos client依賴-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--引入sentinel依賴-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
配置
server.port=8789
spring.application.name=nacosclient
spring.cloud.nacos.server-addr=localhost:8848
spring.cloud.nacos.discovery.server-addr=${spring.cloud.nacos.server-addr}
spring.cloud.sentinel.enabled=true # 開啟sentinel 默認(rèn)開啟
spring.cloud.sentinel.transport.dashboard=localhost:9191 # 連接dashboard
spring.cloud.sentinel.transport.port=8719
啟動服務(wù)
訪問dashboard界面查看服務(wù)監(jiān)控
- 發(fā)現(xiàn)界面什么都沒有?
- 默認(rèn)情況下sentiel為延遲加載,不會在啟動之后立即創(chuàng)建服務(wù)監(jiān)控,需要對服務(wù)進(jìn)行調(diào)用時才會初始化
開發(fā)服務(wù)
@RestController
@Slf4j
public class SentinelController {
@GetMapping("/sentinel/test")
public String test(){
log.info("sentinel test");
return "sentinel test ";
}
@GetMapping("/sentinel/test1")
public String test1(){
log.info("sentinel test1");
return "sentinel test1 ";
}
}
啟動進(jìn)行調(diào)用
- http://localhost:8080/sentinel/test
查看監(jiān)控界面
??碼文不易,本篇文章就介紹到這里,如果想要學(xué)習(xí)更多Java系列知識,點(diǎn)擊關(guān)注博主,博主帶你零基礎(chǔ)學(xué)習(xí)Java知識。與此同時,對于日常生活有困擾的朋友,歡迎閱讀我的第四欄目:《國學(xué)周更—心性養(yǎng)成之路》,學(xué)習(xí)技術(shù)的同時,我們也注重了心性的養(yǎng)成。文章來源:http://www.zghlxwxcb.cn/news/detail-439357.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-439357.html
到了這里,關(guān)于SpringCloud 微服務(wù)系列——Spring Cloud Alibaba 微服務(wù)工具集的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!