SpringCloud?Alibaba環(huán)境集成之nacos詳解
前言
在SpringCloud Alibaba的使用過程中,我總結(jié)為如下步驟:
- 下載并啟動服務(wù)端
- 客戶端引入spring-cloud-starter-alibaba的jar包
- 客戶端properties或yml加入相關(guān)配置
- 客戶端加上相應(yīng)的注解開啟功能
- 服務(wù)端增加相應(yīng)配置
- 數(shù)據(jù)持久化,服務(wù)端集群部署
Nacos服務(wù)端
1.下載nacos
在github上查看最新版的nacos下載

2.單機(jī)啟動nacos服務(wù)
默認(rèn)是集群運(yùn)行的,使用-m指定nacos單機(jī)運(yùn)行
startup.cmd -m standalone

3.訪問nacos服務(wù)
nacos默認(rèn)端口為8848,用戶名:nacos,密碼:nacos,上下文路徑:/nacos
http://127.0.0.1:8848/nacos

Nacos注冊中心
1.代碼中引入jar
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.properties加入配置
server.port=9001 # 應(yīng)用名稱 spring.application.name=springcloud-alibaba-consumer # Nacos 服務(wù)發(fā)現(xiàn)與注冊配置,其中子屬性 server-addr 指定 Nacos 服務(wù)器主機(jī)和端口 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 management.endpoints.web.exposure.include=*
3.啟動類加入注解
@EnableDiscoveryClient
Nacos配置中心
1.代碼中引入jar
只引入spring-cloud-starter-alibaba-nacos-config.jar, bootstrap.yml一直不生效,還需要引入spring-cloud-starter-bootstrap.jar
<!-- 參考官方文檔,配置一直不生效,bootstrap中的配置沒有被讀取到,需要加入該依賴 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>2.bootstrap.properties加入配置

# Nacos認(rèn)證信息 spring.cloud.nacos.config.username=nacos spring.cloud.nacos.config.password=nacos spring.cloud.nacos.config.contextPath=/nacos # 設(shè)置配置中心服務(wù)端地址 spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.refresh-enabled=true # 指定配置格式,默認(rèn)是properties,可選text、json、xml、yaml、html、properties spring.cloud.nacos.config.file-extension=yaml # 默認(rèn)是DEFAULT_GROUP,可以指定配置所在組 spring.cloud.nacos.config.group=dev # Nacos 配置中心的namespace。需要注意,如果使用 public 的 namcespace ,請不要填寫這個值,直接留空即可 # spring.cloud.nacos.config.namespace= # 應(yīng)用名稱 spring.application.name=springcloud-alibaba-nacos-client # 激活 dev 的配置 spring.profiles.active=dev server.port=9006 server.servlet.context-path=/nacos-config
3.加入注解@RefreshScope
package com.ykq.springcloudalibabanacosclientdev.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author: kqyin
* @date: 2022/3/24 16:24
* @Description:
*/
@RestController
@RefreshScope
public class NacosConfigController {
@Value("${userName:}")
private String name;
@RequestMapping("/test/getName")
public String getNacosTestName() {
return name;
}
}4.在nacos中配置相關(guān)信息

5.注意點(diǎn)
- nacos中配置的Group不是默認(rèn)的DEFAULT_GROUP時,例如dev。需要在客戶端中配置spring.cloud.nacos.config.group=dev,指定配置所在的組。
- nacos中的配置格式不是默認(rèn)的properties時,需要在客戶端中增加
- spring.cloud.nacos.config.file-extension配置,指定配置的內(nèi)容文件格式
- nacos的Data ID 需要與${spring.cloud.nacos.config.prefix}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}值一致。當(dāng)spring.cloud.nacos.config.prefix沒有配置時,該值默認(rèn)為spring.application.name。當(dāng)spring.profile.active沒有配置時,則為空。
nacos數(shù)據(jù)持久化
1.新建nacos數(shù)據(jù)庫

2.執(zhí)行sql
在nacos/conf目錄下找到對應(yīng)sql,并執(zhí)行

3.修改conf/application.properties
在上面截圖中的application.properties,取消以下注釋,并修改對應(yīng)的鏈接,用戶名,密碼

