成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

五分鐘技術趣談 | 淺析Nacos注冊中心

開發 架構
本文主要從服務演進的角度介紹一種微服務管理的組件。

Part 01

單體架構到微服務  


在web程序發展的早期,功能模塊都是被打包成單體應用,在一個web容器中運行,這個應用通常包含后端的所有模塊和前端,后端所有功能模塊訪問同一個數據庫。這樣的好處是開發效率高、易部署、易測試等。

圖片

圖1 單體架構

但隨著大規模的復雜應用出現,單體應用展現出了很多不足,包括:可維護性變差、版本迭代速度變慢、可擴展能力差等。

微服務架構的出現,解決了上述問題,微服務架構與單體應用的區別是,微服務架構是將一個龐大復雜的應用分解為多個小的互相鏈接的微服務,一個微服務一般只完成一類相關功能,比如:商品、訂單,每個服務可能有自己獨立的數據庫。

圖片

圖2 微服務架構

Part 02

注冊中心的演變  

在微服務架構中,不同服務間免不了要相互通信,這就需要對這些服務信息進行管理,主要包括:服務的生產方、服務的消費方,服務方的物理位置等。如果微服務是部署在固定的機器上的,直接通過代碼就可以進行服務間調用,但實際情況是微服務可能部署在云環境,服務實例的網絡位置是動態分配的;此外根據實際負載情況部署節點也會動態調整,基于以上問題就需要一個服務管理工具,幫助我們實現服務的動態管理。

對于小體量的微服務,早期Nginx 就可以滿足服務管理的需求,具體是通過Nginx維護服務列表(upStream)實現。但隨著微服務數量的增多,吞吐量下降會很嚴重,Nginx配置文件維護起來也更加困難。

這時出現了注冊中心,微服務先注冊到注冊中心,如果服務1想調用服務2,需要先到服務中心去獲取相應接口,然后再去調用服務2,這樣就解決了上邊動態網絡位置的問題,最簡單的Nacos注冊中心如下所示:

圖片

圖3 Nacos注冊中心

Part 03

Nacos的服務發現 

那么Nacos協調服務之間的調用細節是怎樣的呢?首先服務需要注冊,注冊的目的就是將服務ip、端口等信息上報給Nacos注冊中心;然后是服務訂閱,訂閱和退訂的目的是方便動態管理需要相互通信的服務,實現高效交互;最后是服務調用,至此完成了一個具體功能,具體實現過程如下:

1、每個服務啟動后會向Nacos注冊中心上報自己的網絡地址,服務和Nacos間通過grpc協議進行通信,Nacos通過域名解析出服務端ip列表,這個ip列表就是服務網絡地址的數據庫,Nacos會選擇其中一個ip創建 grpc 連接,并定時檢查連接狀態,當連接斷開,則自動選擇服務端ip列表中的下一個ip進行重連。

2、當客戶端發起訂閱時,注冊中心除了會同步返回最新的服務實例列表,還會異步的通過grpc推送給該訂閱者最新的服務實例列表,這樣做的目的是為了異步更新客戶端本地緩存的服務數據,一旦訂閱的服務有上下線變更,該服務所有的訂閱者會立刻收到最新的服務列表,并且將服務最新的實例數據更新到內存。

3、當客戶端進行服務調用的時候,訂閱者可以通過本地維護的服務列表獲取實例,或者直接從注冊中心獲取進行調用。

圖片

圖4 Nacos服務發現

Part 04

Nacos的核心功能 

圖片

圖5 Nacos核心功能

除了上文提到的服務注冊和服務發現功能,Nacos的核心功能還包括心跳機制、服務同步和健康檢查。

1、心跳機制

服務注冊后,Nacos會為該服務分配一個心跳間隔,客戶端需要在該時間間隔內發送心跳包,證明服務健康狀態,如果客戶端在規定時間內沒有發送心跳包,Nacos認為該服務已下線,會從服務列表中將該服務移除,從而保障系統穩定性。

2、服務同步

