国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ES 的分布式架構(gòu)原理能說一下么(ES 是如何實(shí)現(xiàn)分布式的?。?/h1>

這篇具有很好參考價(jià)值的文章主要介紹了ES 的分布式架構(gòu)原理能說一下么(ES 是如何實(shí)現(xiàn)分布式的?。??。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

一、面試官心理分析

二、面試題剖析


一、面試官心理分析

????????在搜索這塊,lucene 是最流行的搜索庫(kù)。幾年前業(yè)內(nèi)一般都問,你了解 lucene 嗎?你知道倒排索引的原理嗎?現(xiàn)在早已經(jīng) out 了,因?yàn)楝F(xiàn)在很多項(xiàng)目都是直接用基于 lucene 的分布式搜索引 擎—— ElasticSearch ,簡(jiǎn)稱為 ES
????????而現(xiàn)在分布式搜索基本已經(jīng)成為大部分互聯(lián)網(wǎng)行業(yè)的 Java 系統(tǒng)的標(biāo)配,其中尤為流行的就是 ES,前幾年 ES 沒火的時(shí)候,大家一般用 solr 。但是這兩年基本大部分企業(yè)和項(xiàng)目都開始轉(zhuǎn)向 ES 了。
????????所以互聯(lián)網(wǎng)面試,肯定會(huì)跟你聊聊分布式搜索引擎,也就一定會(huì)聊聊 ES ,如果你確實(shí)不知道,那你真的就 out 了。
????????如果面試官問你第一個(gè)問題,確實(shí)一般都會(huì)問你 ES 的分布式架構(gòu)設(shè)計(jì)能介紹一下么?就看看 你對(duì)分布式搜索引擎架構(gòu)的一個(gè)基本理解。 ???

二、面試題剖析

????????ElasticSearch 設(shè)計(jì)的理念就是分布式搜索引擎,底層其實(shí)還是基于 lucene 的。核心思想就是在多臺(tái)機(jī)器上啟動(dòng)多個(gè) ES 進(jìn)程實(shí)例,組成了一個(gè) ES 集群。
????????ES 中存儲(chǔ)數(shù)據(jù)的 基本單位是索引 ,比如說你現(xiàn)在要在 ES 中存儲(chǔ)一些訂單數(shù)據(jù),你就應(yīng)該在 ES 中創(chuàng)建一個(gè)索引 order_idx ,所有的訂單數(shù)據(jù)就都寫到這個(gè)索引里面去,一個(gè)索引差不多就是相當(dāng)于是 mysql 里的一張表。( index -> type -> mapping -> document -> field)
????????這樣吧,為了做個(gè)更直白的介紹,我在這里做個(gè)類比。但是切記,不要?jiǎng)澋忍?hào),類比只是為了便于理解。
????????index 相當(dāng)于 mysql 里的一張表。而 type 沒法跟 mysql 里去對(duì)比,一個(gè) index 里可以有多個(gè)
type ,每個(gè) type 的字段都是差不多的,但是有一些略微的差別。假設(shè)有一個(gè) index ,是訂單 index,里面專門是放訂單數(shù)據(jù)的。就好比說你在 mysql 中建表,有些訂單是實(shí)物商品的訂單,比如一件衣服、一雙鞋子;有些訂單是虛擬商品的訂單,比如游戲點(diǎn)卡,話費(fèi)充值。就兩種訂單大部分字段是一樣的,但是少部分字段可能有略微的一些差別。
所以就會(huì)在訂單 index 里,建兩個(gè) type ,一個(gè)是實(shí)物商品訂單 type ,一個(gè)是虛擬商品訂單?type,這兩個(gè) type 大部分字段是一樣的,少部分字段是不一樣的。
????????很多情況下,一個(gè) index 里可能就一個(gè) type ,但是確實(shí)如果說是一個(gè) index 里有多個(gè) type 的情況( 注意 mapping types 這個(gè)概念在 ElasticSearch 7. X 已被完全移除,詳細(xì)說明可以參考 官方文檔 ),你可以認(rèn)為 index 是一個(gè)類別的表,具體的每個(gè) type 代表了 mysql 中的一個(gè)表。每個(gè) type 有一個(gè) mapping ,如果你認(rèn)為一個(gè) type 是具體的一個(gè)表, index 就代表多個(gè) type 同屬于的一個(gè)類型,而 mapping 就是這個(gè) type 表結(jié)構(gòu)定義 ,你在 mysql 中創(chuàng)建一個(gè)表,肯定是要定義表結(jié)構(gòu)的,里面有哪些字段,每個(gè)字段是什么類型。實(shí)際上你往 index 里的一個(gè) type里面寫的一條數(shù)據(jù),叫做一條 document ,一條 document 就代表了 mysql 中某個(gè)表里的一行,每個(gè) document 有多個(gè) field ,每個(gè) field 就代表了這個(gè) document 中的一個(gè)字段的值。

