Nacos Server部署配置全過程
1.什么是Nacos?
官方簡介:一個(gè)更易于構(gòu)建云原生應(yīng)用的動態(tài)服務(wù)發(fā)現(xiàn)(Nacos Discovery )、服務(wù)配置(Nacos Config)和服務(wù)管理平臺。
Nacos的關(guān)鍵特性包括:
- 服務(wù)發(fā)現(xiàn)和服務(wù)健康監(jiān)測
- 動態(tài)配置服務(wù)
- 動態(tài)DNS服務(wù)
- 服務(wù)及其元數(shù)據(jù)管理
Nacos的核心功能:
服務(wù)注冊:Nacos Client會通過發(fā)送REST請求的方式向Nacos Server注冊自己的服務(wù),提供自身的元數(shù)據(jù),比如ip地址、端口等信息。Nacos Server接收到注冊請求后,就會把這些元數(shù)據(jù)信息存儲在一個(gè)雙層的內(nèi)存Map中。服務(wù)心跳:在服務(wù)注冊后,Nacos Client會維護(hù)一個(gè)定時(shí)心跳來持續(xù)通知Nacos Server,說明服務(wù)一直處于可用狀態(tài),防止被剔除。默認(rèn)5s發(fā)送一次心跳。服務(wù)同步:Nacos Server集群之間會互相同步服務(wù)實(shí)例,用來保證服務(wù)信息的一致性。服務(wù)發(fā)現(xiàn):服務(wù)消費(fèi)者(Nacos Client)在調(diào)用服務(wù)提供者的服務(wù)時(shí),會發(fā)送一個(gè)REST請求給Nacos Server,獲取上面注冊的服務(wù)清單,并且緩存在Nacos Client本地,同時(shí)會在Nacos Client本地開啟一個(gè)定時(shí)任務(wù)定時(shí)拉取服務(wù)端最新的注冊表信息更新到本地緩存。服務(wù)健康檢查:Nacos Server會開啟一個(gè)定時(shí)任務(wù)用來檢查注冊服務(wù)實(shí)例的健康情況,對于超過15s沒有收到客戶端心跳的實(shí)例會將它的healthy屬性置為false(客戶端服務(wù)發(fā)現(xiàn)時(shí)不會發(fā)現(xiàn)),如果某個(gè)實(shí)例超過30秒沒有收到心跳,直接剔除該實(shí)例(被剔除的實(shí)例如果恢復(fù)發(fā)送心跳則會重新注冊)。
2.Nacos Server 單機(jī)部署配置
2.1. 相關(guān)文件
- 安裝包下載地址:https://github.com/alibaba/Nacos/releases
- 官方文檔: https://nacos.io/zh-cn/docs/deployment.html
- 版本關(guān)系說明: https://github.com/alibaba/spring-cloud-alibaba/wiki/版本說明
2.2. 配置流程
- 修改bin/startup.cmd文件信息,默認(rèn)是
集群模式,需修改為單機(jī)模式

- 啟動成功頁面

- 登錄頁面(默認(rèn)用戶名,密碼:nacos)

- 可選操作:端口修改,數(shù)據(jù)源設(shè)置—>config/application.properties文件

- sql文件位置

2.3. 搭建Nacos-client 服務(wù)
(1)引入依賴
父Pom中支持spring cloud&spring cloud alibaba, 引入依賴
<!--項(xiàng)目依賴管理,父項(xiàng)目只是聲明依賴,子項(xiàng)目需要寫明需要的依賴(可以省略版本信息)-->
<dependencyManagement>
<dependencies>
<!--spring cloud alibaba 版本管理器-->
<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>
<!--spring cloud 版本管理器-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--springboot 版本管理器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
子Pom中引入依賴
<!--nacos 服務(wù)注冊與發(fā)現(xiàn)-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--負(fù)載均衡器-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<version>3.1.1</version>
</dependency>
(2) application.yml中配置
server:
port: 8020
# 應(yīng)用名稱 (nacos會將該名稱當(dāng)做服務(wù)名稱)
spring:
application:
name: order-service
cloud:
nacos:
server-addr: 172.16.10.132:8848 # 服務(wù)地址
discovery:
username: nacos
password: nacos
# namespace: public
# ephemeral: false # 永久實(shí)例 哪怕宕機(jī)了也不會刪除該實(shí)例?
# service: # 默認(rèn)取${spring.application.name}的值,也可以通過該選項(xiàng)配置 服務(wù)名稱
# group: #默認(rèn)DEFAULT_GROUP 分組管理
更多Nacos相關(guān)配置: https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-discovery
(3) 啟動springboot應(yīng)用,nacos管理端界面查看是否成功注冊

