一、概述
1、簡介
一個更易於構建雲原生應用的動態服務發現、配置管理和服務管理平臺,可以替代Eureka做服務配置中心,替代Config做服務配置中心。官方文檔地址:https://nacos.io/en-us/docs/quick-start.html 。
2、安裝運行
本地環境首先需要安裝好JDK1.8及以上,以及Maven,然後下載nacos。v1.2下載地址:https://github.com/alibaba/nacos/releases/tag/1.2.0 。根據系統版本下載完成後,解壓,運行。瀏覽器地址欄輸入 http://localhost:8848/nacos 看到以下界面便安裝成功。
二、服務註冊
1、新建一個模塊,在pom中加入以下依賴;
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--引入自己定義的包-->
<dependency>
<groupId>com.xhanglog.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<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>
<!--熱部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2、配置application.yml文件;
server:
port: 9001
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置nacos地址
management:
endpoints:
web:
exposure:
include: "*"
3、主啓動類加上註解
@SpringBootApplication
@EnableDiscoveryClient
4、先啓動nacos,然後啓動服務提供者,打開nacos可以發現服務註冊成功,如下圖:
三、服務註冊中心
1、基礎配置
-
新建一個項目,在pom中引入以下依賴;
<dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--引入自己定義的包--> <dependency> <groupId>com.xhanglog.springcloud</groupId> <artifactId>cloud-api-commons</artifactId> <version>${project.version}</version> </dependency> <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> <!--熱部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
-
在配置文件bootstrap.yml中配置以下內容;
# nacos 配置 server: port: 3377 spring: application: name: nacos-config-client cloud: nacos: discovery: server-addr: localhost:8848 #nacos服務地址 config: server-addr: localhost:8848 #nacos作爲註冊中心地址 file-extension: yaml #指定yaml格式peizhi
-
配置application.yml文件;
spring: profiles: active: dev #表示開發環境
-
在nacos中添加配置,其讀取配置的規則爲{spring.profile.active}.${sping.cloud.nacos.config.server-addr.file-extension},具體配置如下圖:
-
在業務類要加上註解
@RefreshScope
開啓動態刷新。
2、分類配置
-
方式一:配置DataID
指定spring.profile.active和配置文件文件的DataID來使不同環境讀取不同的配置,即默認空間+默認分組+不同的DataID。
-
方式二:配置Group
將相同的DataID放入不同的組,只需要在bootstrap.yml的
config
下加上配置group
指定組名稱即可。 -
方式三:配置命名空間
建立不同的命名空間,在bootstrap.yml的
config
下加上配置namespace
指定要使用的空間。四、LInux中集羣和持久化
1、集羣部署示意圖:
2、初始化 MySQL 數據庫,下載SQL語句源文件,下載地址:https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql ;
3、修改nacos的conf目錄下的application.properties文件,添加以下內容;
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://1.1.1.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=user
db.password=password
3、配置集羣配置文件cluster.conf,每行配置成ip:port(這個IP不能爲127.0.0.1,必須是linux的hostname -i
能夠識別的IP),配置3個或3個以上節點。如:
# ip:port
200.8.9.16:8848
200.8.9.17:8848
200.8.9.18:8848
4、編輯nacos的啓動腳本,使它能夠接受不同的啓動端,修改內容如下圖;
修改後的客戶端啓動命令爲./startup.sh -p 端口號
。
5、配置Nginx,修改Nginx的配置文件nginx.conf,修改內容如下:
upstream cluster{
server 上面配置的ip:端口號;
server 上面配置的ip:端口號;
server 上面配置的ip:端口號;
}
server{
listen nginx的端口號;
server_name localhost;
location /{
proxy_pass http://cluster;
}
}
案例代碼地址:https://github.com/xhanglog/springcloud-learning