<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          VictoriaLogs:一款超低占用的 ElasticSearch 替代方案

          共 2253字,需瀏覽 5分鐘

           ·

          2023-08-27 15:32

          b0bf9bcd494e62baa00f30a705f65677.webpimage.png 背景

          前段時(shí)間我們想實(shí)現(xiàn) Pulsar 消息的追蹤流程,追蹤實(shí)現(xiàn)的效果圖如下:50953aa9505823a0a1d1e2bbb2fbab7a.webp

          實(shí)現(xiàn)其實(shí)比較簡(jiǎn)單,其中最重要的就是如何存儲(chǔ)消息。

          消息的讀取我們是通過(guò) Pulsar 自帶的 BrokerInterceptor 實(shí)現(xiàn)的,對(duì)這個(gè)感興趣的朋友后面會(huì)單獨(dú)做一個(gè)分享。

          根據(jù)這里的顯示內(nèi)容我們大概需要存儲(chǔ)這些信息:

          • 客戶端地址
          • 消息發(fā)布時(shí)間
          • 分發(fā)消費(fèi)者、訂閱者名稱
          • ACK 消費(fèi)者、訂閱者名稱
          • 消息 ID 最終捋了下:150d3b2b87afef80a73e78cf1b236c4f.webp

          都以兩個(gè) consumer 計(jì)算:
          一條消息占用內(nèi)存:140+ 535*2 + 536*2 =2282byte存儲(chǔ)三天:TPS * 86400 * 3=TPS*259200
          總存儲(chǔ):2282*TPS*259200≈ 百GB

          根據(jù)我們的 TPS 計(jì)算,三天的大概會(huì)使用到 上百 G 的存儲(chǔ),這樣首先就排除了 Redis 這種內(nèi)存型數(shù)據(jù)庫(kù)。

          同樣的換成 MySQL 存儲(chǔ)也不劃算,因?yàn)槠鋵?shí)這些數(shù)據(jù)并不算那么重要。

          做了幾個(gè)技術(shù)選型都不太滿意,不是資源開(kāi)銷太大就是沒(méi)有相關(guān)的運(yùn)維經(jīng)驗(yàn)。

          后面在領(lǐng)導(dǎo)的提醒下,我們使用的 VictoriaMetrics 開(kāi)源了一個(gè) VictoriaLogs,雖然當(dāng)時(shí)的版本還是 0.1.0,使用過(guò)他們家 Metrics 的應(yīng)該都會(huì)比較信任他們的技術(shù)能力,所以就調(diào)研了一下。

          具體的信息可以查看官方文檔:https://docs.victoriametrics.com/VictoriaLogs/

          942cf9812fc73c78b814e84a72308772.webpimage.png

          簡(jiǎn)單來(lái)說(shuō)就是它也是一個(gè)日志存儲(chǔ)數(shù)據(jù)庫(kù),并且有著極低的資源占有率,相對(duì)于 ElasticSearch 來(lái)說(shuō)內(nèi)存、磁盤(pán)、CPU 都是幾十倍的下降率。

          bef448b68fa497d5165d4ddb6000d5c3.webpimage.png

          通過(guò)官方的壓測(cè)對(duì)比圖會(huì)發(fā)現(xiàn)確實(shí)在各方面對(duì) ES 都是碾壓。1c84083e028320e1a2a9a42bfad319b8.webp

          官方宣傳的第一反應(yīng)是不能全信,于是我自己壓測(cè)了一下,果然 CPU 內(nèi)存 磁盤(pán)的占用都是極低的。

          同時(shí)也發(fā)現(xiàn)運(yùn)維部署確實(shí)簡(jiǎn)單,直接一個(gè) helm install 就搞定,就是一個(gè)二進(jìn)制文件,不會(huì)依賴第二個(gè)組件。

          按照剛才同樣的數(shù)據(jù)存儲(chǔ)三天,只需要不到 6G 的磁盤(pán)空間,我們生產(chǎn)環(huán)境已經(jīng)平穩(wěn)運(yùn)行一段時(shí)間了。d0f38c1a99be994179f4b1ae3cf4dc5b.webp因?yàn)槲覀兪桥繉?xiě)入數(shù)據(jù)的,所以在最高峰 20K 的 TPSCPU 使用不到 0.1 核,內(nèi)存使用最高 120M,這點(diǎn)確實(shí)是對(duì) ES 碾壓了。

          1cb8a73ceaedb077ac6a6ca18cef03fc.webp磁盤(pán)占用也是非常少。

          這些有點(diǎn)得歸功于它有些的壓縮、編解碼算法,以及 Golang  帶來(lái)的相對(duì)于 Java 的極低資源占用。

          還存在的問(wèn)題

          如果一切都這么完美的話那 VictoriaLogs  確實(shí)也太變態(tài)了, 自然他也有一些不太完美的地方。

          分詞功能有限

          首先第一個(gè)是分詞功能有限,只能做簡(jiǎn)單的搜索,無(wú)法做到類似于 ES 的各種分詞,插件當(dāng)然也別想了。

          不支持集群

          當(dāng)前版本不支持集群部署,也就是無(wú)法橫向擴(kuò)展了;不過(guò)幸好他的的單機(jī)性能已經(jīng)非常強(qiáng)了。

          這也是目前階段部署簡(jiǎn)單的原因。

          過(guò)期時(shí)間無(wú)法混用

          VictoriaLogs 支持為數(shù)據(jù)配置過(guò)期時(shí)間自動(dòng)刪除,有點(diǎn)類似于 Redis,它會(huì)在后臺(tái)啟動(dòng)一個(gè)協(xié)程定期判斷數(shù)據(jù)是否過(guò)期,但只能對(duì)所有數(shù)據(jù)統(tǒng)一設(shè)置。

          比如我想在 VictoriaLogs 中存放兩種不同類型的數(shù)據(jù),同時(shí)他們的過(guò)期刪除時(shí)間也不相同;比如一個(gè)是三天刪除,一個(gè)是三月后刪除。

          這樣的需求目前是無(wú)法實(shí)現(xiàn)的,只能部署兩個(gè) VictoriaLogs.

          默認(rèn)無(wú)法查詢所有字段

          cc6bd82fe4085144cebc3027a651411c.webpimage.png

          由于 VictoriaLogs  可以存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù),默認(rèn)情況下只能查詢內(nèi)置的三個(gè)字段,我們自定義的字段目前沒(méi)法自動(dòng)查詢,需要我們手動(dòng)指定。

          這個(gè)倒不是致命問(wèn)題,只是使用起來(lái)稍微麻煩一些;社區(qū)也有一些反饋,相信不久就會(huì)優(yōu)化該功能。6defb04d652c89b73bf2e871484a7bd2.webp0abca83ffcbb0ba80e34751ed9e3321b.webp

          • https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4780
          • https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4513

          沒(méi)有官方 SDK

          aeae67dc5dbd0f4a2b4cf0bbd2a40a35.webpimage.png

          這也是個(gè)有了更好的一個(gè)功能,目前只能根據(jù) REST API 自己編寫(xiě)。

          總結(jié)

          當(dāng)前我們只用來(lái)存儲(chǔ) Pulsar 鏈路追蹤數(shù)據(jù),目前看來(lái)非常穩(wěn)定,各方面資源占用極少;所以后續(xù)我們會(huì)陸續(xù)講一些日志類型的數(shù)據(jù)遷移過(guò)來(lái),比如審計(jì)日志啥的。

          之后再逐步完善功能后,甚至可以將所有應(yīng)用存放在 ElasticSeach 中的日志也遷移過(guò)來(lái),這樣確實(shí)能省下不少資源。

          總得來(lái)說(shuō) VictoriaLogs  資源占用極少,如果只是拿來(lái)存儲(chǔ)日志相關(guān)的數(shù)據(jù),沒(méi)有很強(qiáng)的分詞需求那它將非常合適。

          截止到目前最新版也才 0.3.0 還有很大的進(jìn)步空間,有類似需求的可以持續(xù)關(guān)注。



          往期推薦



          k8s 常見(jiàn)面試題

          新手如何快速參與開(kāi)源項(xiàng)目

          從 Pulsar Client 的原理到它的監(jiān)控面板

          使用 ChatGPT 碰到的坑

           

          9adcab765445bdba6a9131342cc122c6.webp點(diǎn)分享 58dd8bfa171defb473f04926dc576ef7.webp點(diǎn)收藏 fff4610979f0969ec417d2d11b499d6a.webp點(diǎn)點(diǎn)贊 0b459feeaaef942a37adc875ed3a1981.webp點(diǎn)在看

           

          瀏覽 55
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产乱妇无码毛片A片在线看下载 | 新国产在线观看色情 | 人人做天天爱夜夜 | 一区二区三区视频在线观看 | 免费黄色成人网站 |