.net做的大型網(wǎng)站嗎百度搜索排名
最近在做一個雙活的項(xiàng)目,在糾結(jié)一個注冊中心是在雙活機(jī)房都準(zhǔn)備一個,那主機(jī)房的數(shù)據(jù)如果傳過去呢,查了一些資料,最終在官網(wǎng)查到了一個NacosSync 的組件,主要用來做數(shù)據(jù)傳輸?shù)?#xff0c;并且支持在線替換注冊中心的,下來我摘抄一下遷移的流程。原文:
NacosSync 用戶手冊,在查到這個文檔的時(shí)候發(fā)現(xiàn)nacos也有restful的api,方便可以結(jié)合前端組件進(jìn)行注冊中心的數(shù)據(jù)遷移到內(nèi)管上,避開上線流程的約束。
準(zhǔn)備工作
啟動服務(wù)之前,你需要安裝下面的服務(wù):
- 64bit OS: Linux/Unix/Mac/Windows supported, Linux/Unix/Mac recommended.
- 64bit JDK 1.8+: downloads, JAVA_HOME settings.
- Maven 3.2.x+: downloads, settings.
- MySql 5.6.+
獲取安裝包
有兩種方式可以獲得 NacosSync 的安裝包:
- 直接下載 NacosSync 的二進(jìn)制安裝包:nacosSync.${version}.zip
- 從 GitHub 上下載 NacosSync 的源碼進(jìn)行構(gòu)建
Package:
cd nacosSync/
mvn clean package -U
目標(biāo)文件的路徑:
nacos-sync/nacossync-distribution/target/nacosSync.${version}.zip
解壓安裝包之后,工程的文件目錄結(jié)構(gòu):
解釋nacosSync
├── LICENSE
├── NOTICE
├── bin
│ ├── nacosSync.sql
│ ├── shutdown.sh
│ └── startup.sh
├── conf
│ ├── application.properties
│ └── logback-spring.xml
├── logs
└── nacosSync-server.${version}.jar
初始化數(shù)據(jù)庫
系統(tǒng)默認(rèn)配置的數(shù)據(jù)庫是Mysql,也能支持其他的關(guān)系型數(shù)據(jù)庫。 1.建庫,缺省的數(shù)據(jù)庫名字為“nacos_Sync”。 2.數(shù)據(jù)庫表不需要單獨(dú)創(chuàng)建,默認(rèn)使用了hibernate的自動建表功能。 3.如果你的環(huán)境不支持自動建表,可以使用系統(tǒng)自帶的sql腳本建表,腳本放在bin目錄下。
數(shù)據(jù)庫配置
數(shù)據(jù)庫的配置文件放在conf/application.properties
中:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/nacos_sync?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
啟動服務(wù)器
$ nacosSync/bin:
sh startup.sh restart
檢查系統(tǒng)狀態(tài)
1.檢查系統(tǒng)日志
日志的路徑在nacosSync/logs/nacosSync.log
,檢查是否有異常信息。
2.檢查系統(tǒng)端口
缺省的系統(tǒng)端口是8081
,你可以自己定義在application.properties
中。
$netstat -ano|grep 8081
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN off (0.00/0/0)
控制臺
訪問路徑:
http://127.0.0.1:8081/#/serviceSync
如果檢查沒有問題,NacosSync 已經(jīng)正常啟動了,NacosSync 的部署結(jié)構(gòu):
開始遷移
遷移信息
Dubbo服務(wù)的部署信息:
遷移的服務(wù):
Service Name | Version | Group Name |
---|---|---|
com.alibaba.nacos.api.DemoService | 1.0.0 | zk |
添加注冊中心集群信息
1.點(diǎn)擊左側(cè)導(dǎo)航欄中的“集群配置”按鈕,新增加一個集群,先增加一個Zookeeper集群,選擇集群類型為ZK。
注意:集群名字可以自定義,但是一旦確認(rèn),不能被修改,否則基于此集群增加的任務(wù),在 NacosSync 重啟后,將不會恢復(fù)成功。
2.同樣的步驟,增加NacosSync集群。
3.添加完成后,可以在列表中查詢到:
添加同步任務(wù)
1.增加一個同步任務(wù),從Zookeeper集群同步到Nacos集群,同步的粒度是服務(wù),Zookeeper集群則稱為源集群,Nacos集群稱為目標(biāo)集群。
添加完成之后,可以在服務(wù)同步列表中,查看已添加的同步任務(wù):
2.同步完成之后,檢查下數(shù)據(jù)是否同步成功到Nacos集群,可以通過Nacos的控制臺進(jìn)行查詢。
3.此刻,數(shù)據(jù)已經(jīng)成功從Zookeeper集群同步到了Nacos集群,部署結(jié)構(gòu)如下:
Dubbo 客戶端連接到 Nacos 注冊中心
Dubbo Consumer客戶端遷移
Dubbo 已經(jīng)支持Nacos注冊中心,支持的版本為2.5+,需要增加一個Nacos注冊中心的Dubbo擴(kuò)展插件依賴:
解釋<dependency><groupId>com.alibaba</groupId><artifactId>dubbo-registry-nacos</artifactId><version>0.0.2</version>
</dependency>
增加Nacos客戶端的依賴:
解釋<dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>0.6.2</version>
</dependency>
配置Dubbo Consumer的Dubbo配置文件consumer.yaml
,讓客戶端能夠找到Nacos集群。
解釋spring:application:
name: dubbo-consumer
demo:service:version: 1.0.0group: zk
dubbo:registry:address: nacos://127.0.0.1:8848
不需要修改代碼,配置更新完畢之后,你就可以重啟你的應(yīng)用,使之生效了。
Consumer發(fā)布完成之后,目前的部署結(jié)構(gòu)如下:
Dubbo Provider遷移
在升級Provider之前,你需要確保該P(yáng)rovider發(fā)布的服務(wù),都已經(jīng)配置在 NacosSync 中,同步的方式為從Nacos同步到Zookeeper,因?yàn)镻rovider升級連接到Nacos之后,需要確保老的Dubbo Consumer客戶端能夠在Zookeeper上訂閱到該P(yáng)rovider的地址,現(xiàn)在,我們增加一個同步任務(wù):
注意:Nacos服務(wù)同步到Zookeeper,不需要填寫版本號,你在選擇源集群的時(shí)候,版本號的輸入框會自動隱藏掉。
同步任務(wù)完成后,你就可以升級Provider了,升級Provider的方法,參考升級Consumer的步驟。
新的部署結(jié)構(gòu)
- 在升級的過程中,會有新老版本的客戶端同時(shí)存在,部署結(jié)構(gòu)如下:
- 所有的客戶端遷移完成之后,部署結(jié)構(gòu)如下:
現(xiàn)在,Zookeeper集群,NacosSync集群就可以下線了。
注意事項(xiàng)
- 同步任務(wù)添加之后,需要確保下服務(wù)是否成功同步到目標(biāo)集群,可以通過目標(biāo)集群的控制臺進(jìn)行查詢。
- NacosSync 支持高可用集群模式部署,你只需要把數(shù)據(jù)庫配置成同一個即可。
- 如果梳理不清楚訂閱和發(fā)布的服務(wù),建議可以把服務(wù)都做雙向同步。
- Dubbo 客戶端目前不支持 Nacos 的權(quán)重功能,如果你用到了權(quán)重功能,需要重新考慮一下方案是否合適