亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

天翼云TeleDB - 關于發展Redis的思路思考

2024-06-19 09:36:44
38
0
 

前言

本文旨在闡述關于Redis數據庫發展的一些思考,包括如何以較低成本自主研發Redis數據庫以及商業化實踐的相關考慮。文章首先介紹Redis官方社區的發展狀況,開源的Redis相關產品,最后闡述筆者對Redis數據庫發展的觀點。

 

redis官方開源協議

redis labs在3.20日宣布,項目的開源協議發生了重大改變,從非常寬松的BSD許可證轉為Redis源代碼可用許可證(RSALv2)和服務器端公共許可證(SSPLv1)下雙重許可。BSD許可證是一種寬松的開源許可證,而新的許可證則更加嚴格。RSALv2許可證允許用戶查看、修改和分發Redis的源代碼,但限制了商業化使用,特別是禁止將軟件作為管理服務提供給他人,并且要求保留所有許可、版權和其他聲明。SSPLv1要求任何在服務端運行的衍生作品都必須以相同的許可證開源,并且不得以專有軟件形式提供。

 

因此,新許可證要求托管Redis產品的云服務提供商不再被允許免費使用Redis源代碼(從redis 7.4版本開始),除非與Redis公司達成許可協議。這意味著合作可能需要支付一些費用。那么想用最新版本的特性,是否一定要跟Redis官方合作呢?不一定。現在有很多開源的Redis競品,其本身的開源社區和開源協議都比較友好,在這基礎上自研可能是一種好的思路。

開源redis競品

KeyDB

優點

● 7.6kstar,最近更新2個月前

● 多線程架構,完全兼容redis協議

特性

● 多線程架構,核心哈希表的訪問由spinlock保護

● jemalloc優化內存管理

● KeyDB完全兼容Redis協議

● 在相同的硬件上,KeyDB可以實現比Redis高得多的吞吐量

多線程介紹

KeyDB的多線程處理涉及到網絡IO、命令的解析和部分命令的執行階段。

在KeyDB中,網絡IO和命令的解析是由多個線程并行處理的。當客戶端發送請求到KeyDB時,網絡IO線程負責接收和發送數據,而命令的解析則由解析線程負責。解析線程將接收到的命令解析為相應的數據結構,并將其放入到命令隊列中等待處理。

另外,KeyDB的多線程模型還涉及到部分命令的執行階段。具體來說,KeyDB使用了多個工作線程來執行部分命令。這些命令通常是不涉及數據競爭的,可以并行執行的命令,例如GET、SET等操作。通過將這些命令的執行分發到多個工作線程,KeyDB可以提高命令的并發處理能力和響應速度。

然而,對于涉及到數據競爭的命令,例如涉及到同一鍵的操作,KeyDB會使用鎖機制來保證數據的一致性,以避免并發訪問導致的問題。

需要注意的是,并非所有的命令都能夠完全并行處理,因為某些命令的執行涉及到特定的順序或操作依賴關系。在這些情況下,KeyDB可能需要等待前一個命令的執行完成才能執行下一個命令。

綜上所述,KeyDB的多線程處理包括網絡IO、命令的解析和部分命令的執行階段。通過并行處理這些階段,KeyDB可以提高并發處理能力和響應性能。

 

pika(PikiwiDB)

優點

● 5.1kstar,GitHub代碼保持最近更新

● 性能跟redis相比,略差點,但也很高,99.9% get/set在2ms以內,測試環境為:

● 多個互聯網公司投入使用

● pika可結合twemproxy或者codis中實現靜態數據分片

● 支持主從,分布式模式

● 容量大:基于rocksdb,持久化存儲,數據存在磁盤上,最大使用空間等于磁盤空間的大小,可解決由于存儲數據量巨大而導致內存不夠的容量瓶頸

● 加載db速度快:Pika在寫入的時候, 數據是落盤的, 所以即使節點掛了, 不需要rdb或者oplog,Pika重啟不用加載所有數據到內存就能恢復之前的數據, 不需要進行回放數據操作。

● 備份速度快:Pika備份的速度大致等同于cp的速度(拷貝數據文件后還有一個快照的恢復過程,會花費一些時間),這樣在對于百G大庫的備份是快捷的,更快的備份速度更好的解決了主從的全同步問題

● 完全支持redis協議,不用修改代碼即可平滑從Redis遷移到Pika

● 兼容string,hash,list,set的絕大部分接口

● 支持主從備份,支持全同步和部分同步

● 完善的運維命令

● Pika 是多線程的結構,因此在線程數比較多的情況下,某些數據結構的性能可以優于 Redis

● 部署模式:1主N從同步模式和分布式模式

劣勢

