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

Elasticsearch分布式架構原理,我們真的需要知道,很重要

開發 架構 服務器 分布式
Elasticsearch用于構建高可用和可擴展的系統。擴展的方式可以是購買更好的服務器(縱向擴展(vertical scale or scaling up))或者購買更多的服務器(橫向擴展(horizontal scale or scaling out))。

Elasticsearch用于構建高可用和可擴展的系統。擴展的方式可以是購買更好的服務器(縱向擴展(vertical scale or scaling up))或者購買更多的服務器(橫向擴展(horizontal scale or scaling out))。

[[281098]]

Elasticsearch雖然能從更強大的硬件中獲得更好的性能,但是縱向擴展有它的局限性。真正的擴展應該是橫向的,它通過增加節點來均攤負載和增加可靠性。

對于大多數數據庫而言,橫向擴展意味著你的程序將做非常大的改動才能利用這些新添加的設備。對比來說,Elasticsearch天生就是分布式的:它知道如何管理節點來提供高擴展和高可用。這意味著你的程序不需要關心這些。

ES 如何實現分布式

添加索引

es 中存儲數據的基本單位是索引,我們為了將數據添加到ES中,就需要添加索引(index)

這里需要說一下ES中索引與分片(shard)的關系:一個分片(shard)是一個最小級別“工作單元(worker unit)”,它只是保存了索引中所有數據的一部分;所有的文檔均存在分片中,而直接與應用程序進行交互的再而三索引。

下面我們以酒店搜索為例,添加所有酒店索引hotel_idx

  1. PUT /hotel_idx  
  2.  
  3. "settings" : {  
  4. "number_of_shards" : 3,  
  5. "number_of_replicas" : 1  
  6.  

我們啟動三個ES節點,當前hotel_idx 分配3個主分片(primary shard),每個主分片1個副本分片(replica shard)。 

Elasticsearch分布式架構原理,我們真的需要知道,很重要

1,ES Client 會挑一個Node,上面挑選了NODE1,則成為協調節點,進行寫入數據,此時ES怎么才能知道將一個文檔(一條酒店數據)路由到哪個分片中呢,實際上,他是根據這個公式:

  1. shard=hash(routing)%number_of_primary_shards 

routing 是一個可變值,默認是文檔的 _id ,也可以設置成一個自定義的值,這里可以是酒店的hotel_id。routing 通過 hash 函數生成一個數字,然后這個數字再除以 number_of_primary_shards (主分片的數量)后得到 余數 。這個分布在 0 到 number_of_primary_shards-1 之間的余數,就是我們所尋求的文檔所在分片的位置。

2,寫完P0后就會同步到他的副本R0中去,同步成功則會返回給協調節點Node1,最后返回Client

3,ES client讀取數據均可以讀取主副分片

如何保證高可用

  • 如上NODE1-master節點宕機了,ES則會進行重新選舉(如果需要后面考慮分享一下分布式選舉專題),假如選了NODE2為master。
  • 如果是非master宕機(node2),master節點node1則會將Node3的R1副本轉為主分片P1接收寫操作,如果NODE2恢復了,則之前的P1轉為R1副本。

如何可擴展

ES在創建索引時就需要指定主分片的數量,所以主分片指定了是不能再擴充的,當存儲容量超過了目前的ES節點,一般有些生產做法是,重新再建立了新索引比目前多一點shard,然后導入數據,但這種也是有些缺點的:這樣做將消耗的時間是我們無法提供的;

我們一般的做法是事先進行預分配,通過事先規劃,我們可以使用 預分配 的方式來完全避免這個問題。

其中,副本分片是可以動態擴展的,在讀取很大的場景下,適當的擴充副本會增加吞吐量。

  1. PUT /hotel_idx/_settings  
  2.  "number_of_replicas" : 2  

如何預估分片容量

其實這個是不好解釋的,因為實在有太多相關的因素了:你使用的硬件、文檔的大小和復雜度、文檔的索引分析方式、運行的查詢類型、執行的聚合以及你的數據模型等等。

生產中經驗建議:

1,基于你準備用于生產環境的硬件創建一個擁有單個節點的集群。

2,創建一個和你準備用于生產環境相同配置和分析器的索引,但讓它只有一個主分片無副本分片。索引實際的文檔(或者盡可能接近實際)。

3,運行實際的查詢和聚合(或者盡可能接近實際)。

基本來說,你需要復制真實環境的使用方式并將它們全部壓縮到單個分片上直到它“掛掉。” 實際上 掛掉 的定義也取決于你:一些用戶需要所有響應在 50 毫秒內返回;另一些則樂于等上 5 秒鐘。

所以,一旦你定義好了單個分片的容量,很容易就可以推算出整個索引的分片數。用你需要索引的數據總數加上一部分預期的增長,除以單個分片的容量,結果就是你需要的主分片個數。

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2019-05-30 09:22:06

5G網絡互聯網

2024-05-28 07:53:35

2023-11-07 08:13:53

分布式網絡

2023-05-29 14:07:00

Zuul網關系統

2022-04-29 09:00:00

Platform架構內核線程

2022-08-28 09:05:34

分布式存儲Ceph

2019-10-10 09:16:34

Zookeeper架構分布式

2022-10-09 09:57:39

物聯網IoT

2016-11-02 12:06:27

分布式系統大數據

2018-01-30 09:07:36

Ceph分布式存儲

2020-03-05 08:00:05

分布式事務數據庫

2020-07-06 14:53:24

分布式鎖系統單機鎖

2022-06-21 08:27:22

Seata分布式事務

2018-01-09 15:44:57

2021-05-07 06:08:03

分布式框架NIO

2020-04-14 11:14:02

PostgreSQL分布式數據庫

2015-05-14 10:23:13

ElasticSear分布式搜索配置文件

2024-03-18 00:00:01

分布式搜索引擎

2024-11-28 15:11:28

2022-06-07 14:38:40

云原生架構云計算
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99成人 | av在线二区 | 久久33| 午夜av电影院 | 久久精品综合 | 成人精品免费视频 | 精品中文字幕在线 | 九九九视频在线 | 亚洲九九精品 | 麻豆一区| 成人三级视频在线观看 | 国产一区二区 | 亚洲成人av | 成av人电影在线 | 欧美区精品| 日韩亚洲一区二区 | 久久福利 | 天堂av资源| 中文字幕免费视频 | 91久久久久 | 亚洲综合大片69999 | 丝袜美腿一区 | 天天综合网永久 | 国产农村妇女精品一区 | 午夜精品一区二区三区在线观看 | 国产精品视频一区二区三区, | 亚洲不卡在线视频 | 一二三区视频 | 午夜在线观看免费 | 欧美视频一级 | 国产伦精品一区二区三区四区视频 | 男女精品久久 | 精品久久视频 | 亚洲一区 | 国产福利精品一区 | 视频精品一区二区三区 | 亚洲国产一区视频 | 欧美精品一区久久 | 亚洲 欧美 激情 另类 校园 | 久久久av| 成人精品鲁一区一区二区 |