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

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

3.訪問nacos服務(wù)
nacos默認端口為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 # 應用名稱 spring.application.name=springcloud-alibaba-consumer # Nacos 服務(wù)發(fā)現(xiàn)與注冊配置,其中子屬性 server-addr 指定 Nacos 服務(wù)器主機和端口 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認證信息 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 # 指定配置格式,默認是properties,可選text、json、xml、yaml、html、properties spring.cloud.nacos.config.file-extension=yaml # 默認是DEFAULT_GROUP,可以指定配置所在組 spring.cloud.nacos.config.group=dev # Nacos 配置中心的namespace。需要注意,如果使用 public 的 namcespace ,請不要填寫這個值,直接留空即可 # spring.cloud.nacos.config.namespace= # 應用名稱 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.注意點
- nacos中配置的Group不是默認的DEFAULT_GROUP時,例如dev。需要在客戶端中配置spring.cloud.nacos.config.group=dev,指定配置所在的組。
- nacos中的配置格式不是默認的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}值一致。當spring.cloud.nacos.config.prefix沒有配置時,該值默認為spring.application.name。當spring.profile.active沒有配置時,則為空。
nacos數(shù)據(jù)持久化
1.新建nacos數(shù)據(jù)庫

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

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

Nacos集群
1.修改文件cluster.conf
(1).不要使用連號的端口,我使用連號的端口就一直啟動不起來
關(guān)于單機搭建nacos集群2.+版本啟動報端口被占用問題,詳細內(nèi)容,見文末補充介紹。
(2).不要使用127.0.0.1的ip,會導致最終nacos集群數(shù)據(jù)共享出現(xiàn)問題。配置127.0.0.1,可以看到當服務(wù)啟動后,cluster.conf會被重寫,增加本機ip的一行數(shù)據(jù)。這個一定程度上算nacos的bug。
192.168.43.11:8848
192.168.43.11:8948
2.復制一份nacos服務(wù)端
修改port為8948后,分別啟動兩個nacos服務(wù)
3.使用nginx來做負載均衡
修改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端口,就可以輪訓訪問nacos的集群。
補充:
單機搭建nacos集群2.+版本啟動報端口被占用問題。
異常信息:io.grpc.netty.shaded.io.netty.channel.unix.Errors$NativeIoException: bind(…) failed: 地址已在使用
原因:2.0版本的nacos需要四個端口,本機服務(wù)端口是連號如:8848/8849/8850第四個端口就會發(fā)生占用。
server.port(默認8848)
raft port: ${server.port} - 1000
grpc port: ${server.port} + 1000
grpc port for server: ${server.port} + 1001解決辦法
將默認端口分開 不連號即可。核心就是避免第四個端口 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遠程命令執(zhí)行漏洞分析(CVE-2022-22947)
- SpringSecurit鹽值加密的密碼驗證以及強密碼驗證過程
- Spring?Cloud?Alibaba實現(xiàn)服務(wù)的無損下線功能(案例講解)
- springcloud-gateway集成knife4j的示例詳解
- Spring?Cloud?Ribbon?負載均衡使用策略示例詳解
- SpringCloud @RefreshScope刷新機制深入探究
- SpringCloud?@RefreshScope刷新機制淺析
- SpringCloud啟動失敗問題匯總
- 一文吃透Spring?Cloud?gateway自定義錯誤處理Handler
- SpringCloud Gateway路由組件詳解
- SpringCloud OpenFeign基本介紹與實現(xiàn)示例
- Spring Cloud Gateway替代zuul作為API網(wǎng)關(guān)的方法
- SpringCloud使用Feign實現(xiàn)遠程調(diào)用流程詳細介紹
- SpringCloud修改Feign日志記錄級別過程淺析
- SpringCloud開啟session共享并存儲到Redis的實現(xiàn)
- Spring?Cloud原理以及核心組件詳解
相關(guān)文章
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 版本作為演示,其他版本的應該也差距不大,需要的朋友可以參考下2021-04-04
Java之Rsync并發(fā)遷移數(shù)據(jù)并校驗詳解
這篇文章主要介紹了Java之Rsync并發(fā)遷移數(shù)據(jù)并校驗詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08
SpringCloud-Alibaba-Sentinel-配置持久化策略詳解
這篇文章主要介紹了SpringCloud-Alibaba-Sentinel-配置持久化策略,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03