Nacos集群
1.修改文件cluster.conf
(1).不要使用連號的端口,我使用連號的端口就一直啟動不起來
關(guān)于單機(jī)搭建nacos集群2.+版本啟動報端口被占用問題,詳細(xì)內(nèi)容,見文末補(bǔ)充介紹。
(2).不要使用127.0.0.1的ip,會導(dǎo)致最終nacos集群數(shù)據(jù)共享出現(xiàn)問題。配置127.0.0.1,可以看到當(dāng)服務(wù)啟動后,cluster.conf會被重寫,增加本機(jī)ip的一行數(shù)據(jù)。這個一定程度上算nacos的bug。
192.168.43.11:8848
192.168.43.11:8948
2.復(fù)制一份nacos服務(wù)端
修改port為8948后,分別啟動兩個nacos服務(wù)
3.使用nginx來做負(fù)載均衡
修改nginx.conf
upstream nacos{
server 127.0.0.1:8848;
server 127.0.0.1:8948;
}
server {
listen 8000;
server_name nacos;
location / {
# 反向代理到上面的兩臺服務(wù)器 寫上自定義的名稱
proxy_pass http://nacos;
}
}
此時在使用8000端口,就可以輪訓(xùn)訪問nacos的集群。
補(bǔ)充:
單機(jī)搭建nacos集群2.+版本啟動報端口被占用問題。
異常信息:io.grpc.netty.shaded.io.netty.channel.unix.Errors$NativeIoException: bind(…) failed: 地址已在使用
原因:2.0版本的nacos需要四個端口,本機(jī)服務(wù)端口是連號如:8848/8849/8850第四個端口就會發(fā)生占用。
server.port(默認(rèn)8848)
raft port: ${server.port} - 1000
grpc port: ${server.port} + 1000
grpc port for server: ${server.port} + 1001解決辦法
將默認(rèn)端口分開 不連號即可。核心就是避免第四個端口 grpc port for server = ${server.port} + 1001被占用。

到此這篇關(guān)于SpringCloud Alibaba環(huán)境集成之nacos詳解的文章就介紹到這了,更多相關(guān)Spring Cloud Alibaba 整合Nacos內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringCloud Hystrix熔斷器使用方法介紹
- SpringCloud Gateway動態(tài)路由配置詳解
- Spring?Cloud?Gateway遠(yuǎn)程命令執(zhí)行漏洞分析(CVE-2022-22947)
- SpringSecurit鹽值加密的密碼驗(yàn)證以及強(qiáng)密碼驗(yàn)證過程
- Spring?Cloud?Alibaba實(shí)現(xiàn)服務(wù)的無損下線功能(案例講解)
- springcloud-gateway集成knife4j的示例詳解
- Spring?Cloud?Ribbon?負(fù)載均衡使用策略示例詳解
- SpringCloud @RefreshScope刷新機(jī)制深入探究
- SpringCloud?@RefreshScope刷新機(jī)制淺析
- SpringCloud啟動失敗問題匯總
- 一文吃透Spring?Cloud?gateway自定義錯誤處理Handler
- SpringCloud Gateway路由組件詳解
- SpringCloud OpenFeign基本介紹與實(shí)現(xiàn)示例
- Spring Cloud Gateway替代zuul作為API網(wǎng)關(guān)的方法
- SpringCloud使用Feign實(shí)現(xiàn)遠(yuǎn)程調(diào)用流程詳細(xì)介紹
- SpringCloud修改Feign日志記錄級別過程淺析
- SpringCloud開啟session共享并存儲到Redis的實(shí)現(xiàn)
- Spring?Cloud原理以及核心組件詳解
相關(guān)文章
java實(shí)現(xiàn)坦克大戰(zhàn)小游戲
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)坦克大戰(zhàn)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-01-01
Java中將 int[] 數(shù)組 轉(zhuǎn)換為 List分享
這篇文章主要介紹了Java中將 int[] 數(shù)組 轉(zhuǎn)換為 List分享的相關(guān)資料,需要的朋友可以參考下2022-12-12
IDEA 自帶的數(shù)據(jù)庫工具真的很牛(收藏版)
這篇文章主要介紹了IDEA 自帶的數(shù)據(jù)庫工具真的很牛(收藏版),本文以 IntelliJ IDEA/ Mac 版本作為演示,其他版本的應(yīng)該也差距不大,需要的朋友可以參考下2021-04-04
Java之Rsync并發(fā)遷移數(shù)據(jù)并校驗(yàn)詳解
這篇文章主要介紹了Java之Rsync并發(fā)遷移數(shù)據(jù)并校驗(yàn)詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
Java 詳細(xì)講解線程安全與同步附實(shí)例與注釋
線程安全是多線程編程時的計算機(jī)程序代碼中的一個概念。在擁有共享數(shù)據(jù)的多條線程并行執(zhí)行的程序中,線程安全的代碼會通過同步機(jī)制保證各個線程都可以正常且正確的執(zhí)行,不會出現(xiàn)數(shù)據(jù)污染等意外情況2022-04-04
SpringCloud-Alibaba-Sentinel-配置持久化策略詳解
這篇文章主要介紹了SpringCloud-Alibaba-Sentinel-配置持久化策略,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03

