目錄
一、SpringCloud Alibaba 簡(jiǎn)介
1、簡(jiǎn)介
2、為什么使用
3、版本選擇
4、項(xiàng)目中的依賴
二、SpringCloud Alibaba-Nacos[作為注冊(cè)中心]
1、下載 nacos-server
2、啟動(dòng) nacos-server
3、將微服務(wù)注冊(cè)到 nacos 中
三、SpringCloud Alibaba-Nacos[作為配置中心]
四、gateway
1、簡(jiǎn)介
2、核心概念
3、使用
(1)HelloWorld
(2)斷言
(3)過(guò)濾器
五、SpringCloud Alibaba-OSS
(一)、簡(jiǎn)介
(二)、使用步驟
1、開(kāi)通阿里云對(duì)象存儲(chǔ)服務(wù)
2、引入 SpringCloud Alibaba-OSS
3、配置阿里云 oss 相關(guān)的賬號(hào)信息
4、測(cè)試使用 OssClient 上傳
一、SpringCloud Alibaba 簡(jiǎn)介
1、簡(jiǎn)介
2、為什么使用
3、版本選擇
在官網(wǎng)alibaba/spring-cloud-alibaba: Spring Cloud Alibaba provides a one-stop solution for application development for the distributed solutions of Alibaba middleware. (github.com)也可找到版本對(duì)應(yīng)
4、項(xiàng)目中的依賴
在 common 項(xiàng)目中引入如下。進(jìn)行統(tǒng)一管理,我的springboot版本為2.7.1
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2021.0.4.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
二、SpringCloud Alibaba-Nacos[作為注冊(cè)中心]
1、下載 nacos-server
2、啟動(dòng) nacos-server
- 雙擊 bin 中的 startup.cmd 文件
- 訪問(wèn) http://localhost:8848/nacos/
- 使用默認(rèn)的 nacos/nacos 進(jìn)行登錄
3、將微服務(wù)注冊(cè)到 nacos 中
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
(2)、在應(yīng)用的 /src/main/resources/application.properties 配置文件中配置 Nacos Server 地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallCouponApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallCouponApplication.class, args);
}
}
注意:每一個(gè)應(yīng)用都應(yīng)該有名字,這樣才能注冊(cè)上去。修改 application.properties 文件
spring.application.name=service-provider
server.port=8000
Nacos 使用三步1 、導(dǎo)包 nacos-discovery2 、寫(xiě)配置,指定 nacos 地址,指定應(yīng)用的名字3 、開(kāi)啟服務(wù)注冊(cè)發(fā)現(xiàn)功能 @EnableDiscoveryClient
Feign 使用三步1 、導(dǎo)包 openfeign2 、開(kāi)啟 @EnableFeignClients 功能3 、編寫(xiě)接口,進(jìn)行遠(yuǎn)程調(diào)用
/*
* 這是聲明式的遠(yuǎn)程調(diào)用
*/
@Component
@FeignClient("gulimall-coupon")
public interface CouponFeignService {
@RequestMapping("/coupon/coupon/member/list")
public R membercoupons();
}
三、SpringCloud Alibaba-Nacos[作為配置中心]
1、pom.xml 引入 Nacos Config Starter。
<!--nacos作為配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
?注意,新版的nacos作為配置中心,需要導(dǎo)入spring-cloud-starter-bootstrap,而且nacos新導(dǎo)入的config版本要與原本的nacos注冊(cè)中心相同
<!--nacos作為配置中心而bootstrap被禁用,因此還需導(dǎo)入bootstrap依賴-->
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-bootstrap -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.0.3</version>
</dependency>
2、在應(yīng)用的 /src/main/resources/bootstrap.properties 配置文件中配置 Nacos Config 元數(shù)據(jù)
spring.application.name=nacos-config-example
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
主要配置應(yīng)用名和配置中心地址
Nacos Config 數(shù)據(jù)結(jié)構(gòu)Nacos Config 主要通過(guò) dataId 、namespace和? group 來(lái)唯一確定一條配置。Nacos Client 從 Nacos Server 端獲取數(shù)據(jù)時(shí),調(diào)用的是此接口 ConfigService.getConfig(String dataId, String group, long timeoutMs) 。Spring Cloud 應(yīng)用獲取數(shù)據(jù)dataID :在 Nacos Config Starter 中, dataId 的拼接格式如下? ${prefix} - ${spring.profiles.active} . ${file-extension} prefix 默認(rèn)為 spring.application.name的值,也可以通過(guò)配置項(xiàng) spring.cloud.nacos.config.prefix 來(lái)配置。? spring.profiles.active 即為當(dāng)前環(huán)境對(duì)應(yīng)的 profile注意,當(dāng) activeprofile 為空時(shí),對(duì)應(yīng)的連接符 - 也將不存在, dataId 的拼接格式變成${prefix}.${file-extension}file-extension 為配置內(nèi)容的數(shù)據(jù)格式,可以通過(guò)配置項(xiàng)spring.cloud.nacos.config.file-extension 來(lái)配置。 目前只支持 properties 類型。Group :Group 默認(rèn)為 DEFAULT_GROUP ,可以通過(guò) spring.cloud.nacos.config.group 配置。
?4、在應(yīng)用中使用@Value 和@RefreshScope
@RefreshScope
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
@Value("${coupon.user.name}")
private String userName;
@Value("${coupon.user.age}")
private Integer age;
@RequestMapping("/test")
public R test() {
return R.ok().put("name", userName).put("age", age);
}
}
5、進(jìn)階
nacos作為配置中心,可以通過(guò)以下實(shí)現(xiàn)隔離性:
1、使用命名空間區(qū)分環(huán)境。比如說(shuō)開(kāi)發(fā),測(cè)試,生成階段不同,可以在bootstrap.properties中配置上需要使用哪個(gè)命名空間下的配置
2、使用命名空間區(qū)分服務(wù)。每一個(gè)微服務(wù)之間相互隔離配置。每一個(gè)微服務(wù)都創(chuàng)建自己的命名空間,只加載自己命名空間下的所有配置
(2)、原理
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.namespace=c207b94f-c1a3-426e-8e71-dd70002cfcd6
spring.cloud.nacos.config.group=dev
spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=true
spring.cloud.nacos.config.ext-config[2].data-id=other.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true
四、gateway
1、簡(jiǎn)介
- 基于 Spring5,支持響應(yīng)式編程和 SpringBoot2.0
- 支持使用任何請(qǐng)求屬性進(jìn)行路由匹配
- 特定于路由的斷言和過(guò)濾器
- 集成 Hystrix 進(jìn)行斷路保護(hù)
- 集成服務(wù)發(fā)現(xiàn)功能
- 易于編寫(xiě) Predicates 和 Filters
- 支持請(qǐng)求速率限制
- 支持路徑重寫(xiě)
- 客戶端會(huì)多次請(qǐng)求不同的微服務(wù),增加了客戶端的復(fù)雜性。
- 存在跨域請(qǐng)求,在一定場(chǎng)景下處理相對(duì)復(fù)雜。
- 認(rèn)證復(fù)雜,每個(gè)服務(wù)都需要獨(dú)立認(rèn)證。
- 難以重構(gòu),隨著項(xiàng)目的迭代,可能需要重新劃分微服務(wù)。例如,可能將多個(gè)服務(wù)合并成一個(gè)或者將一個(gè)服務(wù)拆分成多個(gè)。如果客戶端直接與微服務(wù)通信,那么重構(gòu)將會(huì)很難實(shí)施。
- 易于監(jiān)控??梢栽诰W(wǎng)關(guān)收集監(jiān)控?cái)?shù)據(jù)并將其推送到外部系統(tǒng)進(jìn)行分析。
- 易于認(rèn)證。可以在網(wǎng)關(guān)上進(jìn)行認(rèn)證,然后再將請(qǐng)求轉(zhuǎn)發(fā)到后端的微服務(wù),而無(wú)須在每個(gè)微服務(wù)中進(jìn)行認(rèn)證。
- 減少了客戶端與各個(gè)微服務(wù)之間的交互次數(shù)。
2、核心概念
工作原理?
3、使用
(1)HelloWorld
1、創(chuàng)建網(wǎng)關(guān)項(xiàng)目,引入網(wǎng)關(guān)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
2、編寫(xiě)網(wǎng)關(guān)配置文件
spring:
cloud:
gateway:
routes:
- id: test_route
uri: https://www.baidu.com
predicates:
- Query=url,baidu
- id: qq_route
uri: https://www.qq.com
predicates:
- Query=url,qq
3、注意
各種 Predicates 同時(shí)存在于同一個(gè)路由時(shí),請(qǐng)求必須同時(shí)滿足所有的條件才被這個(gè)路
由匹配。
一個(gè)請(qǐng)求滿足多個(gè)路由的謂詞條件時(shí),請(qǐng)求只會(huì)被首個(gè)成功匹配的路由轉(zhuǎn)發(fā)
4、測(cè)試
可以使用 postman 進(jìn)行測(cè)試網(wǎng)關(guān)的路由功能
(2)斷言
?(3)過(guò)濾器
GlobalFilter文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-591197.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-591197.html
五、SpringCloud Alibaba-OSS
(一)、簡(jiǎn)介
(二)、使用步驟
1、開(kāi)通阿里云對(duì)象存儲(chǔ)服務(wù)
https://www.aliyun.com/product/oss
2、引入 SpringCloud Alibaba-OSS
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alicloud-oss</artifactId>
</dependency>
3、配置阿里云 oss 相關(guān)的賬號(hào)信息
spring:
cloud:
alicloud:
access-key: xxxx
secret-key: xxxx
oss:
endpoint: xxxxx
4、測(cè)試使用 OssClient 上傳
@Test
public void testUpload() throws FileNotFoundException {
FileInputStream inputStream = new FileInputStream("C:\\Users\\86133\\Pictures\\CSDN\\向日葵.jpg");
ossClient.putObject("gulimall-2345", "向日葵.jpg", inputStream);
System.out.println("上傳完成");
}
到了這里,關(guān)于如何整合spring cloud常用組件?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!