摘要:在搭建集群之前,我們需要先修改的數據持久化配置為存儲。所以,如果啟動多個默認配置下的節點,數據存儲是存在一致性問題的。為了解決這個問題,采用了集中式存儲的方式來支持集群化部署,目前只要支持的存儲。
前情回顧:
《Spring Cloud Alibaba基礎教程:使用Nacos實現服務注冊與發現》
《Spring Cloud Alibaba基礎教程:支持的幾種服務消費方式》
《Spring Cloud Alibaba基礎教程:使用Nacos作為配置中心》
《Spring Cloud Alibaba基礎教程:Nacos配置的加載規則詳解》
《Spring Cloud Alibaba基礎教程:Nacos配置的多環境管理》
《Spring Cloud Alibaba基礎教程:Nacos配置的多文件加載與共享配置》
通過之前幾篇關于Nacos的博文,對于Nacos分別作為服務注冊中心以及配置中心時,與Spring Cloud體系結合的基礎使用方法已經介紹完畢了。下面我們再用幾篇博文從生產部署的角度,介紹Nacos的相關內容。本文我們將具體說說Nacos的數據存儲以及生產配置的推薦。
數據持久化在之前的教程中,我們對于Nacos服務端自身并沒有做過什么特殊的配置,一切均以默認的單機模式運行,完成了上述所有功能的學習。但是,Nacos的單機運行模式僅適用于學習與測試環境,對于有高可用要求的生產環境顯然是不合適的。那么,我們是否可以直接啟動多個單機模式的Nacos,然后客戶端指定多個Nacos節點就可以實現高可用嗎?答案是否定的。
在搭建Nacos集群之前,我們需要先修改Nacos的數據持久化配置為MySQL存儲。默認情況下,Nacos使用嵌入式數據庫實現數據的存儲。所以,如果啟動多個默認配置下的Nacos節點,數據存儲是存在一致性問題的。為了解決這個問題,Nacos采用了集中式存儲的方式來支持集群化部署,目前只要支持MySQL的存儲。
配置Nacos的MySQL存儲只需要下面三步:
第一步:安裝數據庫,版本要求:5.6.5+
第二步:初始化MySQL數據庫,數據庫初始化文件:nacos-mysql.sql,該文件可以在Nacos程序包下的conf目錄下獲得。執行完成后可以得到如下圖所示的表結構:
第三步:修改conf/application.properties文件,增加支持MySQL數據源配置,添加(目前只支持mysql)數據源的url、用戶名和密碼。配置樣例如下:
spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=root db.password=
到這里,Nacos數據存儲到MySQL的配置就完成了,可以嘗試繼續用單機模式啟動Nacos。然后再根據之前學習的Nacos配置中心的用法來做一些操作,配合MySQL工具就可以看到數據已經寫入到數據庫中了。下一篇,我們將繼續
深入思考關于Nacos數據的持久化實現,與其他的中間件相比,在實現上并沒有采用分布式算法來解決一致性問題,而是采用了比較常規的集中化存儲來實現。由于采用單一數據源的方式,直接解決了分布式一致性問題,所以從學習成本的角度上來說,Nacos的實現原理會更容易被理解和接受。但是,從部署的負責度和硬件投入成本上來說,與etcd、consul、zookeeper這些通過算法方式解決一致性問題的中間件相比,就顯得不足了。
同時,在引入MySQL的存儲時,由于多了一個中間件的存在,整個Nacos系統的整體可用性一定是會所有下降的。所以為了彌補可用性的下降,在生產上MySQL的高可用部署也是必須的,成本再次提高。不論如何提高,可用性都難以達到100%,所以這種方式,不論如何提升存儲的可用性,理論上都會對Nacos集群的自身可用性造成微小的下降。
以上思考主要從理論上,粗略討論的,并沒有經過詳細的成本評估與可用性計算。所以,對于實際應用場景下,可能這些成本的增加和可用性的降低并沒有那么多大的影響。同時,Spring Cloud Alibaba下使用的各開源組件都有對應的商業產品,在沒有足夠運維人力的團隊下,使用對應的商業產品可能從各方面都會更加劃算。
參考資料Nacos官方文檔
代碼示例本文介紹內容的客戶端代碼,示例讀者可以通過查看下面倉庫中的alibaba-nacos-config-client項目:
Github:https://github.com/dyc87112/SpringCloud-Learning/
Gitee:https://gitee.com/didispace/SpringCloud-Learning/
如果您對這些感興趣,歡迎star、follow、收藏、轉發給予支持!
以下專題教程也許您會有興趣Spring Boot基礎教程
【新版】Spring Cloud從入門到精通
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73309.html
摘要:之前開放過一臺公益給大家,以方便大家在閱讀我博客中教程時候做實驗。由于目前在連載,所以對應的也部署了一臺,并且也開放出來,給大家學習測試之用。 之前開放過一臺公益Eureka Server給大家,以方便大家在閱讀我博客中教程時候做實驗。由于目前在連載Spring Cloud Alibaba,所以對應的也部署了一臺Nacos,并且也開放出來,給大家學習測試之用。 Nacos控制臺 ...
摘要:通過本文,我們將完成生產環境的搭建。第二步修改文件,增加支持數據源配置,添加目前只支持數據源的用戶名和密碼。另外,的集群需要個或個以上的節點,并且確保這三個節點之間是可以互相訪問的。也可以故意的關閉某個實例,來驗證集群是否還能正常服務。 前情回顧: 《Spring Cloud Alibaba基礎教程:使用Nacos實現服務注冊與發現》 《Spring Cloud Alibaba基礎教...
摘要:通過本文,我們將完成生產環境的搭建。第二步修改文件,增加支持數據源配置,添加目前只支持數據源的用戶名和密碼。另外,的集群需要個或個以上的節點,并且確保這三個節點之間是可以互相訪問的。也可以故意的關閉某個實例,來驗證集群是否還能正常服務。 前情回顧: 《Spring Cloud Alibaba基礎教程:使用Nacos實現服務注冊與發現》 《Spring Cloud Alibaba基礎教...
摘要:所以,在整合了做規則存儲之后,需要知道在下面兩個地方修改存在不同的效果控制臺中修改規則僅存在于服務的內存中,不會修改中的配置值,重啟后恢復原來的值。控制臺中修改規則服務的內存中規則會更新,中持久化規則也會更新,重啟后依然保持。 通過上一篇《使用Sentinel實現接口限流》的介紹,相信大家對Sentinel已經有了初步的認識。在Spring Cloud Alibaba的整合封裝之下,接...
摘要:下面通過這篇,詳細介紹當使用作為配置中心之后,如何實現中修改規則同步到。關于下面改造的原理和分析可以見上一篇中修改規則同步到的頭兩節內容,這里不重復介紹了。但是由于考慮到與的結合使用,略作修改。主要就是中存儲配置的和不要弄錯。 上一篇我們介紹了如何通過改造Sentinel Dashboard來實現修改規則之后自動同步到Apollo。下面通過這篇,詳細介紹當使用Nacos作為配置中心之后...
閱讀 2754·2019-08-30 15:53
閱讀 521·2019-08-29 17:22
閱讀 1038·2019-08-29 13:10
閱讀 2307·2019-08-26 13:45
閱讀 2751·2019-08-26 10:46
閱讀 3201·2019-08-26 10:45
閱讀 2503·2019-08-26 10:14
閱讀 466·2019-08-23 18:23