一、Nacos簡(jiǎn)介
Nacos是以服務(wù)為主要服務(wù)對(duì)象的中間件映屋,Nacos支持所有主流的服務(wù)發(fā)現(xiàn)苟鸯、配置和管理。
Nacos主要提供以下四大功能:
-
服務(wù)發(fā)現(xiàn)與服務(wù)健康檢查
Nacos使服務(wù)更容易注冊(cè)自己并通過(guò)DNS或HTTP接口發(fā)現(xiàn)其他服務(wù)棚点。Nacos還提供服務(wù)的實(shí)時(shí)健康檢查早处,以防止向不健康的主機(jī)或服務(wù)實(shí)例發(fā)送請(qǐng)求。
-
動(dòng)態(tài)配置管理
動(dòng)態(tài)配置服務(wù)允許您在所有環(huán)境中以集中和動(dòng)態(tài)的方式管理所有服務(wù)的配置瘫析。Nacos消除了在更新配置時(shí)重新部署應(yīng)用程序和服務(wù)的需要砌梆,這使配置更改更加高效和靈活。
動(dòng)態(tài)DNS服務(wù)
Nacos支持加權(quán)路由颁股,使您可以更輕松地在數(shù)據(jù)中心的生產(chǎn)環(huán)境中實(shí)施中間層負(fù)載平衡么库,靈活的路由策略,流量控制和簡(jiǎn)單的DNS解析服務(wù)甘有。它可以幫助您輕松實(shí)現(xiàn)基于DNS的服務(wù)發(fā)現(xiàn)诉儒,并防止應(yīng)用程序耦合到特定于供應(yīng)商的服務(wù)發(fā)現(xiàn)API。
- 服務(wù)和元數(shù)據(jù)管理
Nacos提供易于使用的服務(wù)儀表板亏掀,可幫助您管理服務(wù)元數(shù)據(jù)忱反,配置泛释,kubernetes DNS,服務(wù)運(yùn)行狀況和指標(biāo)統(tǒng)計(jì)温算。
1.1 Nacos總體概況
1.2 Nacos架構(gòu)
二怜校、注冊(cè)中心與配置中心橫向?qū)Ρ?/h1>
2.1 Nacos與eureka注冊(cè)中心對(duì)比
對(duì)比項(xiàng)目\注冊(cè)中心 | Spring Cloud Nacos | Spring Cloud Eureka |
---|---|---|
CAP模型 | 支持AP和CP模型 | AP模型 |
客戶端更新服務(wù)信息 | 使用注冊(cè)+DNS-f+健康檢查模式。 DNS-F客戶端使用監(jiān)聽(tīng)模式push/pull拉取更新信息 | 客戶端定時(shí)輪詢(xún)服務(wù)端獲取其他服務(wù)ip信息并對(duì)比注竿,相比之下服務(wù)端壓力較大茄茁、延遲較大 |
伸縮性 | 使用Raft選舉算法性能、可用性巩割、容錯(cuò)性均比較好裙顽,新加入節(jié)點(diǎn)無(wú)需與所有節(jié)點(diǎn)互相廣播同步信息 | 由于使用廣播同步信息,集群超過(guò)1000臺(tái)機(jī)器后對(duì)eureka集群壓力很大 |
健康檢查模式/方式 | 支持服務(wù)端/客戶端/關(guān)閉檢查模式宣谈,檢查方式有tcp愈犹、http、sql闻丑。支持自己構(gòu)建健康檢查器 | 客戶端向服務(wù)端發(fā)送http心跳 |
負(fù)載均衡 | 支持 | 支持 |
手動(dòng)上下線服務(wù)方式 | 通過(guò)控制臺(tái)頁(yè)面和API | 通過(guò)調(diào)用API |
跨中心同步 | 支持 | 不支持 |
k8s集成 | 支持 | 不支持 |
分組 | Nacos可用根據(jù)業(yè)務(wù)和環(huán)境進(jìn)行分組管理 | 不支持 |
權(quán)重 | Nacos默認(rèn)提供權(quán)重設(shè)置功能漩怎,調(diào)整承載流量壓力 | 不支持 |
廠商 | 阿里巴巴 | Netflix |
2.2服務(wù)配置中心對(duì)比
對(duì)比項(xiàng)目/配置中心 | apollo | nacos |
---|---|---|
開(kāi)源時(shí)間 | 2016.5 | 2018.6 |
配置實(shí)時(shí)推送 | 支持(HTTP長(zhǎng)輪詢(xún)1s內(nèi)) | 支持(HTTP長(zhǎng)輪詢(xún)1s內(nèi)) |
版本管理 | 自動(dòng)管理 | 自動(dòng)管理 |
配置回滾 | 支持 | 支持 |
權(quán)限管理 | 支持 | 待支持 |
多集群多環(huán)境 | 支持 | 支持 |
監(jiān)聽(tīng)查詢(xún) | 支持 | 支持 |
多語(yǔ)言 | Go,C++,Python,Java,.net,OpenAPI | Python,Java,Nodejs,OpenAPI |
分布式高可用最小集群數(shù)量 | Config2+Admin3+Portal*2+Mysql=8 | Nacos*3+MySql=4 |
配置格式校驗(yàn) | 支持 | 支持 |
通信協(xié)議 | HTTP | HTTP |
數(shù)據(jù)一致性 | 數(shù)據(jù)庫(kù)模擬消息隊(duì)列,Apollo定時(shí)讀消息 | HTTP異步通知 |
單機(jī)讀(tps) | 9000 | 15000 |
單機(jī)寫(xiě)(tps) | 1100 | 1800 |
nacos具有Apollo大部分功能嗦嗡,最重要的是配置中心與注冊(cè)中心打通勋锤,可以省去我們?cè)谖⒎?wù)治理方面 的一些投入(比如通過(guò)動(dòng)態(tài)配置來(lái)啟停線程池等操作)。
2.3 初步選型結(jié)論
初步結(jié)論為:使用Nacos代替Eureka和apollo酸钦,主要理由為:
相比與Eureka:
(1)Nacos具備服務(wù)優(yōu)雅上下線和流量管理(API+后臺(tái)管理頁(yè)面)怪得,而Eureka的后臺(tái)頁(yè)面僅供展示,需要使用api操作上下線且不具備流量管理功能卑硫。
(2)從部署來(lái)看,Nacos整合了注冊(cè)中心蚕断、配置中心功能欢伏,把原來(lái)兩套集群整合成一套,簡(jiǎn)化了部署維護(hù)
(3)從長(zhǎng)遠(yuǎn)來(lái)看亿乳,Eureka開(kāi)源工作已停止硝拧,后續(xù)不再有更新和維護(hù),而Nacos在以后的版本會(huì)支持SpringCLoud+Kubernetes的組合葛假,填補(bǔ) 2 者的鴻溝障陶,在兩套體系下可以采用同一套服務(wù)發(fā)現(xiàn)和配置管理的解決方案,這將大大的簡(jiǎn)化使用和維護(hù)的成本聊训。同時(shí)來(lái)說(shuō),Nacos 計(jì)劃實(shí)現(xiàn) Service Mesh抱究,是未來(lái)微服務(wù)的趨勢(shì)
(4)從伸縮性和擴(kuò)展性來(lái)看Nacos支持跨注冊(cè)中心同步,而Eureka不支持带斑,且在伸縮擴(kuò)容方面鼓寺,Nacos比Eureka更優(yōu)(nacos支持大數(shù)量級(jí)的集群)勋拟。
(5)Nacos具有分組隔離功能,一套Nacos集群可以支撐多項(xiàng)目妈候、多環(huán)境敢靡。
相比于apollo
(1) Nacos部署簡(jiǎn)化,Nacos整合了注冊(cè)中心苦银、配置中心功能啸胧,且部署相比apollo簡(jiǎn)單,方便管理和監(jiān)控幔虏。
(2) apollo容器化較困難纺念,Nacos有官網(wǎng)的鏡像可以直接部署,總體來(lái)說(shuō)所计,Nacos比apollo更符合KISS原則
(3)性能方面柠辞,Nacos讀寫(xiě)tps比apollo稍強(qiáng)一些
結(jié)論:使用Nacos代替Eureka和apollo
三、Nacos其他特性
3.1 Nacos Sync的價(jià)值
- NacosSync是一個(gè)支持多種注冊(cè)中心的同步組件,基于Spring boot開(kāi)發(fā)框架,數(shù)據(jù)層采用Spring Data JPA,遵循了標(biāo)準(zhǔn)的JPA訪問(wèn)規(guī)范,支持多種數(shù)據(jù)源存儲(chǔ),默認(rèn)使用Hibernate實(shí)現(xiàn),更加方便的支持表的自動(dòng)創(chuàng)建更新
- 使用了高效的事件異步驅(qū)動(dòng)模型, 支持多種自定義事件,使得同步任務(wù)處理的延時(shí)控制在3s,8C16G的單機(jī)能夠支持6K的同步任務(wù)
- NacosSync除了單機(jī)部署,也提供了高可用的集群部署模式,NacosSync是無(wú)狀態(tài)設(shè)計(jì),將任務(wù)等狀態(tài)數(shù)據(jù)遷移到了數(shù)據(jù)庫(kù),使得集群擴(kuò)展非常方便
- 抽象出了Sync組件核心接口,通過(guò)注解對(duì)同步類(lèi)型進(jìn)行區(qū)分,使得開(kāi)發(fā)者可以很容易的根據(jù)自己需求,去擴(kuò)展不同注冊(cè)中心,目前已支持的同步類(lèi)型:
- Nacos數(shù)據(jù)同步到Nacos
- Zookeeper數(shù)據(jù)同步到Nacos
- Nacos數(shù)據(jù)同步到Zookeeper
- Eureka數(shù)據(jù)同步到Nacos
- Consul數(shù)據(jù)同步到Nacos
系統(tǒng)模塊架構(gòu)
使用場(chǎng)景
多個(gè)網(wǎng)絡(luò)互通的Region之間服務(wù)共享,打破Region之間的服務(wù)調(diào)用限制
3.2 DNS - F 的技術(shù)價(jià)值
Nacos提供DNS-F功能
DNS-F落地的技術(shù)價(jià)值
- 填補(bǔ)了內(nèi)部微服務(wù)業(yè)務(wù)沒(méi)有全局動(dòng)態(tài)調(diào)度能力的空白
- 解決了服務(wù)端棉鈴挑戰(zhàn):時(shí)延大主胧、解析不準(zhǔn)叭首、故障牽引慢
- 支持服務(wù)端多種調(diào)度需要
- 加速外部域名解析
- 服務(wù)故障牽引秒級(jí)生效
-
提供專(zhuān)線流量牽引能力
3.3 目前使用Nacos的公司
阿里巴巴、虎牙直播踪栋、中國(guó)工商銀行焙格、愛(ài)奇藝、中國(guó)平安夷都、平安科技眷唉、浙江農(nóng)信、貝殼囤官、豐巢冬阳、百世快遞、汽車(chē)之家等