由于Pika是基于內存和文件來存放數據, 所以性能肯定比Redis低一些, 但是我們一般使用SSD盤來存放數據, 盡可能跟上Redis的性能

使用場景

如果你的業務場景的數據比較大,Redis 很難支撐, 比如大于50G,或者你的數據很重要,不允許斷電丟失,那么使用Pika 就可以解決你的問題。

 

攜程Redis-On-Rocks

特點

● 分層存儲,冷熱分離,冷數據存放在rocksdb上,熱數據存放到redis中

● 內存達到最大內存限制,swap out, least frequently used key(LFU)將數據交換到RocksDB(磁盤)

● ROR采用磁盤增加了緩存容量,能容納更多的數據量,但RocksDB引擎的compaction和壓縮會消耗更多的CPU資源,因此ROR可以認為是用空閑的CPU換內存的成本解決方案。

 

優點

● 分層存儲,成本方面,經驗數據顯示1個ROR實例可容納3個redis實例的數據,因此redis遷ROR能節省2/3的成本

● 跟隨redis社區更新

缺點

● swap會有代價

● 延時會有上升,以下為一個典型redis集群遷移ROR后延遲對比,其中80%為冷數據、20%為熱數據,遷移前后客戶端訪問延遲從200us變為220us左右。

 

 

 

kvrocks

開源協議友好,KVRocks 項目遵循的開源協議是 Apache License Version 2.0。這意味著 Kvrocks 允許用戶自由地使用、修改和分發該軟件,同時需要遵守該許可證的條款,比如保留版權聲明、不使用 Apache 名稱進行宣傳等。Apache License 2.0 是一種寬松的開源許可證,它允許商業使用,并且不需要公開派生作品的源代碼。

優點

Redis 協議兼容:KVRocks 兼容 Redis 協議,這意味著它可以無縫對接現有的 Redis 客戶端,無需修改代碼即可遷移。

高可用架構:支持 Redis Sentinel 進行故障轉移,保證了服務的連續性。

降低成本:相比 Redis,KVRocks 旨在降低內存使用成本,提高存儲容量。

社區支持:社區活躍,KVRocks 得到了社區的廣泛支持和貢獻,包括來自不同企業的使用和反饋。

企業級應用:KVRocks 已經被一些知名企業采用,如美圖、攜程、白山云等,百度云也是直接售賣,這證明了其在實際應用中的可靠性和效能。

缺點

學習曲線:對于不熟悉 RocksDB 或分布式系統的開發者來說,可能需要一定的學習時間來掌握 KVRocks。

生態系統:Redis 擁有龐大的生態系統和豐富的客戶端庫,KVRocks 可能在生態系統的豐富性上不如 Redis。

維護和更新:作為一個相對較新的項目,KVRocks 的維護和更新頻率可能不如成熟的 Redis。

文檔和資源:雖然 KVRocks 提供了文檔和命令支持,但可能沒有 Redis 那樣詳盡和易于獲取的資源。

 

 

發展redis的思考

結合上面的調研,選擇在kvrocks這款開源redis產品上進行自研,主要是因為開源協議友好,而且Kvrocks 是 Apache 軟件基金會的一個項目,社區國內很多廠家,包括百度云也是直接售賣,針對redis的高級特性和AI大模型火熱,我的發展思路大概有下面這些:

1.  在kvrocks開源代碼基礎上進行自研,同時緊跟最新的特性;

2.  redis分層存儲(Auto Tiering)、解決數據量太大而單機內存不足的問題,分層存儲的核心是冷熱數據分離,冷數據交換到磁盤,熱數據保存在磁盤,一個實現思路是用 OpenDAL 做分級存儲,這個特性可以大幅降低內存使用成本;

3.  docker化 + 存算分離架構引進,docker部署應該是已經支持了,在量級比較大的情況下,引入存算分離架構,可以減少機器成本,實現資源的超賣;

4.  Redis + AI大模型,redis最新特性是已經支持向量化相關特性,傳統的redis是作為緩存使用,這里可以繼續在AI大模型中使用redis作為緩存,同時進行有針對性的優化改進,如全球geo的緩存,用戶的請求路由到最近的redis服務器進行請求,有點緩存CDN加速的意思,此外還可以支持先向量的搜索能力,以方便與AI大模型相結合,可以往AI Redis向量化數據庫方向嘗試一下;

5.  將自身的redis數據庫嘗試跟其他數據庫產品相結合,如redis + mysql等,提升售賣能力;

6.  緊跟redis最前言技術,包括Redis社區最新特性,redis相關論文,各個廠商對redis的實踐等,同時結合自身的數據庫進行創新;

 

 

 

 

