文章目錄
- SpringCloud Alibaba:
- 依賴版本補充
- 六、Nacos:服務注冊與發現
- 1、下載安裝Nacos
- 2、服務注冊
- 1. 導入依賴(這里以服務提供者為例)
- 2. 修改配置文件和主啟動類
- 3. 創建業務類
- 4. 測試
- 3.服務映射
- 1. 導入依賴
- 2. 修改配置文件和主啟動類
- 3. 創建業務類和RestTemplate配置類用來提供負載均衡
- 4. 測試(使用idea中自帶的虛擬端口映射)
- 4. 配置中心
- 1. 導入配置
- 2. nacos創建命名空間
- 3. 修改配置文件--主啟動類
- 4. 創建業務類
SpringCloud Alibaba:
官方學習文檔(中文): https://spring-cloud-alibaba-group.github.io/github-pages/2022/zh-cn/2022.0.0.0-RC2.html
微服務的中間件介紹與使用
微服務架構體系圖:
依賴版本補充
下面所有代碼中的依賴版本如下:
<properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><hutool.version>5.8.22</hutool.version><lombok.version>1.18.26</lombok.version><druid.version>1.1.20</druid.version><mybatis.springboot.version>3.0.2</mybatis.springboot.version><mysql.version>8.0.11</mysql.version><swagger3.version>2.2.0</swagger3.version><mapper.version>4.2.3</mapper.version><fastjson2.version>2.0.40</fastjson2.version><persistence-api.version>1.0.2</persistence-api.version><spring.boot.test.version>3.1.5</spring.boot.test.version><spring.boot.version>3.2.0</spring.boot.version><spring.cloud.version>2023.0.0</spring.cloud.version><spring.cloud.alibaba.version>2023.0.0.0-RC1</spring.cloud.alibaba.version><knife4j-openapi3.version>4.4.0</knife4j-openapi3.version> </properties>
六、Nacos:服務注冊與發現
1、下載安裝Nacos
下載地址:https://nacos.io/download/nacos-server
下載完之后解壓到沒有中文的目錄錄下,并到bin目錄下運行cmd啟動命令
startup.cmd -m standalone
(standalone代表著單機模式運行,非集群模式)
默認訪問地址為:http://localhost:8848/nacos/ (要是有賬號密碼默認都是nacos)
2、服務注冊
1. 導入依賴(這里以服務提供者為例)
<dependencies><!--nacos-discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- 引入自己定義的api通用包 --><dependency><groupId>com.atguigu.cloud</groupId><artifactId>cloud-api-commons</artifactId><version>1.0-SNAPSHOT</version></dependency><!--SpringBoot通用依賴模塊--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--hutool--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version><scope>provided</scope></dependency><!--test--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies>
2. 修改配置文件和主啟動類
server:port: 9001
spring:application:name: nacos-payment-providercloud:nacos:discovery:server-addr: localhost:8848 #配置Nacos地址
@SpringBootApplication
@EnableDiscoveryClient/*服務注冊*/
public class Main9001 {public static void main(String[] args) {SpringApplication.run(Main9001.class, args);}
}
3. 創建業務類
@RestController
public class PayAlibabaController {@Value("${server.port}")/*動態獲取端口*/private String serverPort;@GetMapping(value = "/pay/nacos/{id}")public String getPayInfo(@PathVariable("id") Integer id) {return "nacos registry, serverPort: " + serverPort + "\t id" + id;}
}
4. 測試
3.服務映射
為了演示這里需要在創建一個消費者去映射
1. 導入依賴
注意:消費者與服務提供者所需要導入的依賴不同多了一個負載均衡依賴
<dependencies><!--nacos-discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--loadbalancer負載均衡--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency><!--web + actuator--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
</dependencies>
2. 修改配置文件和主啟動類
server:port: 90
spring:application:name: nacos-order-consumercloud:nacos:discovery:server-addr: localhost:8848
#消費者將要去訪問的微服務名稱(nacos微服務提供者叫什么你寫什么)
service-url:nacos-user-service: http://nacos-payment-provider
主啟動類和上面一樣
3. 創建業務類和RestTemplate配置類用來提供負載均衡
這里不懂得可以看一下前面的文章《springCloud/Alibaba常用中間件(Consul、LoadBalancer、Openfeign、circuitBreaker)》中的負載均衡
@Configuration
public class RestTemplateConfig {@Bean@LoadBalanced //賦予RestTemplate負載均衡的能力public RestTemplate restTemplate() {return new RestTemplate();}
}
@RestController
public class OrderNacosController {@Resourceprivate RestTemplate restTemplate;/*方式一:在配置文件中配置好要訪問的服務。注意:!!!這里是和你配置文件中的service-url下面所配置的名字一樣!!!*/@Value("${service-url.nacos-user-service}")private String service;/*方式二:直接寫入要訪問的服務url*/public static final String service_url = "http://nacos-payment-provider/pay";@GetMapping("/consumer/pay/nacos/{id}")public String paymentInfo(@PathVariable("id") Integer id) {String result = restTemplate.getForObject(service + "/nacos/" + id, String.class);return result + "\t" + " 我是OrderNacosController83調用者。。。。。。";}
}
4. 測試(使用idea中自帶的虛擬端口映射)
測試用消費者的接口是否可以訪問成功
這里為了測試負載均衡可以在寫一個服務,也可以直接使用idea中自帶的虛擬端口映射配置如下
這時就會出現一個服務,啟動即可
這里就可以進行負載均衡的測試了
4. 配置中心
1. 導入配置
注意這里需要導入bootstrap(系統級配置)
依賴為下面的修改bootstrap配置做準備
(這里不太懂的話前面的文章《springCloud/Alibaba常用中間件(Consul、LoadBalancer、Openfeign、circuitBreaker)》中的Consul的服務配置與刷新)
<dependencies><!--bootstrap--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><!--nacos-config--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--nacos-discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--web + actuator--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
</dependencies>
2. nacos創建命名空間
3. 修改配置文件–主啟動類
# nacos配置(bootstrap.yml)
spring:application:name: nacos-config-client-chybcloud:nacos:discovery:server-addr: localhost:8848 #Nacos服務注冊中心地址namespace: chyb #關鍵點:添加命名空間ID,與config保持一致,若是這里不加服務可能會在public(默認)中運行config:server-addr: localhost:8848 #Nacos作為配置中心地址file-extension: yaml #指定yaml格式的配置group: CHYB_TESTGROUP #指定配置組namespace: chyb #指定命名空間(填寫的是命名空間ID)
# nacos端配置文件DataId的命名規則是:
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# 本案例的DataID是:nacos-config-client-dev.yaml
# application.yml
server:port: 3377
spring:profiles:active: dev # 表示開發環境#active: prod # 表示生產環境#active: test # 表示測試環境
主啟動類:和上面一樣這里就不演示了
4. 創建業務類
@RestController
@RefreshScope //在控制器類加入@RefreshScope注解使當前類下的配置支持Nacos的動態刷新功能。
public class NacosConfigClientController {@Value("${config.info}")private String configInfo;@GetMapping("/config/info")public String getConfigInfo() {return configInfo;}
}
- 測試
這里可以修改一下nacos中的配置內容測試是否會動態改變
上述大部分代碼以上傳到gitee:https://gitee.com/banhuayue/springCloud-Alibaba-code.git
筆記參考來自尚硅谷