成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ES冷熱架構(gòu)

IT那活兒 / 3038人閱讀
ES冷熱架構(gòu)

點(diǎn)擊上方“IT那活兒”,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!



冷熱架構(gòu)介紹
為了保證Elasticsearch的讀寫性能,官方建議磁盤使用SSD固態(tài)硬盤。
然而Elasticsearch要解決的是海量數(shù)據(jù)的存儲和檢索問題,海量的數(shù)據(jù)就意味需要大量的存儲空間,如果都使用SSD固態(tài)硬盤成本將成為一個很大的問題,這也是制約許多企業(yè)和個人使用Elasticsearch的因素之一。為了解決這個問題,Elasticsearch冷熱分離架構(gòu)應(yīng)運(yùn)而生。
冷熱架構(gòu)是一項(xiàng)十分強(qiáng)大的功能,能夠讓將 Elasticsearch 部署劃分為“熱”數(shù)據(jù)節(jié)點(diǎn)和“冷”數(shù)據(jù)節(jié)點(diǎn)。
熱數(shù)據(jù)節(jié)點(diǎn)處理所有新輸入的數(shù)據(jù),并且存儲速度也較快,以便確??焖俚夭杉蜋z索數(shù)據(jù)。
冷節(jié)點(diǎn)的存儲密度則較大,如需在較長保留期限內(nèi)保留日志數(shù)據(jù),不失為一種具有成本效益的方法。
將這兩種類型的數(shù)據(jù)節(jié)點(diǎn)結(jié)合到一起后,便能夠有效地處理輸入數(shù)據(jù),并將其用于查詢,同時還能在節(jié)省成本的前提下在較長時間內(nèi)保留數(shù)據(jù)。此架構(gòu)對日志用例來說尤其大有幫助,因?yàn)樵谌罩居美校藗兊拇蟛糠志Χ紩W⒂诮诘娜罩荆ɡ缱罱鼉芍埽?,而較早的日志(由于合規(guī)性或者其他原因仍需要保留)則可以接受較慢的查詢時間。

冷熱架構(gòu)架構(gòu)圖



典型應(yīng)用場景
一句話:在成本有限的前提下,讓客戶關(guān)注的實(shí)時數(shù)據(jù)和歷史數(shù)據(jù)硬件隔離,最大化解決客戶反應(yīng)的響應(yīng)時間慢的問題。
業(yè)務(wù)場景描述:
每日增量6TB日志數(shù)據(jù),高峰時段寫入及查詢頻率都較高,集群壓力較大,查詢ES時,常出現(xiàn)查詢緩慢問題。
ES集群的索引寫入及查詢速度主要依賴于磁盤的IO速度,冷熱數(shù)據(jù)分離的關(guān)鍵為使用SSD磁盤存儲熱數(shù)據(jù),提升查詢效率。
若全部使用SSD,成本過高,且存放冷數(shù)據(jù)較為浪費(fèi),因而使用普通SATA磁盤與SSD磁盤混搭,可做到資源充分利用,性能大幅提升的目標(biāo)。



測試環(huán)境配置





冷熱分離架構(gòu)實(shí)現(xiàn)
ElasticSearch冷熱分離架構(gòu)是一種思想,其實(shí)現(xiàn)原理是使用ElasticSearch的路由完成,在data節(jié)點(diǎn)設(shè)置對應(yīng)的路由,然后在創(chuàng)建索引庫時指定分布到那些服務(wù)器,過一段時間之后,根據(jù)業(yè)務(wù)要求在將這些索引庫的數(shù)據(jù)進(jìn)行遷移到其他data節(jié)點(diǎn)中。
--hot節(jié)點(diǎn)參數(shù)配置:
cluster.name : es-cluster
node.name : es01
node.master : true
node.data : true
network.host : 192.168.43.137
transport.tcp.port : 9300
http.port : 9200
http.cors.enabled : true
http.cors.allow-origin : "*"
bootstrap.memory_lock : true
path.data : /home/elasticsearch/data
path.logs : /home/elasticsearch/logs
discovery.zen.ping.unicast.hosts : ["192.168.43.137:9300","192.168.43.137:9301", "192.168.43.138:9300", "192.168.43.139:9300", "192.148.43.140:9300"]
discovery.zen.minimum_master_nodes : 1
xpack.security.enabled : true
xpack.security.transport.ssl.enabled : true
xpack.security.transport.ssl.verification_mode: certificate
xpack.ssl.key: elasticsearch-6.8.2/elasticsearch-6.8.2.key
xpack.ssl.certificate: elasticsearch-6.8.2/elasticsearch-6.8.2.crt
xpack.ssl.certificate_authorities: ca/ca.crt
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
node.attr.box_type: hot


