Dsl28資訊網(wǎng)——每日最新資訊28at.com
大家好,我是哪吒。Dsl28資訊網(wǎng)——每日最新資訊28at.com
很多人都說現(xiàn)在是云原生、大模型的時代,微服務(wù)已經(jīng)過時了,但現(xiàn)實(shí)的是,很多人開發(fā)多年,都沒有在實(shí)際的開發(fā)中用過微服務(wù),更別提搭建微服務(wù)框架和技術(shù)選型了。Dsl28資訊網(wǎng)——每日最新資訊28at.com
面試的時候都會問,怎么辦?Dsl28資訊網(wǎng)——每日最新資訊28at.com
今天分享一張微服務(wù)的丐版架構(gòu)圖,讓你可以和面試官掰扯掰扯~Dsl28資訊網(wǎng)——每日最新資訊28at.com
腦中有圖,口若懸河,一套組合拳下來,面試官只能拍案叫好,大呼快哉,HR更是驚呼,我勒個乖乖,完全聽不懂。Dsl28資訊網(wǎng)——每日最新資訊28at.com
話不多說,直接上圖。Dsl28資訊網(wǎng)——每日最新資訊28at.com
Dsl28資訊網(wǎng)——每日最新資訊28at.com
由此可見,Spring Cloud微服務(wù)架構(gòu)是由多個組件一起組成的,各個組件的交互流程如下。Dsl28資訊網(wǎng)——每日最新資訊28at.com
- 瀏覽器通過查詢DNS服務(wù)器,獲取可用的服務(wù)實(shí)例的網(wǎng)絡(luò)位置信息,從而實(shí)現(xiàn)服務(wù)的自動發(fā)現(xiàn)和動態(tài)更新。
- 通過CDN獲取靜態(tài)資源,提高訪問速度,解決跨地域請求速度慢的問題。
- 通過LVS負(fù)載均衡器,實(shí)現(xiàn)負(fù)載均衡和網(wǎng)絡(luò)協(xié)議。
- 通過Nginx反向代理服務(wù)器,將請求轉(zhuǎn)發(fā)到gateway做路由轉(zhuǎn)發(fā)和安全驗(yàn)證。
- 訪問注冊中心和配置中心Nacos,獲取后端服務(wù)和配置項。
- 通過Sentinel進(jìn)行限流。
- 通過Redis進(jìn)行緩存服務(wù)、會話管理、分布式鎖控制。
- 通過Elasticsearch進(jìn)行全文搜索,存儲日志,配合Kibana,對ES中的數(shù)據(jù)進(jìn)行實(shí)時的可視化分析。
一、域名系統(tǒng)DNS
在微服務(wù)中,域名系統(tǒng)DNS的作用主要是進(jìn)行服務(wù)發(fā)現(xiàn)和負(fù)載均衡。Dsl28資訊網(wǎng)——每日最新資訊28at.com
- 每個微服務(wù)實(shí)例在啟動時,將自己的IP地址和端口號等信息注冊到DNS服務(wù)器,瀏覽器通過查詢DNS服務(wù)器,獲取可用的服務(wù)實(shí)例的網(wǎng)絡(luò)位置信息,從而實(shí)現(xiàn)服務(wù)的自動發(fā)現(xiàn)和動態(tài)更新。
- DNS服務(wù)器可以根據(jù)一定的策略,比如輪詢、隨機(jī)等,將請求分發(fā)到不同的負(fù)載均衡器LVS上,提高系統(tǒng)的并發(fā)處理能力和容錯性。
二、LVS(Linux Virtual Server),Linux虛擬服務(wù)器
LVS是一個開源的負(fù)載均衡軟件,基于Linux操作系統(tǒng)實(shí)現(xiàn)。它在Linux內(nèi)核中實(shí)現(xiàn)負(fù)載均衡的功能,通過運(yùn)行在用戶空間的用戶進(jìn)程實(shí)現(xiàn)負(fù)載均衡的策略。Dsl28資訊網(wǎng)——每日最新資訊28at.com
- LVS支持多種負(fù)載均衡算法,例如輪詢、隨機(jī)、加權(quán)輪詢、加權(quán)隨機(jī)等。
- LVS支持多種網(wǎng)絡(luò)協(xié)議,例如TCP、HTTP、HTTPS,可以滿足不同應(yīng)用的需求。
- LVS具有高可用和可擴(kuò)展性。它支持主從備份和冗余配置,當(dāng)主服務(wù)器出現(xiàn)故障時,備份服務(wù)器可以自動接管負(fù)載,確保服務(wù)的連續(xù)性。此外,LVS還支持動態(tài)添加和刪除服務(wù)器節(jié)點(diǎn),方便管理員進(jìn)行擴(kuò)容和縮容的操作。
三、CDN靜態(tài)資源
CDN靜態(tài)資源圖片、視頻、JavaScript文件、CSS文件、靜態(tài)HTML文件等。這些靜態(tài)資源的特點(diǎn)是讀請求量極大,對訪問速度的要求很高,并占據(jù)了很高的寬帶。如果處理不當(dāng),可能導(dǎo)致訪問速度慢,寬帶被占滿,進(jìn)而影響動態(tài)請求的處理。Dsl28資訊網(wǎng)——每日最新資訊28at.com
CDN的作用是將這些靜態(tài)資源分發(fā)到多個地理位置的機(jī)房的服務(wù)器上。讓用戶就近選擇訪問,提高訪問速度,解決跨地域請求速度慢的問題。Dsl28資訊網(wǎng)——每日最新資訊28at.com
四、Nginx反向代理服務(wù)器
1、Nginx的主要作用體現(xiàn)在以下幾個方面:
- 反向代理,Nginx可以作為反向代理服務(wù)器,接收來自客戶端的請求,然后將請求轉(zhuǎn)發(fā)到后端的微服務(wù)實(shí)例。
- 負(fù)載均衡,Nginx可以根據(jù)配置,將請求分發(fā)到微服務(wù)不同的實(shí)例上,實(shí)現(xiàn)負(fù)載均衡。
- 服務(wù)路由,Nginx可以根據(jù)不同的路徑規(guī)則,將請求路由到不同的微服務(wù)上。
- 靜態(tài)資源服務(wù),Nginx可以提供靜態(tài)資源服務(wù),如圖片、視頻、JavaScript文件、CSS文件、HTML靜態(tài)文件等,減輕后端服務(wù)的壓力,提高系統(tǒng)的響應(yīng)速度和性能。
2、Nginx靜態(tài)資源服務(wù)和CDN靜態(tài)資源服務(wù),如何選擇?
在選擇Nginx靜態(tài)資源服務(wù)和CDN靜態(tài)資源服務(wù)時,可以根據(jù)以下幾個因素進(jìn)行權(quán)衡和選擇:Dsl28資訊網(wǎng)——每日最新資訊28at.com
- 性能和速度:CDN靜態(tài)資源服務(wù)通常具有更廣泛的分布式節(jié)點(diǎn)和緩存機(jī)制,可以更快地響應(yīng)用戶的請求,并減少傳輸距離和網(wǎng)絡(luò)擁塞。如果靜態(tài)資源的加載速度和性能是首要考慮因素,CDN可能是更好的選擇。
- 控制和自定義能力:Nginx靜態(tài)資源服務(wù)提供更高的靈活性和控制能力,可以根據(jù)具體需求進(jìn)行定制和配置。如果需要更精細(xì)的控制和自定義能力,或者在特定的網(wǎng)絡(luò)環(huán)境下進(jìn)行部署,Nginx可能更適合。
- 成本和預(yù)算:CDN靜態(tài)資源服務(wù)通常需要支付額外的費(fèi)用,而Nginx靜態(tài)資源服務(wù)可以自行搭建和部署,成本相對較低。在考慮選擇時,需要綜合考慮成本和預(yù)算的因素。
- 內(nèi)容分發(fā)和全球覆蓋:如果靜態(tài)資源需要分發(fā)到全球各地的用戶,CDN靜態(tài)資源服務(wù)的分布式節(jié)點(diǎn)可以更好地滿足這個需求,提供更廣泛的內(nèi)容分發(fā)和全球覆蓋。
選擇Nginx靜態(tài)資源服務(wù)還是CDN靜態(tài)資源服務(wù)取決于具體的需求和場景。如果追求更好的性能和全球覆蓋,可以選擇CDN靜態(tài)資源服務(wù);如果更需要控制和自定義能力,且對性能要求不是特別高,可以選擇Nginx靜態(tài)資源服務(wù)。Dsl28資訊網(wǎng)——每日最新資訊28at.com
五、Gateway網(wǎng)關(guān)
在微服務(wù)架構(gòu)中,Gateway的作用如下:Dsl28資訊網(wǎng)——每日最新資訊28at.com
- 統(tǒng)一入口:Gateway作為整個微服務(wù)架構(gòu)的統(tǒng)一入口,所有的請求都會經(jīng)過Gateway,這樣做可以隱藏內(nèi)部微服務(wù)的細(xì)節(jié),降低后臺服務(wù)受攻擊的概率。
- 路由和轉(zhuǎn)發(fā):Gateway根據(jù)請求的路徑、參數(shù)等信息,將請求路由到相應(yīng)的微服務(wù)實(shí)例。這樣可以讓服務(wù)解耦,讓各個微服務(wù)可以獨(dú)立的開發(fā)、測試、部署。
- 安全和認(rèn)證:Gateway通常集成了身份驗(yàn)證和權(quán)限驗(yàn)證的功能,確保只有經(jīng)過驗(yàn)證的請求才能訪問微服務(wù)。Gateway還具備防爬蟲、限流、熔斷的功能。
- 協(xié)議轉(zhuǎn)換:由于微服務(wù)架構(gòu)中可以使用不同的技術(shù)和協(xié)議,Gateway可以作為協(xié)議轉(zhuǎn)換中心,實(shí)現(xiàn)不同協(xié)議之間的轉(zhuǎn)換和兼容性。
- 日志和監(jiān)控,Gateway可以記錄所有的請求和響應(yīng)日志,為后續(xù)的故障排查、性能分析、安全審計提供數(shù)據(jù)支持。Gateway還集成了監(jiān)控和報警功能:實(shí)時反饋系統(tǒng)的運(yùn)行狀態(tài)。
- 服務(wù)聚合:在某些場景中,Gateway可以將來自多個微服務(wù)的數(shù)據(jù)進(jìn)行聚合,然后一次性返回給客戶端,減少客戶端和微服務(wù)之間的交互次數(shù),提高系統(tǒng)性能。
六、注冊中心Nacos
在微服務(wù)架構(gòu)中,Nacos的作用主要體現(xiàn)在注冊中心、配置中心、服務(wù)健康檢查等方面。Dsl28資訊網(wǎng)——每日最新資訊28at.com
- 注冊中心:Nacos支持基于DNS和RPC的服務(wù)發(fā)現(xiàn),微服務(wù)可以將接口服務(wù)注冊到Nacos中,客戶端通過nacos查找和調(diào)用這些服務(wù)實(shí)例。
- 配置中心:Nacos提供了動態(tài)配置服務(wù),可以動態(tài)的修改配置中心中的配置項,不需要重啟后臺服務(wù),即可完成配置的修改和發(fā)布,提高了系統(tǒng)的靈活性和可維護(hù)性。
- 服務(wù)健康檢查:Nacos提供了一系列的服務(wù)治理功能,比如服務(wù)健康檢查、負(fù)載均衡、容錯處理等。服務(wù)健康檢查可以阻止向不健康的主機(jī)或服務(wù)實(shí)例發(fā)送請求,保證了服務(wù)的穩(wěn)定性和可靠性。負(fù)載均衡可以根據(jù)一定的策略,將請求分發(fā)到不同的服務(wù)實(shí)例中,提高系統(tǒng)的并發(fā)處理能力和性能。
七、Redis緩存
1、在微服務(wù)架構(gòu)中,Redis的作用主要體現(xiàn)在以下幾個方面:
- 緩存服務(wù):Redis可以作為高速緩存服務(wù)器,將常用的數(shù)據(jù)存儲在內(nèi)存中,提高數(shù)據(jù)訪問速度和響應(yīng)時間,減輕數(shù)據(jù)庫的訪問壓力,并加速后臺數(shù)據(jù)的查詢。
- 會話管理:Redis可以存儲會話信息,并實(shí)現(xiàn)分布式會話管理。這使會話信息可以在多個服務(wù)之間共享和訪問,提供一致的用戶體驗(yàn)。
- 分布式鎖:Redis提供了分布式鎖機(jī)制,可以確保微服務(wù)中多個節(jié)點(diǎn)對共享資源的訪問的合理性和有序性,避免競態(tài)條件和資源沖突。
- 消息隊列:Redis支持發(fā)布訂閱模式和消息隊列模式,可以作為消息中間件使用。微服務(wù)之間可以通過Redis實(shí)現(xiàn)異步通信,實(shí)現(xiàn)解耦和高可用性。
2、競態(tài)條件
競態(tài)條件是指在同一個程序的多線程訪問同一個資源的情況下,如果對資源的訪問順序敏感,就存在競態(tài)條件。競態(tài)條件可能會導(dǎo)致執(zhí)行結(jié)果出現(xiàn)各種問題,例如計算機(jī)死機(jī)、出現(xiàn)非法操作提示并結(jié)束程序、錯誤的讀取舊的數(shù)據(jù)或錯誤的寫入新數(shù)據(jù)。在串行的內(nèi)存和存儲訪問能防止這種情況,當(dāng)讀寫命令同時發(fā)生的時候,默認(rèn)是先執(zhí)行讀操作的。Dsl28資訊網(wǎng)——每日最新資訊28at.com
競態(tài)條件也可能在網(wǎng)絡(luò)中出現(xiàn),當(dāng)兩個用戶同時試圖訪問同一個可用信道的時候就會發(fā)生,系統(tǒng)同意訪問之前沒有計算機(jī)能得到信道被占用的提示。統(tǒng)計上說這種情況通常是發(fā)生在有相當(dāng)長的延遲時間的網(wǎng)絡(luò)里,比如使用地球同步衛(wèi)星。Dsl28資訊網(wǎng)——每日最新資訊28at.com
為了防止這種競態(tài)條件發(fā)生,需要制定優(yōu)先級列表,比如用戶的用戶名在字母表里排列靠前可以得到相對較高的優(yōu)先級。黑客可以利用競態(tài)條件這一弱點(diǎn)來贏得非法訪問網(wǎng)絡(luò)的權(quán)利。Dsl28資訊網(wǎng)——每日最新資訊28at.com
競態(tài)條件是由于多個線程或多個進(jìn)程同時訪問共享資源而引發(fā)的問題,它可能會導(dǎo)致不可預(yù)測的結(jié)果和不一致的狀態(tài)。解決競態(tài)條件的方法包括使用鎖、同步機(jī)制、優(yōu)先級列表等。Dsl28資訊網(wǎng)——每日最新資訊28at.com
3、Redis會話管理如何實(shí)現(xiàn)?
Redis會話管理的一般實(shí)現(xiàn)步驟:Dsl28資訊網(wǎng)——每日最新資訊28at.com
- 會話創(chuàng)建:當(dāng)用戶首次訪問應(yīng)用時,可以在Redis中創(chuàng)建一個新的會話,會話可以是一個具有唯一標(biāo)識符的數(shù)據(jù)結(jié)構(gòu),例如哈希表或字符串。
- 會話信息存儲:將會話信息關(guān)聯(lián)到會話ID存儲到Redis中,會話信息可以包括用戶身份、登錄狀態(tài)、權(quán)限等。
- 會話過期時間設(shè)置:為會話設(shè)置過期時間,以確保會話在一定時間后自動失效。Redis提供了設(shè)置鍵值對過期時間的機(jī)制,可以通過EXPIRE命令為會話設(shè)置過期時間。
- 會話訪問和更新:在每次用戶訪問應(yīng)用時,通過會話ID獲取相應(yīng)的會話信息,并對其進(jìn)行驗(yàn)證和更新。如果會話已過期,可以要求用戶重新登錄。
- 會話銷毀:當(dāng)用戶主動退出或會話到期后,需要銷毀會話,通過刪除Redis中存儲的會話信息即可。
八、Elasticsearch全文搜索引擎
在微服務(wù)架構(gòu)中,Elasticsearch全文搜索引擎的應(yīng)用主要體現(xiàn)在如下幾個方面:Dsl28資訊網(wǎng)——每日最新資訊28at.com
- 全文搜索引擎:ES是一個分布式的全文搜索引擎,它可以對海量的數(shù)據(jù)進(jìn)行實(shí)時的全文搜索,返回與關(guān)鍵詞相關(guān)的結(jié)果;
- 分布式存儲:ES提供了分布式的實(shí)時文件存儲功能,每個字段都可以被索引并可被搜索,這使得數(shù)據(jù)在ES中的存儲和查詢都非常高效。
- 數(shù)據(jù)分析:配合Kibana,對ES中的數(shù)據(jù)進(jìn)行實(shí)時的可視化分析,為數(shù)據(jù)決策提供數(shù)據(jù)支持。
- 日志和監(jiān)控:ES可以作為日志和監(jiān)控數(shù)據(jù)的存儲和分析平臺。通過收集系統(tǒng)的日志信息,存入ES,可以實(shí)現(xiàn)實(shí)時的日志查詢、分析、告警、展示。
- 擴(kuò)展性:ES具有很好的擴(kuò)展性,可以水平擴(kuò)展到數(shù)百臺服務(wù)器,處理PB級別的數(shù)據(jù),使得ES能夠應(yīng)對海量數(shù)據(jù)的挑戰(zhàn)。
九、感覺Redis和Elasticsearch很像?微服務(wù)中Redis和Elasticsearch的區(qū)別
- 數(shù)據(jù)存儲和查詢方式:Redis是一種基于鍵值對的存儲系統(tǒng),它提供高性能的讀寫操作,適用于存儲結(jié)構(gòu)簡單、查詢條件同樣簡單的應(yīng)用場景。而Elasticsearch是一個分布式搜索和分析引擎,適用于全文搜索、數(shù)據(jù)分析等復(fù)雜場景,能夠處理更復(fù)雜的查詢需求。
- 數(shù)據(jù)結(jié)構(gòu)與處理能力:Redis支持豐富的數(shù)據(jù)結(jié)構(gòu),如字符串、哈希、列表、集合等,并提供了原子性的操作,適用于實(shí)現(xiàn)緩存、消息隊列、計數(shù)器等功能。而Elasticsearch則是基于倒排索引的數(shù)據(jù)結(jié)構(gòu),提供了強(qiáng)大的搜索和分析能力。但相對于Redis,Elasticsearch的寫入效率較低。
- 實(shí)時性和一致性:Redis提供了很高的實(shí)時性,Redis將數(shù)據(jù)存儲到內(nèi)存中,能夠很快的進(jìn)行讀寫操作;而Elasticsearch是一個近實(shí)時的搜索平臺,實(shí)時性不如Redis。
- 擴(kuò)展性:Redis是通過增加Redis實(shí)例的形式實(shí)現(xiàn)擴(kuò)展,對非常大的數(shù)據(jù)集可能要進(jìn)行數(shù)據(jù)分片;而Elasticsearch具有水平擴(kuò)展的能力,可以通過添加更多的節(jié)點(diǎn)來提高系統(tǒng)的處理能力,適用于大量數(shù)據(jù)的場景。
Dsl28資訊網(wǎng)——每日最新資訊28at.com
Dsl28資訊網(wǎng)——每日最新資訊28at.com
本文鏈接:http://www.www897cc.com/showinfo-26-20061-0.html沒用過微服務(wù)?別慌,丐版架構(gòu)圖,讓你輕松拿捏面試官
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 即將到來的 Vue 3 “Vapor Mode”
下一篇: C++中 bitset 詳解