0條評論
0 / 1000
9****m
15文章數
1粉絲數
9****m
15 文章 | 1 粉絲
原創

天翼云TeleDB - 關于發展Redis的思路思考

2024-06-19 09:36:44
38
0
 

前言

本文旨在闡述關于Redis數據庫發展的一些思考,包括如何以較低成本自主研發Redis數據庫以及商業化實踐的相關考慮。文章首先介紹Redis官方社區的發展狀況,開源的Redis相關產品,最后闡述筆者對Redis數據庫發展的觀點。

 

redis官方開源協議

redis labs在3.20日宣布,項目的開源協議發生了重大改變,從非常寬松的BSD許可證轉為Redis源代碼可用許可證(RSALv2)和服務器端公共許可證(SSPLv1)下雙重許可。BSD許可證是一種寬松的開源許可證,而新的許可證則更加嚴格。RSALv2許可證允許用戶查看、修改和分發Redis的源代碼,但限制了商業化使用,特別是禁止將軟件作為管理服務提供給他人,并且要求保留所有許可、版權和其他聲明。SSPLv1要求任何在服務端運行的衍生作品都必須以相同的許可證開源,并且不得以專有軟件形式提供。

 

因此,新許可證要求托管Redis產品的云服務提供商不再被允許免費使用Redis源代碼(從redis 7.4版本開始),除非與Redis公司達成許可協議。這意味著合作可能需要支付一些費用。那么想用最新版本的特性,是否一定要跟Redis官方合作呢?不一定。現在有很多開源的Redis競品,其本身的開源社區和開源協議都比較友好,在這基礎上自研可能是一種好的思路。

開源redis競品

KeyDB

優點

● 7.6kstar,最近更新2個月前

● 多線程架構,完全兼容redis協議

特性

● 多線程架構,核心哈希表的訪問由spinlock保護

● jemalloc優化內存管理

● KeyDB完全兼容Redis協議

● 在相同的硬件上,KeyDB可以實現比Redis高得多的吞吐量

多線程介紹

KeyDB的多線程處理涉及到網絡IO、命令的解析和部分命令的執行階段。

在KeyDB中,網絡IO和命令的解析是由多個線程并行處理的。當客戶端發送請求到KeyDB時,網絡IO線程負責接收和發送數據,而命令的解析則由解析線程負責。解析線程將接收到的命令解析為相應的數據結構,并將其放入到命令隊列中等待處理。

另外,KeyDB的多線程模型還涉及到部分命令的執行階段。具體來說,KeyDB使用了多個工作線程來執行部分命令。這些命令通常是不涉及數據競爭的,可以并行執行的命令,例如GET、SET等操作。通過將這些命令的執行分發到多個工作線程,KeyDB可以提高命令的并發處理能力和響應速度。

然而,對于涉及到數據競爭的命令,例如涉及到同一鍵的操作,KeyDB會使用鎖機制來保證數據的一致性,以避免并發訪問導致的問題。

需要注意的是,并非所有的命令都能夠完全并行處理,因為某些命令的執行涉及到特定的順序或操作依賴關系。在這些情況下,KeyDB可能需要等待前一個命令的執行完成才能執行下一個命令。

綜上所述,KeyDB的多線程處理包括網絡IO、命令的解析和部分命令的執行階段。通過并行處理這些階段,KeyDB可以提高并發處理能力和響應性能。

 

pika(PikiwiDB)

優點

● 5.1kstar,GitHub代碼保持最近更新

● 性能跟redis相比,略差點,但也很高,99.9% get/set在2ms以內,測試環境為:

● 多個互聯網公司投入使用

● pika可結合twemproxy或者codis中實現靜態數據分片

● 支持主從,分布式模式

● 容量大:基于rocksdb,持久化存儲,數據存在磁盤上,最大使用空間等于磁盤空間的大小,可解決由于存儲數據量巨大而導致內存不夠的容量瓶頸

● 加載db速度快:Pika在寫入的時候, 數據是落盤的, 所以即使節點掛了, 不需要rdb或者oplog,Pika重啟不用加載所有數據到內存就能恢復之前的數據, 不需要進行回放數據操作。

● 備份速度快:Pika備份的速度大致等同于cp的速度(拷貝數據文件后還有一個快照的恢復過程,會花費一些時間),這樣在對于百G大庫的備份是快捷的,更快的備份速度更好的解決了主從的全同步問題

● 完全支持redis協議,不用修改代碼即可平滑從Redis遷移到Pika

● 兼容string,hash,list,set的絕大部分接口

● 支持主從備份,支持全同步和部分同步

● 完善的運維命令

● Pika 是多線程的結構,因此在線程數比較多的情況下,某些數據結構的性能可以優于 Redis

● 部署模式:1主N從同步模式和分布式模式