ES 的分布式架構(gòu)原理能說一下么(ES 是如何實(shí)現(xiàn)分布式的?。?搜索引擎,elasticsearch,分布式,架構(gòu)

????????你搞一個(gè)索引,這個(gè)索引可以拆分成多個(gè) shard ,每個(gè) shard 存儲(chǔ)部分?jǐn)?shù)據(jù)。拆分多個(gè) shard
是有好處的,一是 支持橫向擴(kuò)展 ,比如你數(shù)據(jù)量是 3T , 3 個(gè) shard ,每個(gè) shard 1T 的數(shù)據(jù),若現(xiàn)在數(shù)據(jù)量增加到 4T ,怎么擴(kuò)展,很簡(jiǎn)單,重新建一個(gè)有 4 個(gè) shard 的索引,將數(shù)據(jù)導(dǎo)進(jìn) 去;二是 提高性能 ,數(shù)據(jù)分布在多個(gè) shard ,即多臺(tái)服務(wù)器上,所有的操作,都會(huì)在多臺(tái)機(jī)器上并行分布式執(zhí)行,提高了吞吐量和性能。、
????????接著就是這個(gè) shard 的數(shù)據(jù)實(shí)際是有多個(gè)備份,就是說每個(gè) shard 都有一個(gè) primary shard
,負(fù)責(zé)寫入數(shù)據(jù),但是還有幾個(gè) replica shard 。 primary shard 寫入數(shù)據(jù)之后,會(huì)將數(shù)據(jù)同步到其他幾個(gè) replica shard 上去。

