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

面試官:系統有萬億條消息怎么存儲?

數據庫 其他數據庫
2015 年,Discord 的第一個版本建立在單個 MongoDB 之上。2015 年 11 月左右,MongoDB 存儲了 1 億條消息,其內存無法再容納數據和索引。延遲變得不可預測。消息存儲需要轉移到另一個數據庫。這時 Cassandra 被選中。

我們如何設計一個能存儲數萬億條信息的系統?

Discord 的消息存儲演進給我們提供了真實案例參考。

下圖顯示了 Discord 消息存儲的演變過程:MongoDB -> Cassandra -> ScyllaDB

圖片圖片

第一階段

2015 年,Discord 的第一個版本建立在單個 MongoDB 之上。2015 年 11 月左右,MongoDB 存儲了 1 億條消息,其內存無法再容納數據和索引。延遲變得不可預測。消息存儲需要轉移到另一個數據庫。這時 Cassandra 被選中。

第二階段

2017 年,Discord 擁有 12 個 Cassandra 節點,存儲了數十億條消息。

2022 年初,Discord 擁有 177 個 Cassandra 節點,存儲了數萬億條消息。此時,延遲再次變得難以預測,維護的成本也變得過于昂貴。

造成這一問題有幾個原因:

  1. Cassandra 使用 LSM 樹作為內部數據結構。讀取比寫入更昂貴。在一臺擁有數百名用戶的服務器上,可能會有很多并發讀取,從而導致熱點問題。
  2. 維護集群(如壓縮 SSTables)會影響性能。
  3. 垃圾回收會導致明顯的延遲

第三階段

這時,Discord 重新設計了消息存儲的架構:

  1. 采用集中式的數據服務,其使用單體 API來訪問,并用 Rust 重寫。
  2. 采用基于 ScyllaDB 的存儲。ScyllaDB 是用 C++ 編寫的 Cassandra 兼容數據庫。

新架構的優勢在于:

  • 用 C++ 而不是 Java 編寫,消除了垃圾回收暫停的干擾。
  • 按核分片模型(Shard-per-Core model)提供更好的負載隔離,防止熱分區在節點間產生級聯延遲。
  • 優化了反向查詢性能,以滿足 Discord 的需求。
  • 節點減少到 72 個,同時將每個節點的磁盤空間增加到 9 TB。

為了進一步保護 ScyllaDB,Discord 針對數據服務還做了以下優化:

  • 在 Rust 中構建中間數據服務,限制并發流量峰值。
  • 數據服務位于應用程序接口和數據庫之間,可聚合請求。
  • 即使多個用戶請求相同的數據,也只需查詢一次數據庫。
  • Rust 提供了快速、安全的并發功能,是這種工作負載的理想選擇。

優化后的系統性能大大提高:

  • ScyllaDB 的 p99 讀取延遲為 15 毫秒,而 Cassandra 為 40-125 毫秒。
  • ScyllaDB 的 p99 的寫延遲為 5 毫秒,而 Cassandra 為 5-70 毫秒。

該系統可輕松應對世界杯流量高峰。

本文參考 Discord blog。

責任編輯:武曉燕 來源: ByteByteGo
相關推薦

2024-05-29 14:34:07

2023-02-20 08:08:48

限流算法計數器算法令牌桶算法

2021-10-22 08:37:13

消息不丟失rocketmq消息隊列

2022-07-26 08:40:42

Java并發工具類

2022-08-02 06:31:32

Java并發工具類

2024-03-07 17:21:12

HotSpotJVMHot Code

2025-03-26 01:25:00

MySQL優化事務

2021-04-07 10:52:10

Linux命令文件

2021-03-16 07:13:07

Java對象存儲

2022-05-24 08:03:28

InnoDBMySQL數據

2024-02-26 14:07:18

2021-05-10 08:01:12

BeanFactoryFactoryBean容器

2010-08-23 15:06:52

發問

2023-10-31 16:38:02

注冊中心負載均衡器

2025-04-01 00:00:00

項目CRUD單例模式

2022-07-11 10:47:46

容器JAVA

2024-04-19 00:00:00

計數器算法限流算法

2024-03-12 14:36:44

微服務HTTPRPC

2024-07-23 08:21:19

2022-05-23 08:43:02

BigIntJavaScript內置對象
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天干b| 久久国产电影 | 国产欧美精品一区二区 | 亚洲精品在线观看视频 | 国产伦精品一区二区三区高清 | 电影午夜精品一区二区三区 | 国产在线观看一区二区三区 | 九色www| 视频在线亚洲 | 欧美精品一区免费 | 亚洲精品2区 | av天空| 久久se精品一区精品二区 | 亚洲不卡在线观看 | 亚洲深夜福利 | 色欧美片视频在线观看 | 久久久久久毛片免费观看 | 黄色日本视频 | 涩涩片影院 | 在线日韩视频 | 久久99精品久久 | 国产剧情一区 | 久久国产精品视频 | 日韩精品免费视频 | 亚洲视频区| 日韩欧美一区二区三区免费看 | 国色天香综合网 | 午夜tv免费观看 | 欧美日韩国产欧美 | 福利视频1000 | 日韩欧美视频 | 国产99视频精品免费视频7 | 91精品国产日韩91久久久久久 | 久久久久久久电影 | 91亚洲一区 | 国产精品一区二区久久 | 欧洲一区二区三区 | 欧美一区二区在线观看 | 成人午夜激情 | 69精品久久久久久 | 欧美一级高潮片免费的 |