劣勢

由于Pika是基于內存和文件來存放數據, 所以性能肯定比Redis低一些, 但是我們一般使用SSD盤來存放數據, 盡可能跟上Redis的性能

使用場景

如果你的業務場景的數據比較大,Redis 很難支撐, 比如大于50G,或者你的數據很重要,不允許斷電丟失,那么使用Pika 就可以解決你的問題。

 

攜程Redis-On-Rocks

特點

● 分層存儲,冷熱分離,冷數據存放在rocksdb上,熱數據存放到redis中

● 內存達到最大內存限制,swap out, least frequently used key(LFU)將數據交換到RocksDB(磁盤)

● ROR采用磁盤增加了緩存容量,能容納更多的數據量,但RocksDB引擎的compaction和壓縮會消耗更多的CPU資源,因此ROR可以認為是用空閑的CPU換內存的成本解決方案。

 

優點

● 分層存儲,成本方面,經驗數據顯示1個ROR實例可容納3個redis實例的數據,因此redis遷ROR能節省2/3的成本

● 跟隨redis社區更新

缺點

● swap會有代價

● 延時會有上升,以下為一個典型redis集群遷移ROR后延遲對比,其中80%為冷數據、20%為熱數據,遷移前后客戶端訪問延遲從200us變為220us左右。

 

 

 

kvrocks

開源協議友好,KVRocks 項目遵循的開源協議是 Apache License Version 2.0。這意味著 Kvrocks 允許用戶自由地使用、修改和分發該軟件,同時需要遵守該許可證的條款,比如保留版權聲明、不使用 Apache 名稱進行宣傳等。Apache License 2.0 是一種寬松的開源許可證,它允許商業使用,并且不需要公開派生作品的源代碼。

優點

Redis 協議兼容:KVRocks 兼容 Redis 協議,這意味著它可以無縫對接現有的 Redis 客戶端,無需修改代碼即可遷移。

高可用架構:支持 Redis Sentinel 進行故障轉移,保證了服務的連續性。

降低成本:相比 Redis,KVRocks 旨在降低內存使用成本,提高存儲容量。

社區支持:社區活躍,KVRocks 得到了社區的廣泛支持和貢獻,包括來自不同企業的使用和反饋。

企業級應用:KVRocks 已經被一些知名企業采用,如美圖、攜程、白山云等,百度云也是直接售賣,這證明了其在實際應用中的可靠性和效能。

缺點

學習曲線:對于不熟悉 RocksDB 或分布式系統的開發者來說,可能需要一定的學習時間來掌握 KVRocks。

生態系統:Redis 擁有龐大的生態系統和豐富的客戶端庫,KVRocks 可能在生態系統的豐富性上不如 Redis。

維護和更新:作為一個相對較新的項目,KVRocks 的維護和更新頻率可能不如成熟的 Redis。

文檔和資源:雖然 KVRocks 提供了文檔和命令支持,但可能沒有 Redis 那樣詳盡和易于獲取的資源。

 

 

發展redis的思考

結合上面的調研,選擇在kvrocks這款開源redis產品上進行自研,主要是因為開源協議友好,而且Kvrocks 是 Apache 軟件基金會的一個項目,社區國內很多廠家,包括百度云也是直接售賣,針對redis的高級特性和AI大模型火熱,我的發展思路大概有下面這些:

1.  在kvrocks開源代碼基礎上進行自研,同時緊跟最新的特性;

2.  redis分層存儲(Auto Tiering)、解決數據量太大而單機內存不足的問題,分層存儲的核心是冷熱數據分離,冷數據交換到磁盤,熱數據保存在磁盤,一個實現思路是用 OpenDAL 做分級存儲,這個特性可以大幅降低內存使用成本;

3.  docker化 + 存算分離架構引進,docker部署應該是已經支持了,在量級比較大的情況下,引入存算分離架構,可以減少機器成本,實現資源的超賣;

4.  Redis + AI大模型,redis最新特性是已經支持向量化相關特性,傳統的redis是作為緩存使用,這里可以繼續在AI大模型中使用redis作為緩存,同時進行有針對性的優化改進,如全球geo的緩存,用戶的請求路由到最近的redis服務器進行請求,有點緩存CDN加速的意思,此外還可以支持先向量的搜索能力,以方便與AI大模型相結合,可以往AI Redis向量化數據庫方向嘗試一下;

5.  將自身的redis數據庫嘗試跟其他數據庫產品相結合,如redis + mysql等,提升售賣能力;

6.  緊跟redis最前言技術,包括Redis社區最新特性,redis相關論文,各個廠商對redis的實踐等,同時結合自身的數據庫進行創新;

 

 

 

 

文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0