ES 的分布式架構(gòu)原理能說一下么(ES 是如何實(shí)現(xiàn)分布式的?。??,搜索引擎,elasticsearch,分布式,架構(gòu)文章來源地址http://www.zghlxwxcb.cn/news/detail-839959.html

????????通過這個(gè) replica 的方案,每個(gè) shard 的數(shù)據(jù)都有多個(gè)備份,如果某個(gè)機(jī)器宕機(jī)了,沒關(guān)系啊,還有別的數(shù)據(jù)副本在別的機(jī)器上呢。高可用了吧。
????????ES 集群多個(gè)節(jié)點(diǎn),會(huì)自動(dòng)選舉一個(gè)節(jié)點(diǎn)為 master 節(jié)點(diǎn),這個(gè) master 節(jié)點(diǎn)其實(shí)就是干一些管理的工作的,比如維護(hù)索引元數(shù)據(jù)、負(fù)責(zé)切換 primary shard replica shard 身份等。要是 master 節(jié)點(diǎn)宕機(jī)了,那么會(huì)重新選舉一個(gè)節(jié)點(diǎn)為 master 節(jié)點(diǎn)。
????????如果是非 master 節(jié)點(diǎn)宕機(jī)了,那么會(huì)由 master 節(jié)點(diǎn),讓那個(gè)宕機(jī)節(jié)點(diǎn)上的 primary shard 的身份轉(zhuǎn)移到其他機(jī)器上的 replica shard 。接著你要是修復(fù)了那個(gè)宕機(jī)機(jī)器,重啟了之后, master 節(jié)點(diǎn)會(huì)控制將缺失的 replica shard 分配過去,同步后續(xù)修改的數(shù)據(jù)之類的,讓集群恢復(fù)正常。
????????說得更簡(jiǎn)單一點(diǎn),就是說如果某個(gè)非 master 節(jié)點(diǎn)宕機(jī)了。那么此節(jié)點(diǎn)上的 primary shard 不就沒了。那好,master 會(huì)讓 primary shard 對(duì)應(yīng)的 replica shard (在其他機(jī)器上)切換為 primary
shard 。如果宕機(jī)的機(jī)器修復(fù)了,修復(fù)后的節(jié)點(diǎn)也不再是 primary shard ,而是 replica shard 。
????????其實(shí)上述就是 ElasticSearch 作為分布式搜索引擎最基本的一個(gè)架構(gòu)設(shè)計(jì)。
ps:一個(gè)點(diǎn)贊一份愛,點(diǎn)個(gè)關(guān)注不迷路!

到了這里,關(guān)于ES 的分布式架構(gòu)原理能說一下么(ES 是如何實(shí)現(xiàn)分布式的?。??的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 什么是Python爬蟲分布式架構(gòu),可能遇到哪些問題,如何解決

    什么是Python爬蟲分布式架構(gòu),可能遇到哪些問題,如何解決

    目錄 什么是Python爬蟲分布式架構(gòu) 1. 調(diào)度中心(Scheduler): 2. 爬蟲節(jié)點(diǎn)(Crawler Node): 3. 數(shù)據(jù)存儲(chǔ)(Data Storage): 4. 反爬蟲處理(Anti-Scraping): 5. 分布式通信和協(xié)調(diào)(Communication and Coordination): Python爬蟲分布式架構(gòu)代碼示例 1. 調(diào)度中心(scheduler.py): 2. 爬蟲節(jié)點(diǎn)(crawl

    2024年02月10日
    瀏覽(21)
  • 分布式技術(shù)原理與實(shí)戰(zhàn)45講--05 第05講:共識(shí)問題:區(qū)塊鏈如何確認(rèn)記賬權(quán)?

    本課時(shí)我們主要講解“共識(shí)問題:區(qū)塊鏈如何確認(rèn)記賬權(quán)?” 區(qū)塊鏈可以說是最近幾年最熱的技術(shù)領(lǐng)域之一,區(qū)塊鏈起源于中本聰?shù)谋忍貛?,作為比特幣的底層技術(shù),本質(zhì)上是一個(gè)去中心化的數(shù)據(jù)庫(kù),其特點(diǎn)是 去中心化、 公開透明,作為分布式賬本技術(shù),每個(gè)節(jié)點(diǎn)都可以參

    2024年02月03日
    瀏覽(27)
  • 【軟件開發(fā)/設(shè)計(jì)】分布式架構(gòu)中的組件(如Kafka、MongoDB和Nginx)如何進(jìn)行容器化部署

    容器化部署是將應(yīng)用程序及其依賴打包成一個(gè)容器鏡像,然后在任何支持容器的環(huán)境中運(yùn)行這個(gè)鏡像的過程。在分布式架構(gòu)中,像Nginx、MongoDB、Kafka這樣的組件通過容器化可以更易于部署、擴(kuò)展和管理。以下是這些組件容器化部署的一般步驟和原理: 容器化部署的一般步驟

    2024年02月04日
    瀏覽(43)
  • 【分布式】分布式存儲(chǔ)架構(gòu)

    【分布式】分布式存儲(chǔ)架構(gòu)

    說到分布式存儲(chǔ),我們先來看一下傳統(tǒng)的存儲(chǔ)是怎么個(gè)樣子。 傳統(tǒng)的存儲(chǔ)也稱為集中式存儲(chǔ), 從概念上可以看出來是具有集中性的,也就是整個(gè)存儲(chǔ)是集中在一個(gè)系統(tǒng)中的,但集中式存儲(chǔ)并不是一個(gè)單獨(dú)的設(shè)備,是集中在一套系統(tǒng)當(dāng)中的多個(gè)設(shè)備,比如下圖中的 EMC 存儲(chǔ)就需

    2024年02月10日
    瀏覽(28)
  • 分布式爬蟲架構(gòu)-對(duì)等分布式(2)

    前言 本文是該專欄的第45篇,后面會(huì)持續(xù)分享python爬蟲干貨知識(shí),記得關(guān)注。 在面對(duì)海量數(shù)據(jù)的采集需求時(shí),使用分布式爬蟲是非常有必要的。繼上一篇,詳細(xì)介紹主從分布式爬蟲架構(gòu),對(duì)主從分布式相關(guān)知識(shí)感興趣的同學(xué),可往前翻閱。而本文,筆者再單獨(dú)來詳細(xì)介紹分布

    2023年04月25日
    瀏覽(30)
  • 【ES】分布式集群

    【ES】分布式集群

    本文主要參考尚硅谷的資料,少部分自己原創(chuàng),有錯(cuò)誤之處請(qǐng)指出。 node-1001配置如下: 坑1:如果之前啟動(dòng)過此 ES 服務(wù),需要?jiǎng)h除 data文件夾以及l(fā)ogs里面的所有日志,否則可能配置失效 坑2: discovery.seed_hosts以及cluster.initial_master_nodes不需要配置 ,否則訪問此 ES 服務(wù)會(huì)報(bào)錯(cuò)找

    2024年02月09日
    瀏覽(27)
  • 分布式系統(tǒng)架構(gòu)設(shè)計(jì)之分布式緩存技術(shù)選型

    分布式系統(tǒng)架構(gòu)設(shè)計(jì)之分布式緩存技術(shù)選型

    隨著互聯(lián)網(wǎng)業(yè)務(wù)的快速發(fā)展,分布式系統(tǒng)已經(jīng)成為了解決大規(guī)模并發(fā)請(qǐng)求、高可用性、可擴(kuò)展性等問題的重要手段。在分布式系統(tǒng)中,緩存作為提高系統(tǒng)性能的關(guān)鍵技術(shù),能夠顯著降低數(shù)據(jù)庫(kù)負(fù)載、減少網(wǎng)絡(luò)延遲、提高數(shù)據(jù)訪問速度。當(dāng)面對(duì)大量并發(fā)請(qǐng)求時(shí),如果每次都直接

    2024年02月03日
    瀏覽(519)
  • 分布式軟件架構(gòu)——分布式事務(wù)TCC和SAGA

    分布式軟件架構(gòu)——分布式事務(wù)TCC和SAGA

    TCC 是另一種常見的分布式事務(wù)機(jī)制,它是“ Try-Confirm-Cancel ”三個(gè)單詞的縮寫,是由數(shù)據(jù)庫(kù)專家 Pat Helland 在 2007 年撰寫的論文《Life beyond Distributed Transactions: An Apostate’s Opinion》中提出。 前面介紹的可靠消息隊(duì)列雖然能保證最終的結(jié)果是相對(duì)可靠的,過程也足夠簡(jiǎn)單(相對(duì)于

    2024年02月12日
    瀏覽(23)
  • 分布式搜索分析引擎ES

    分布式搜索分析引擎ES

    es是實(shí)時(shí)的分布式搜索分析引擎: 實(shí)時(shí)表現(xiàn)在新增到ES中的數(shù)據(jù)1s中就可以被檢索到,這種新增數(shù)據(jù)對(duì)搜索的可見性成為“準(zhǔn)實(shí)時(shí)搜索”。 分布式意味著可以動(dòng)態(tài)調(diào)整集群規(guī)模,彈性擴(kuò)容,支持上百個(gè)節(jié)點(diǎn),相比 HDFS 等上千臺(tái)的集群,更適合中等數(shù)據(jù)量的業(yè)務(wù),不適合存儲(chǔ)海

    2024年03月12日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包