公司打算重構(gòu)系統(tǒng),于是我來了逢净。 新系統(tǒng)打算采用微服務(wù)的方式搭建哥放,于是,我們需要注冊(cè)中心爹土,之前我用過eureka甥雕,emmm,現(xiàn)在不更新了胀茵,于是PASS社露,然后同事說了下我們的主角:nacos。
簡(jiǎn)單介紹下:
1.注冊(cè)中心:服務(wù)發(fā)現(xiàn)琼娘、注冊(cè)峭弟,與spring cloud eureka類似;
2.配置中心:分布式配置中心脱拼,微服務(wù)架構(gòu)下的服務(wù)可獲取該配置中心的配置孟害,作用與spring cloud config類似;
...
由于我需要的只是這兩個(gè)功能挪拟,還有其他特性請(qǐng)看官網(wǎng)。
1.環(huán)境準(zhǔn)備
Nacos 依賴 Java 環(huán)境來運(yùn)行击你。如果您是從代碼開始構(gòu)建并運(yùn)行Nacos玉组,還需要為此配置 Maven環(huán)境,請(qǐng)確保是在以下版本環(huán)境中安裝使用:
64 bit OS丁侄,支持 Linux/Unix/Mac/Windows惯雳,推薦選用 Linux/Unix/Mac。
2.下載
想要采用maven依賴的形式的同學(xué),目前沒有看到相關(guān)依賴潮孽,不排除以后有此方式啟動(dòng)揪荣。 官網(wǎng)下載源碼:
git clone https://github.com/alibaba/nacos.git
?
//maven編譯
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
當(dāng)然我們?cè)创a啟動(dòng),就不需要編譯了往史。
3.啟動(dòng)
3.1修改數(shù)據(jù)庫(kù)配置:
在console模塊下仗颈,修改application.properties:
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql
?
### Count of DB:
db.num=1
?
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=123456
修改數(shù)據(jù)庫(kù)地址、用戶名椎例、密碼挨决。
3.2 啟動(dòng)
在console模塊下,啟動(dòng)Nacos啟動(dòng)類:
查看日志:
重點(diǎn)來了订歪,默認(rèn)的啟動(dòng)方式是集群?jiǎn)?dòng)脖祈,由于我們沒有進(jìn)行配置,此時(shí)刷晋,服務(wù)注冊(cè)是不成功的:
客戶端注冊(cè)會(huì)報(bào)connect time out錯(cuò)誤盖高!
但是此時(shí),通過http://10.1.2.216:8848/nacos/index.html訪問掏秩,是可以訪問的或舞,但是服務(wù)就是不能注冊(cè)上去。這個(gè)真的是個(gè)大坑蒙幻。
于是我在控制臺(tái)打算手動(dòng)創(chuàng)建一個(gè)服務(wù)映凳,報(bào)錯(cuò),空指針:
Caused by: java.lang.NullPointerException: null
at com.alibaba.nacos.naming.consistency.persistent.raft.RaftCore.signalPublish(RaftCore.java:195)
at com.alibaba.nacos.naming.consistency.persistent.raft.RaftConsistencyServiceImpl.put(RaftConsistencyServiceImpl.java:54)
... 86 common frames omitted
于是邮破,斷點(diǎn):
找到元兇了诈豌,于是改為單機(jī)模式,添加啟動(dòng)項(xiàng) -Dnacos.standalone=true:
啟動(dòng)成功抒和,再看注冊(cè):
注冊(cè)也沒有問題矫渔,nice!
總結(jié)
可以看到摧莽,我們?cè)谀J(rèn)啟動(dòng)的時(shí)候庙洼,走的是集群模式,而且又沒有添加集群配置镊辕,導(dǎo)致找不到leader油够,注冊(cè)訪問失敗。
ps:在源碼啟動(dòng)失敗時(shí)征懈,也嘗試過客戶端跑jar啟動(dòng)(版本1.3.2)石咬,但還是失敗,啟動(dòng)的模式也是集群模式:
報(bào)錯(cuò)是 Unable to start web server, 也沒看出具體問題卖哎,然后改啟動(dòng)腳本鬼悠,改為單機(jī)模式删性,ok!
據(jù)說我同事直接跑cmd腳本沒問題焕窝,然后我一看日志蹬挺,默認(rèn)是單機(jī)啟動(dòng),他的版本是1.3.1袜啃,8天前升1.3.2汗侵,emmm,我這運(yùn)氣群发。晰韵。。