es的存儲和更新機制
Elasticsearch(ES)是一個開源的分布式搜索和分析引擎,其存儲架構(gòu)和更新機制如下:
存儲架構(gòu):
索引(Index):ES的數(shù)據(jù)組織單元是索引,每個索引可以包含多個類型(Types),類似于數(shù)據(jù)庫中的表。索引是由一個或多個分片(Shard)組成的,用于將數(shù)據(jù)水平分割和分布在集群中的多個節(jié)點上。
分片(Shard):每個索引可以被分為多個分片,每個分片是一個獨立的工作單元,包含部分數(shù)據(jù)。分片允許數(shù)據(jù)分布在集群的多個節(jié)點上,提高了性能和可伸縮性。
副本(Replica):每個分片可以有零個或多個副本。副本是分片的完全復制,用于提供冗余和故障恢復。副本也可以用于負載均衡查詢。
更新機制:
Near Real-Time(NRT):ES采用了近實時的更新機制,即文檔的索引和搜索操作不會立即生效,而是需要經(jīng)過一小段時間的延遲。默認情況下,ES的刷新間隔是1秒鐘,因此寫入的數(shù)據(jù)在1秒后才能被搜索到。這種機制可以提高吞吐量和性能。
索引操作(Indexing):當需要更新一個文檔時,ES會先檢查該文檔是否已經(jīng)存在于索引中。如果文檔不存在,則會創(chuàng)建新的文檔并將其添加到合適的分片上。如果文檔已經(jīng)存在,則會進行更新操作,即先標記舊文檔為刪除,然后再創(chuàng)建一個新的文檔版本。這樣做是為了保留歷史版本,并支持版本控制和文檔回滾。
分布式協(xié)調(diào):當有多個副本時,ES使用Raft一致性算法來協(xié)調(diào)各個副本之間的寫入操作,確保數(shù)據(jù)的一致性和可靠性。
總結(jié)起來,Elasticsearch的存儲架構(gòu)是由索引、分片和副本組成的,利用分布式的方式將數(shù)據(jù)分散在多個節(jié)點上。更新機制采用近實時的方式,通過索引操作和分布式協(xié)調(diào)來處理文檔的更新和寫入操作。這使得ES具備高性能、可伸縮和容錯能力。
說一下raft算法
Raft是一種分布式一致性算法,用于解決分布式系統(tǒng)中的復制日志問題。它旨在提供容錯性和易理解性,并通過選舉機制來確保系統(tǒng)的可用性。
以下是Raft一致性算法的基本原理:
領(lǐng)導者選舉:在一個Raft集群中,每個節(jié)點可能處于三種狀態(tài):領(lǐng)導者(leader)、追隨者(follower)和候選人(candidate)。初始時,所有節(jié)點都是追隨者。當追隨者未能接收到領(lǐng)導者的心跳消息時,會發(fā)起選舉變成候選人,并請求其他節(jié)點投票支持。如果候選人贏得了大多數(shù)節(jié)點的選票,就成為新的領(lǐng)導者。
日志復制:領(lǐng)導者負責接收客戶端的請求并將其轉(zhuǎn)化為日志條目。每個節(jié)點都維護一個日志,其中包含按順序編號的日志條目。領(lǐng)導者將新的日志條目復制到它的追隨者節(jié)點上,一旦大多數(shù)節(jié)點確認接收并復制該日志條目,就認為該操作提交成功。
容錯性:Raft通過日志復制和選舉機制實現(xiàn)容錯性。如果一個領(lǐng)導者失效,集群中的其他節(jié)點會進行選舉以選擇一個新的領(lǐng)導者。只有在大多數(shù)節(jié)點都正常工作的情況下,才能進行日志條目的提交。
安全性:Raft通過在選舉過程中使用隨機超時時間和限制選舉過程中票數(shù)的增長速率來防止選舉過程中的活鎖(例如,若干個候選人無法取得勝利)。此外,任何一個節(jié)點只能接受最新的日志條目,確保了數(shù)據(jù)的一致性。文章來源:http://www.zghlxwxcb.cn/news/detail-602925.html
總體而言,Raft算法提供了一種可靠的方式來實現(xiàn)分布式系統(tǒng)中的一致性。它通過領(lǐng)導者選舉、日志復制和容錯機制來確保數(shù)據(jù)的一致性和集群的可用性。由于其易理解的特點,Raft在分布式系統(tǒng)領(lǐng)域廣泛應用,并成為了Paxos算法的有效替代方案。文章來源地址http://www.zghlxwxcb.cn/news/detail-602925.html
到了這里,關(guān)于elasticsearch面試八股文的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!