(4)代碼
@RestController
@RequestMapping("/order")
public class OrderController {
@Autowired
RestTemplate restTemplate;
@RequestMapping("/add")
public String add() {
System.out.println("下單成功");
String msg = restTemplate.getForObject("http://stock-service/stock/reduct", String.class);
return "Hello World" + msg;
}
}
注意!!! 需要加上@LoadBalanced
@Bean
@LoadBalanced
public RestTemplate restTemplate(RestTemplateBuilder builder){
RestTemplate restTemplate = builder.build();
return restTemplate;
}
(5) 測試

3.Nacos Server 集群部署配置(Windows環(huán)境)
3.1.環(huán)境準(zhǔn)備
(1) jdk1.8+
(2) maven 3.3+
(3) nginx 作為負(fù)載均衡
(4) mysql
- 集群部署架構(gòu)圖

3.2. 配置流程
(1) 復(fù)制 Nacos安裝包,修改為 nacos8840、nacos8850、nacos8860

(2) 以nacos8840為例,進(jìn)入nacos8840目錄
(2.1) 修改conf\application.properties的配置,使用外置數(shù)據(jù)源 要使用mysql5.7+(包括)

(2.2) 將conf\cluster.conf.example復(fù)制一份,并改名為cluster.conf,添加節(jié)點(diǎn)配置

nacos8850,nacos8860 按同樣的方式配置。
(3) 創(chuàng)建mysql數(shù)據(jù)庫,sql文件位置:conf\nacos mysql.sql
(4)如果出現(xiàn)內(nèi)存不足:修改啟動腳本(bin\startup.sh)的jvm參數(shù)

5) 分別啟動nacos8840,nacos8850,nacos8860

(6) 測試,出現(xiàn)以下界面,則表示Nacos集群已創(chuàng)建成功
登錄 http://172.16.10.132:8840/nacos/index.html ,用戶名和密碼都是nacos

(7) 使用Nginx實(shí)現(xiàn)負(fù)載均衡

3.3. 搭建Nacos-client 服務(wù)
(1) 配置同上。
(2) application.yml中配置
server:
port: 8020
# 應(yīng)用名稱 (nacos會將該名稱當(dāng)做服務(wù)名稱)
spring:
application:
name: order-service
cloud:
nacos:
server-addr: 172.16.10.132:8848 # nginx 服務(wù)地址
discovery:
username: nacos
password: nacos
# namespace: public
# ephemeral: false # 永久實(shí)例 哪怕宕機(jī)了也不會刪除該實(shí)例?
# service: # 默認(rèn)取${spring.application.name}的值,也可以通過該選項(xiàng)配置 服務(wù)名稱
# group: #默認(rèn)DEFAULT_GROUP 分組管理
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java平臺調(diào)試體系原理分析和實(shí)踐整理 遠(yuǎn)程Debug
這篇文章主要介紹了Java平臺調(diào)試體系原理分析和實(shí)踐整理 遠(yuǎn)程Debug,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
關(guān)于Spring中@Transactional事務(wù)回滾的注意事項(xiàng)
這篇文章主要介紹了關(guān)于Spring中@Transactional事務(wù)回滾的注意事項(xiàng),回滾(Rollback)指的是程序或數(shù)據(jù)處理錯(cuò)誤,將程序或數(shù)據(jù)恢復(fù)到上一次正確狀態(tài)的行為?;貪L包括程序回滾和數(shù)據(jù)回滾等類型,需要的朋友可以參考下2023-05-05
Android中Handler引起的內(nèi)存泄露問題解決辦法
這篇文章主要介紹了Android中Handler引起的內(nèi)存泄露問題解決辦法,本文講解了導(dǎo)致內(nèi)存泄露的情景,并給出了修改后的代碼,需要的朋友可以參考下2015-01-01
SpringBoot 實(shí)戰(zhàn) 之 優(yōu)雅終止服務(wù)的方法
本篇文章主要介紹了SpringBoot 實(shí)戰(zhàn) 之 優(yōu)雅終止服務(wù)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05
SpringBoot四大神器之Actuator的使用小結(jié)
這篇文章主要介紹了SpringBoot四大神器之Actuator的使用小結(jié),詳細(xì)的介紹了Actuator的使用和端點(diǎn)的使用,有興趣的可以了解一下2017-11-11
SpringBoot項(xiàng)目啟動后自動加載系統(tǒng)配置的多種實(shí)現(xiàn)方式
這篇文章主要介紹了SpringBoot項(xiàng)目啟動后自動加載系統(tǒng)配置的多種實(shí)現(xiàn)方式,并通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2025-01-01