Nacos Server集群之間會互相同步已注冊的服務,用來保證服務列表的一致性。Nacos自己實現了一個一致性協議名為Distro,服務注冊的時候會觸發Distro一次同步,每個Nacos節點之間會定時互相發送Distro數據,以此保證數據最終一致。

3、服務健康檢查

Nacos Server會開啟一個定時任務用來檢查注冊服務實例的健康情況,對于超過15秒沒有收到客戶端心跳的服務實例,會將它的healthy屬性置為false,客戶端無法調用healthy為false的服務,如果超過30秒沒有收到心跳,Nacos會直接將此服務剔除。

Part 05

Nacos的其他情況 

常見的注冊中心組件有:Zookeeper、Eureka、Nacos、Consul等,下表為目前幾個主流注冊中心的情況對比:

圖片圖片

Nacos支持注冊中心和配置中心,但對于小型項目來說,使用 Nacos 可能會過于復雜,不太適合初學者使用;Zookeeper用的最多的地方就是和Dubbo一起使用,不支持負載均衡策略,但可以通過其它組件實現,從性能上來講,zookeeper 也無法滿足注冊中心大規模且頻繁注冊寫的場景;Eureka通過去中心化的集群支持保證了注冊中心的整體可用性,因為停更的緣故,不支持一些新技術,同時Eureka屬于應用內的注冊方式,對應用的侵入性太強,且只支持Java應用。

Part 06

 總結 

Nacos自從阿里集團內配置中心 Diamond 孵化而來,發展至今,憑借其架構與性能優勢,已愈來愈受到眾廠商的青睞。依托其完善的社區環境,Nacos構建了龐大而成熟的生態,已成為服務發現解決方案領域中至關重要的一員。

責任編輯:龐桂玉 來源: 移動Labs
相關推薦

2023-09-17 17:51:43

Android 14

2023-08-06 06:55:29

數字可視化物聯網

2023-09-18 07:10:48

限流算法

2023-07-23 18:47:59

Docker開源

2023-07-16 18:49:42

HTTP網絡

2023-08-29 07:02:09

3D

2023-04-15 20:25:23

微前端

2023-07-02 16:09:57

人工智能人臉識別

2023-07-02 16:34:06

GPU虛擬化深度學習

2023-07-31 08:55:15

AI技術網絡暴力

2023-07-12 15:50:29

機器學習人工智能

2024-12-18 14:10:33

2023-08-29 06:50:01

Javamaven

2023-07-12 16:03:37

Android開發架構

2023-08-15 14:46:03

2023-08-06 07:00:59

Openstack網絡

2023-09-03 19:21:07

大數據架構

2023-07-12 16:13:01

2023-09-02 20:22:42

自動化測試軟件開發

2023-04-15 20:33:35

圖形數據庫數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久久久久毛片 | 国产91丝袜在线播放 | 羞羞色影院 | 欧美三级免费观看 | 免费在线观看av网址 | 精品无码久久久久久国产 | 91综合网| 欧美午夜激情在线 | 亚洲小说图片 | 久草欧美视频 | 天天玩夜夜操 | 国产一区二区三区四区hd | 国产麻豆乱码精品一区二区三区 | 成人免费毛片在线观看 | 九九在线视频 | 欧洲在线视频 | 美女在线一区二区 | 久久精品欧美电影 | 欧美视频一区二区三区 | 久久久久久久久久久久一区二区 | 老外黄色一级片 | 一本大道久久a久久精二百 欧洲一区二区三区 | 日本免费在线 | 欧美精品一区二区免费 | 中文字幕在线观看视频网站 | 性一交一乱一透一a级 | av天天操 | 中文字幕不卡在线观看 | 九九视频在线观看视频6 | 国产精品国产精品国产专区不卡 | 北条麻妃视频在线观看 | 国产精品国产自产拍高清 | 91精品国产综合久久久久 | 欧美成人久久 | 亚州综合在线 | 青青草视频网 | 韩国毛片一区二区三区 | 日本欧美视频 | 成人影| 国产精品福利久久久 | 精品久久久久一区二区国产 |