cluster.name : es-cluster
node.name : es02
node.master : false
node.data : true
network.host : 192.168.43.138
transport.tcp.port : 9300
http.port : 9200
http.cors.enabled : true
http.cors.allow-origin : "*"
bootstrap.memory_lock : true
path.data : /home/elasticsearch/data
path.logs : /home/elasticsearch/logs
discovery.zen.ping.unicast.hosts : ["192.168.43.137:9300","192.168.43.137:9301", "192.168.43.138:9300", "192.168.43.139:9300", "192.148.43.140:9300"]
discovery.zen.minimum_master_nodes : 1
xpack.security.enabled : true
xpack.security.transport.ssl.enabled : true
xpack.security.transport.ssl.verification_mode: certificate
xpack.ssl.key: elasticsearch-6.8.2/elasticsearch-6.8.2.key
xpack.ssl.certificate: elasticsearch-6.8.2/elasticsearch-6.8.2.crt
xpack.ssl.certificate_authorities: ca/ca.crt
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
node.attr.box_type: hot


cluster.name : es-cluster
node.name : node-2021070702
node.master : false
node.data : true
network.host : 192.168.43.137
transport.tcp.port : 9300
http.port : 9200
http.cors.enabled : true
http.cors.allow-origin : "*"
bootstrap.memory_lock : true
discovery.zen.ping.unicast.hosts : ["192.168.43.137:9300","192.168.43.137:9301", "192.168.43.138:9300", "192.168.43.139:9300", "192.148.43.140:9300"]
discovery.zen.minimum_master_nodes : 1
xpack.security.enabled : true
xpack.security.transport.ssl.enabled : true
xpack.security.transport.ssl.verification_mode: certificate
xpack.ssl.key: elasticsearch-6.8.2/elasticsearch-6.8.2.key
xpack.ssl.certificate: elasticsearch-6.8.2/elasticsearch-6.8.2.crt
xpack.ssl.certificate_authorities: ca/ca.crt
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
node.attr.box_type: hot


cluster.name : es-cluster
node.name : es03
node.master : false
node.data : true
network.host : 192.168.43.139
transport.tcp.port : 9300
http.port : 9200
http.cors.enabled : true
http.cors.allow-origin : "*"
bootstrap.memory_lock : true
path.data : /home/elasticsearch/data
path.logs : /home/elasticsearch/logs
discovery.zen.ping.unicast.hosts : ["192.168.43.137:9300","192.168.43.137:9301", "192.168.43.138:9300", "192.168.43.139:9300", "192.148.43.140:9300"]
discovery.zen.minimum_master_nodes : 1
xpack.security.enabled : true
xpack.security.transport.ssl.enabled : true
xpack.security.transport.ssl.verification_mode: certificate
xpack.ssl.key: elasticsearch-6.8.2/elasticsearch-6.8.2.key
xpack.ssl.certificate: elasticsearch-6.8.2/elasticsearch-6.8.2.crt
xpack.ssl.certificate_authorities: ca/ca.crt
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
node.attr.box_type: cold
--cold節(jié)點(diǎn)參數(shù)配置:
cluster.name : es-cluster
node.name : es04
node.master : false
node.data : true
network.host : 192.168.43.140
transport.tcp.port : 9300
http.port : 9200
http.cors.enabled : true
http.cors.allow-origin : "*"
bootstrap.memory_lock : true
path.data : /home/elasticsearch/data
path.logs : /home/elasticsearch/logs
discovery.zen.ping.unicast.hosts:["192.168.43.137:9300","192.168.43.137:9301","192.168.43.138:9300", "192.168.43.139:9300", "192.148.43.140:9300"]
discovery.zen.minimum_master_nodes : 1
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.ssl.key: elasticsearch-6.8.2/elasticsearch-6.8.2.key
xpack.ssl.certificate: elasticsearch-6.8.2/elasticsearch-6.8.2.crt
xpack.ssl.certificate_authorities: ca/ca.crt
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
node.attr.box_type: cold




索引庫設(shè)置
在創(chuàng)建索引庫的時候需要指定默認(rèn)索引庫的分片歸屬,如果沒有指定,就會根據(jù)ElasticSearch默認(rèn)進(jìn)行均勻分布。這里我們將索引庫默認(rèn)創(chuàng)建到hot節(jié)點(diǎn)中,滿足業(yè)務(wù)條件之后在使用命令或代碼將該索引庫設(shè)置到冷節(jié)點(diǎn)中。
索引示例:
創(chuàng)建索引test_20220125,主分片數(shù)5,副本數(shù)1,索引刷新時間10s,索引存放至hot節(jié)點(diǎn)。
curl -XPUT -H "Content-Type: application/json" http://elastic:[email protected]:9200/test_20220125 -d
{
  "index":"test_20220125",
  "settings": {
    "number_of_shards" :5,
    "number_of_replicas" : 1,
    "refresh_interval" : "10s",
    "index.routing.allocation.require.box_type":"hot"
  }
}
查看此時該索引的分片分布情況,分片全部分布在hot節(jié)點(diǎn)上。
向索引test_20220125中插入數(shù)據(jù):
curl -H "Content-Type: application/json" -XPOST -u elastic:qwer123 -s http://192.168.43.139:9200/test_20220125/_doc -d 
{
"name":"dd",
"age":"23",
"profession":"dd"
}
查詢索引test_20220125數(shù)據(jù):
curl -H "Content-Type: application/json" -XGET -u elastic:qwer123 -s http://192.168.43.138:9200/test_20220125/_search?pretty -d
{
"size" : 1
}



