文件名稱 | 版本號 | 作者 | 版本 | |
---|---|---|---|---|
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基礎設施搭建;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.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