<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>

          RedisJSON 橫空出世!

          共 5732字,需瀏覽 12分鐘

           ·

          2021-12-23 00:17

          概述


          近期官網給出了RedisJson(RedisSearch)的性能測試報告,可謂碾壓其他NoSQL,下面是核心的報告內容,先上結論:


          • 對于隔離寫入(isolated writes),RedisJSON 比 MongoDB 快 5.4 倍,比 ElasticSearch 快 200 倍以上。

          • 對于隔離讀取(isolated reads),RedisJSON 比 MongoDB 快 12.7 倍,比 ElasticSearch 快 500 倍以上。


          在混合工作負載場景中,實時更新不會影響 RedisJSON 的搜索和讀取性能,而 ElasticSearch 會受到影響。以下是具體的數(shù)據(jù):


          • RedisJSON* 支持的操作數(shù)/秒比 MongoDB 高約 50 倍,比 ElasticSearch 高 7 倍/秒。

          • RedisJSON* 的延遲比 MongoDB 低約 90 倍,比 ElasticSearch 低 23.7 倍。


          此外,RedisJSON 的讀取、寫入和負載搜索延遲在更高的百分位數(shù)中遠比 ElasticSearch 和 MongoDB 穩(wěn)定。當增加寫入比率時,RedisJSON 還能處理越來越高的整體吞吐量,而當寫入比率增加時,ElasticSearch 會降低它可以處理的整體吞吐量。


          查詢引擎


          如前所述,reresearch和RedisJSON的開發(fā)非常強調性能。對于每一個版本,我們都想確保開發(fā)者可以體驗到穩(wěn)定和產品。為此,我們我們給出了一些分析工具、探測器來進行性能分析。


          并且,我們每次發(fā)行新版本時時,也在不斷的提升性能。特別是對于reresearch來說,2.2版本在加載和查詢性能上都比2.0快了1.7倍,同時還改進了吞吐量和數(shù)據(jù)加載的延遲。


          1.加載優(yōu)化


          接下來的兩個圖顯示了運行紐約市出租車基準測試的運行結果。該基準測試測量了吞吐量和加載耗時等基礎數(shù)據(jù)。




          從這些圖表中可以看出,每一個reresearch的新版本都有一個實質性的性能改進。


          2.全文搜索優(yōu)化


          為了評估搜索性能,我們索引了590萬篇維基百科摘要。然后我們運行一個全文搜索查詢面板,得到的結果如下圖所示




          從上面的圖可以看出,通過從v2.0遷移到v2.2,同樣的數(shù)據(jù),在寫、讀、搜索(延遲圖)方面都有了大幅度的改進,從而提高了運行Search和JSON的可實現(xiàn)吞吐量。


          和其他框架的對比


          為了評估RedisJSON的性能,我們決定將它與MongoDB和ElasticSearch進行比較。為了方便對比,我們會從文檔存儲、本地可用、云中可用、專業(yè)支持和提供可伸縮性、性能等方面進行全方位的對比。


          我們使用了完善的YCSB標準來進行測試對比,它能夠基于常見的工作負載來評估不同的產品,測量延遲、吞吐量曲線直到飽和。除了CRUD YCSB操作之外,我們還添加了一個兩個字的搜索操作,專門幫助開發(fā)人員、系統(tǒng)架構師和DevOps從業(yè)者找到適合他們用例的最佳搜索引擎。


          1. 基準測試


          此次測試,我們使用了如下的一些軟件環(huán)境:


          • MongoDB v5.0.3

          • ElasticSearch 7.15

          • RedisJSON (RediSearch 2.2+RedisJSON 2.0)


          此次是在Amazon Web Services 實例上運行基準測試,這三種解決方案都是分布式數(shù)據(jù)庫,并且最常用于生產中的分布式方式。這就是為什么所有產品都使用相同的通用 m5d.8xlarge VM 和本地 SSD,并且每個設置由四個 VM 組成:一個客戶端 + 三個數(shù)據(jù)庫服務器。基準測試客戶端和數(shù)據(jù)庫服務器都在處于最佳網絡條件下的單獨 m5d.8xlarge 實例上運行,將實例緊密地打包在一個可用區(qū)內,實現(xiàn)穩(wěn)態(tài)分析所需的低延遲和穩(wěn)定的網絡性能。


          測試是在三節(jié)點集群上執(zhí)行的,部署細節(jié)如下:


          • MongoDB 5.0.3:三成員副本集(Primary-Secondary-Secondary)。副本用于增加讀取容量并允許更低的延遲讀取。為了支持對字符串內容的文本搜索查詢,在搜索字段上創(chuàng)建了一個文本索引。

          • ElasticSearch 7.15:15 個分片設置,啟用查詢緩存,并為 2 個基于 NVMe 的本地 SSD 提供 RAID 0 陣列,以實現(xiàn)更高級別的文件系統(tǒng)相關彈性操作性能。這 15 個分片為我們?yōu)?Elastic 所做的所有分片變體提供了可實現(xiàn)的最佳性能結果。

          • RedisJSON*:RediSearch 2.2 and RedisJSON 2.0: OSS Redis Cluster v6.2.6,有27個分片,均勻分布在三個節(jié)點上,加載了RediSearch 2.2和RedisJSON 2.0 OSS模塊。


          除了這個主要的基準/性能分析場景之外,我們還在網絡、內存、CPU 和 I/O 上運行基準基準測試,以了解底層網絡和虛擬機特性。在整個基準測試集期間,網絡性能保持在帶寬和 PPS 的測量限制以下,以產生穩(wěn)定穩(wěn)定的超低延遲網絡傳輸(每個數(shù)據(jù)包 p99 < 100micros)。


          接下來,我們將從提供單獨的操作性能 [100% 寫入] 和 [100% 讀取] 開始,并以一組混合工作負載結束以模擬現(xiàn)實工作中的應用程序場景。


          2. 100% 寫入基準


          如下圖所示,該基準測試表明,RedisJSON* 的攝取速度比 ElasticSearch 快 8.8 倍,比 MongoDB 快 1.8 倍,同時保持每個操作的亞毫秒級延遲。值得注意的是,99% 的 Redis 請求在不到 1.5 毫秒的時間內完成。


          此外,RedisJSON* 是我們測試過的唯一一種在每次寫入時自動更新其索引的解決方案。這意味著任何后續(xù)的搜索查詢都會找到更新的文檔。ElasticSearch 沒有這種細粒度的容量;它將攝取的文檔放在一個內部隊列中,并且該隊列由服務器(不受客戶端控制)每 N 個文檔或每 M 秒刷新一次。他們稱這種方法為近實時 (NRT)。Apache Lucene 庫(它實現(xiàn)了 ElasticSearch 的全文功能)旨在快速搜索,但索引過程復雜且繁重。如這些 WRITE 基準測試圖表所示,由于這種“設計”限制,ElasticSearch 付出了巨大的代價。


          結合延遲和吞吐量改進,RedisJSON* 比 Mongodb 快 5.4 倍,比 ElasticSearch 快 200 倍以上,用于隔離寫入。





          3. 100% 讀取基準


          與寫類似,我們可以觀察到 Redis 在讀取方面表現(xiàn)最佳,允許讀取比 ElasticSearch 多 15.8 倍,比 MongoDB 多 2.8 倍,同時在整個延遲范圍內保持亞毫秒級延遲,如下表所示。


          在結合延遲和吞吐量改進時,RedisJSON* 比 MongoDB 快 12.7 倍,比 ElasticSearch 快 500 倍以上,用于隔離讀取。




          4. 混合讀/寫/搜索基準


          實際應用程序工作負載幾乎總是讀取、寫入和搜索查詢的混合。因此,在接近飽和時了解由此產生的混合工作負載吞吐量曲線更為重要。


          作為起點,我們考慮了 65% 搜索和 35% 讀取的場景,這代表了一個常見的現(xiàn)實世界場景,在該場景中,我們執(zhí)行的搜索/查詢比直接讀取更多。65% 搜索、35% 讀取和 0% 更新的初始組合也導致 ElasticSearch 和 RedisJSON* 的吞吐量相等。盡管如此,YCSB 工作負載允許您指定搜索/讀取/更新之間的比率以滿足您的要求。


          “搜索性能”可以指不同類型的搜索,例如“匹配查詢搜索”、“分面搜索”、“模糊搜索”等等。我們所做的最初向 YCSB 增加的搜索工作負載僅專注于“匹配查詢搜索”,模仿分頁的兩詞查詢匹配,按數(shù)字字段排序。“匹配查詢搜索”是任何啟用搜索功能的供應商進行搜索分析的起點,因此,每個支持 YCSB 的數(shù)據(jù)庫/驅動程序都應該能夠在其基準驅動程序上輕松啟用此功能。


          在每個測試變體中,我們添加了 10% 的寫入,以按相同的比例混合和減少搜索和讀取百分比。這些測試變體的目標是了解每個產品如何處理數(shù)據(jù)的實時更新,我們認為這是事實上的架構目標,即寫入立即提交到索引,讀取始終是最新的。



          正如您在圖表中所看到的,在 RedisJSON* 上不斷更新數(shù)據(jù)和增加寫入比例不會影響讀取或搜索性能并提高整體吞吐量。對數(shù)據(jù)產生的更新越多,對 ElasticSearch 性能的影響就越大,最終導致讀取和搜索速度變慢。


          ElasticSearch 可實現(xiàn)的 ops/sec 從 0% 更新到 50% 的演變,我們注意到它在 0% 更新基準上以 10k Ops/sec 開始,并受到嚴重影響,減少了 5 倍的 ops/sec,在50% 更新率基準。


          與我們在上述單個操作基準中觀察到的類似,MongoDB 搜索性能比 RedisJSON* 和 ElasticSearch 慢兩個數(shù)量級,MongoDB 的最大總吞吐量為 424 ops/sec,而 RedisJSON* 為 16K 最大 ops/sec。


          最后,對于混合工作負載,RedisJSON* 支持的操作數(shù)/秒比 MongoDB 高 50.8 倍,比 ElasticSearch 高 7 倍。如果我們將分析集中在混合工作負載期間的每種操作類型的延遲上,與 MongoDB 相比,RedisJSON* 可將延遲降低多達 91 倍,與 ElasticSearch 相比,延遲降低 23.7 倍。


          5. 完整延遲分析


          與測量每個解決方案飽和之前產生的吞吐量曲線類似,在所有解決方案通用的可持續(xù)負載下進行完整的延遲分析也很重要。這將使您能夠了解對于所有已發(fā)布操作在延遲方面最穩(wěn)定的解決方案是什么,以及哪種解決方案不易受到應用程序邏輯引發(fā)的延遲峰值的影響(例如,彈性查詢緩存未命中)。如果您想更深入地了解我們?yōu)槭裁匆@樣做,Gil Tene 提供了延遲測量注意事項的深入概述。


          • 查看上一節(jié)的吞吐量圖表,并關注 10% 更新基準以包含所有三個操作,我們做了兩種不同的可持續(xù)負載變化:

          • 250 ops/sec:比較 MongoDB、ElasticSearch 和 RedisJSON*,低于 MongoDB 的壓力率。

          • 6000 ops/sec:比較 ElasticSearch 和 RedisJSON*,低于 ElasticSearch 壓力率。


          1 MongoDB 與 ElasticSearch 與 RedisJSON* 的延遲分析


          在下面的第一張圖片中,展示了從 p0 到 p9999 的百分位數(shù),很明顯,在每次搜索時,MongoDB 的表現(xiàn)都遠遠優(yōu)于 Elastic 和 RedisJSON*。此外,關注 ElasticSearch 與 RedisJSON*,很明顯,ElasticSearch 容易受到較高延遲的影響,這很可能是由垃圾收集 (GC) 觸發(fā)器或搜索查詢緩存未命中引起的。


          RedisJSON* 的 p99 低于 2.61 毫秒,而 ElasticSearch p999 搜索達到 10.28 毫秒。



          在下面的讀取和更新圖表中,我們可以看到 RedisJSON* 在所有延遲范圍內表現(xiàn)最佳,其次是 MongoDB 和 ElasticSearch。


          RedisJSON* 是在所有分析的延遲百分位數(shù)上保持亞毫秒級延遲的唯一解決方案。在 p99,RedisJSON* 的延遲為 0.23 毫秒,其次是 MongoDB 的 5.01 毫秒和 ElasticSearch 的 10.49 毫秒。



          在寫入時,MongoDB 和 RedisJSON* 即使在 p99 時也能保持亞毫秒級的延遲。另一方面,ElasticSearch 顯示出高尾延遲(> 10 毫秒),這很可能與導致 ElasticSearch 搜索峰值的原因 (GC) 相同。



          2. ElasticSearch 與 RedisJSON 的延遲分析


          僅關注 ElasticSearch 和 RedisJSON*,在保持 6K ops/sec 的可持續(xù)負載的同時,我們可以觀察到 Elastic 和 RedisJSON* 的讀取和更新模式與以 250 ops/sec 進行的分析保持一致。RedisJSON* 是更穩(wěn)定的解決方案,其 p99 讀取時間為 3 毫秒,而 Elastic 的 p99 讀取時間為 162 毫秒。


          在更新時,RedisJSON* 保留了 3 毫秒的 p99,而 ElasticSearch 則保留了 167 毫秒的 p99。




          專注于搜索操作,ElasticSearch 和 RedisJSON* 以個位數(shù) p50 延遲開始(p50 RedisJSON* 為 1.13 毫秒,而 ElasticSearch 的 p50 為 2.79 毫秒),其中 ElasticSearch 付出了 GC 觸發(fā)和查詢緩存未命中的代價在較高的百分位數(shù)上,在 >= p90 百分位數(shù)上清晰可見。


          RedisJSON* 將 p99 保持在 33 毫秒以下,而 ElasticSearch 上的 p99 百分位數(shù)為 163 毫秒,高出 5 倍。


          來源:blog.csdn.net/xiangzhihong8/article/details/121530019


          推薦閱讀:

          世界的真實格局分析,地球人類社會底層運行原理

          不是你需要中臺,而是一名合格的架構師(附各大廠中臺建設PPT)

          企業(yè)IT技術架構規(guī)劃方案

          論數(shù)字化轉型——轉什么,如何轉?

          華為干部與人才發(fā)展手冊(附PPT)

          企業(yè)10大管理流程圖,數(shù)字化轉型從業(yè)者必備!

          【中臺實踐】華為大數(shù)據(jù)中臺架構分享.pdf

          華為的數(shù)字化轉型方法論

          華為如何實施數(shù)字化轉型(附PPT)

          超詳細280頁Docker實戰(zhàn)文檔!開放下載

          華為大數(shù)據(jù)解決方案(PPT)


          瀏覽 49
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  欧美大屌网站 | 天天日天天透 | 亚洲日韩人兽在线 | 丁香人人六月综合查询 | 精久久久久久久91 |