玩轉Nacos_v0.0.2

文件名稱 版本號 作者 qq 版本
Nacos學習 v0.0.2 學生宮布 8416837 SpringCloud H
Nacos 1.1.4
mysql 8

建議

  • 發佈配置時,附帶發佈說明。比如,新增了xx過濾器
    在這裏插入圖片描述

簡介

查看Nacos文檔

部署

安裝包部署

下載

點擊下載
https://github.com/alibaba/nacos/releases/download/1.1.4/nacos-server-1.1.4.tar.gz

tar xvzf 文件 -C 目錄 # 解壓
cd 根目錄
sh bin/startup.sh -m standalone # 單機啓動
tail -f logs/start.out -n 500 # 查看啓動日誌

在這裏插入圖片描述

預覽

http://192.168.4.152:8848/nacos/index.html 訪問
初始用戶名密碼:nacos=nacos
在這裏插入圖片描述

Docker部署

docker search nacos
docker pull nacos/nacos-server

在這裏插入圖片描述

  • 無mysql版啓動命令
docker run -d \
--name nacos-server \
--network common-network \
-e PREFER_HOST_MODE=hostname \
-e MODE=standalone \
-p 8848:8848 \
nacos/nacos-server

執行:
在這裏插入圖片描述
因爲沒有自定義網絡,去掉網絡參數,並且刪除啓動失敗的容器,再次執行:

docker run -d \
--name nacos-server \
-e PREFER_HOST_MODE=hostname \
-e MODE=standalone \
-p 8848:8848 \
nacos/nacos-server

刪除原來的:
在這裏插入圖片描述
檢查啓動情況:
在這裏插入圖片描述
先開放端口或關閉防火牆,然後在內網訪問nacos,賬號密碼都是:nacos:
在這裏插入圖片描述
啓動成功。

  • mysql版
docker run -d \
--name nacos-server \
--network common-network \
-e PREFER_HOST_MODE=hostname \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_MASTER_SERVICE_HOST=mysql-master \
-e MYSQL_MASTER_SERVICE_PORT=3306 \
-e MYSQL_MASTER_SERVICE_USER=root \
-e MYSQL_MASTER_SERVICE_PASSWORD=Passw0rd \
-e MYSQL_MASTER_SERVICE_DB_NAME=nacos \
-e MYSQL_SLAVE_SERVICE_HOST=mysql-slave \
-e MYSQL_SLAVE_SERVICE_PORT=3306 \
-p 8848:8848 \
nacos/nacos-server

配置

持久化

準備

根據源碼創建配置數據庫:ry-config
創建好表之後,再進行下一步:

mysql

配置文件(節選):
改成你自己的內網ip:

# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_SERVER_PORT:8848}
spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:mysql}
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${MYSQL_DATABASE_NUM:1}
db.url.0=jdbc:mysql://192.168.59.1:${MYSQL_SERVICE_PORT:3307}/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=GMT%2B8
db.user=${MYSQL_SERVICE_USER:root}
db.password=${MYSQL_SERVICE_PASSWORD:root}
### The auth system to use, currently only 'nacos' is supported:
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}

如果是mysql8 server,請增加插件:

cd nacos根目錄
mkdir -p plugins/mysql
# 將文件mysql-connector-java-8.x.jar放進mysql目錄

下載mysql-connector-java-8.x.jar
重啓,觀察Nacos日誌:
mysql8連接成功,特別提示:
在這裏插入圖片描述
sql節選:

上文有講,將sql(sql裏包含了配置信息)寫入數據庫,啓動完畢,即可在Nacos配置中心看到配置列表:
在這裏插入圖片描述
然後將配置文件改爲實際配置,點擊發布按鈕即可。

推送配置

命令行式
Demo
curl -X POST "http://192.168.4.152:8848/nacos/v1/cs/configs?dataId=nacos-config-example.properties&group=DEFAULT_GROUP&content=user.id=9527%0Auser.name=John%0Auser.age=136"

在UI查看剛纔的推送,成功
在這裏插入圖片描述

更改代碼裏的配置
通過接口
  • 單體項目式
  • SpringCloud式

Java類:

package test.rest;

import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 功能:
 *
 * @author: cc
 * @qq: 8416837
 * @date: 2020/4/4 20:41
 */
@RestController
@RequestMapping("/test")
public class TestController {

	@Autowired
	Environment environment;

	@Value("${app.user.name}")
	String name;

	@GetMapping("/resource")
	public ResponseEntity getResource() {
		JSONObject data = new JSONObject();
		data.put("name", name);
		data.put("serverPort", environment.getProperty("server.port"));

		return new ResponseEntity(data, HttpStatus.OK);
	}
}

訪問這個接口
在這裏插入圖片描述
新建Nacos配置
然後發佈,配置並沒起效。配置Data ID改爲:blade-dev.yaml就起效了。
在這裏插入圖片描述
日誌:

2020-04-04 23:53:05.942  INFO 23628 --- [.168.1.107_8848] c.a.c.n.c.NacosPropertySourceBuilder     : Loading nacos data, dataId: 'blade-dev.yaml', group: 'DEFAULT_GROUP', data: app:
  user:
    name: CC
2020-04-04 23:53:05.943  INFO 23628 --- [.168.1.107_8848] b.c.PropertySourceBootstrapConfiguration : Located property source: [BootstrapPropertySource {name='bootstrapProperties-blade-dev.yaml'}, BootstrapPropertySource {name='bootstrapProperties-blade.yaml'}, BootstrapPropertySource {name='bootstrapProperties-blade'}]
2020-04-04 23:53:05.956  INFO 23628 --- [.168.1.107_8848] o.s.boot.SpringApplication               : The following profiles are active: dev
2020-04-04 23:53:05.981  INFO 23628 --- [.168.1.107_8848] o.s.boot.SpringApplication               : Started application in 1.789 seconds (JVM running for 355.194)
2020-04-04 23:53:06.157  INFO 23628 --- [.168.1.107_8848] o.s.c.e.event.RefreshEventListener       : Refresh keys changed: [app.user.name]

至於Data ID爲什麼要配置成blade-dev.yaml?因爲Data ID必須是spring.cloud.nacos.config.prefix{spring.cloud.nacos.config.prefix}-{spring.profiles.active}.yaml.如:

		props.setProperty("spring.cloud.nacos.config.prefix", "blade");
        props.setProperty("spring.cloud.nacos.config.file-extension", "yaml");

因爲prefix被預置成了blade。

小貼士
如果指定了yaml配置,就算再Nacos控制檯勾選非yaml,也是可以的:
在這裏插入圖片描述
但是配置ID寫成yml就不起效,很嚴格,如:
在這裏插入圖片描述
不完全匹配就不會起效。

註冊中心

依賴包

  • 服務發現包
    Nacos服務端是高版本,如1.1.4
			<dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>2.1.0.RELEASE</version>
            </dependency>
  • 註冊成功日誌
    啓動項目中,打印
nacos registry, DEFAULT_GROUP jxbd-gateway-authentication-chengchong 192.168.59.1:10010 register finished

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章