將該索引遷移至cold節(jié)點(diǎn):
curl -XPUT -H "Content-Type: application/json" http://elastic:[email protected]:9200/test_20220125/_settings -d
{
"index.routing.allocation.require.box_type":"cold"
}
查看此時該索引的分片分布情況,分片全部遷移至cold節(jié)點(diǎn)上。
測試此時索引test_20220125是否正常,可以看到索引已正常遷移至cold節(jié)點(diǎn),索引可正常查詢寫入。
插入一條數(shù)據(jù):
curl -H "Content-Type: application/json" -XPOST -u elastic:qwer123 -s http://192.168.43.139:9200/test_20220125/_doc -d 
{
"name":"cc",
"age":"26",
"profession":"cc"
}
查看索引數(shù)據(jù):
curl -H "Content-Type: application/json" -XGET -u elastic:qwer123 -s http://192.168.43.138:9200/test_20220125/_search?pretty -d
{
"size" : 2
}


本文作者:劉能

本文來源:IT那活兒(上海新炬王翦團(tuán)隊(duì))


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129559.html

相關(guān)文章

  • ES分布式架構(gòu)及底層原理

    摘要:分布式架構(gòu)原理設(shè)計(jì)的理念就是分布式搜索引擎,底層實(shí)現(xiàn)還是基于的,核心思想是在多態(tài)機(jī)器上啟動多個進(jìn)程實(shí)例,組成一個集群。 es分布式架構(gòu)原理 elasticsearch設(shè)計(jì)的理念就是分布式搜索引擎,底層實(shí)現(xiàn)還是基于Lucene的,核心思想是在多態(tài)機(jī)器上啟動多個es進(jìn)程實(shí)例,組成一個es集群。一下是es的幾個概念: 接近實(shí)時es是一個接近實(shí)時的搜索平臺,這就意味著,從索引一個文檔直到文檔...

    Ocean 評論0 收藏0
  • 馬蜂窩大交通業(yè)務(wù)監(jiān)控報(bào)警系統(tǒng)架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)

    摘要:為了讓大交通下的各業(yè)務(wù)線都能夠通過報(bào)警盡早發(fā)現(xiàn)問題解決問題,進(jìn)而提升業(yè)務(wù)系統(tǒng)的服務(wù)質(zhì)量,我們決定構(gòu)建統(tǒng)一的監(jiān)控報(bào)警系統(tǒng)。本文主要介紹馬蜂窩大交通業(yè)務(wù)監(jiān)控報(bào)警系統(tǒng)的定位整體架構(gòu)設(shè)計(jì),以及我們在落地實(shí)踐過程中的一些踩坑經(jīng)驗(yàn)。 部門的業(yè)務(wù)線越來越多,任何一個線上運(yùn)行的應(yīng)用,都可能因?yàn)楦鞣N各樣的原因出現(xiàn)問題:比如業(yè)務(wù)層面,訂單量比上周減少了,流量突然下降了;技術(shù)層面的問題,系統(tǒng)出現(xiàn) ERROR...

    smartlion 評論0 收藏0
  • 一條數(shù)據(jù)的漫游奇遇記

    摘要:基本邏輯一條數(shù)據(jù)在結(jié)構(gòu)中的旅程,從寫入開始,然后進(jìn)入,這是整個生命周期的第一處落腳點(diǎn)。每一層數(shù)據(jù)按排序,層與層之間的會交疊。上面是宏觀邏輯結(jié)構(gòu),如果具體來論讀寫操作和如何進(jìn)行,就需要探討每一層的數(shù)據(jù)組織方式每個變種的實(shí)現(xiàn)各不相同。 阿里妹導(dǎo)讀:數(shù)據(jù)庫存儲引擎是一個有歷史的技術(shù),經(jīng)過數(shù)十年的發(fā)展,已經(jīng)出現(xiàn)很多優(yōu)秀成熟的產(chǎn)品。阿里巴巴 X-Engine 團(tuán)隊(duì)撰寫的論文 X-Engine:...

    Godtoy 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<