品牌名稱
Boss直聘
所在行業
互聯網
企業規模
1001-5000人

圖數據庫 Nebula Graph 在 Boss 直聘的應用

479次閱讀

在 Boss 直聘的安全風控技術中,需要用到大規模圖存儲和挖掘計算,之前主要基于自建的高可用 Neo4j 2 集群來保障相關應用,而在實時行為分析方面,需要一個支持日增 10 億關系的圖數據庫,Neo4j 無法滿足應用需求。

針對這個場景,前期我們主要使用 Dgraph 12,踩過很多坑并和 Dgraph 團隊連線會議,在使用 Dgraph 半年后最終還是選擇了更貼合我們需求的 Nebula Graph 10。具體的對比 Benchmark 51 已經有很多團隊在論壇分享了,這里就不再贅述,主要分享一些技術指標和選型,以及很多小伙伴感興趣的 Dgraph 對比使用經驗。

技術指標

硬件

配置如下:

  • 處理器:Intel® Xeon® Gold 6230 CPU @ 2.10GHz 80(cores)
  • 內存:DDR4,128G
  • 存儲:1.8T SSD
  • 網絡:萬兆

Nebula Graph 部署 5 個節點,按官方建議 3 個 metad / 5 個 graphd / 5 個 storaged

軟件

  • Nebula Graph 版本:V1.1.0 3
  • 操作系統:CentOS Linux release 7.3.1611 (Core)

配置

主要調整的配置和 storage 相關
# 按照文檔建議,配置內存的 3 分之 1
--rocksdb_block_cache=40960

# 參數配置減小內存使用
--enable_partitioned_index_filter=true
--max_edge_returned_per_vertex=100000

指標

目前安全行為圖保存 3 個月行為,近 500 億邊,10 分鐘聚合寫入一次,日均寫入點 3,000 萬,日均寫入邊 5.5 億,插入延時 <=20 ms。

 

 

 

 

 

 

讀延時 <= 100 ms,業務側接口讀延時 <= 200 ms,部分超大請求 < 1 s

 

 

 

 

當前磁盤空間占用 600G * 5 左右

 

 

cpu 耗用 500% 左右,內存使用穩定在 60 G 左右

 

 

Dgraph使用對比

目前來說原生分布式圖數據庫國內選型主要比對 Dgraph和 Nebula Graph,前者我們使用半年

 

 

對比來說,Nebula Graph 很優秀,特別是工程化方面,體現在很多細節,可以看出開發團隊在實際使用和實現上做較了較好的平衡:

  • 1.支持手動控制數據平衡時機,自動固然很好,但是容易導致很多問題
  • 2.控制內存占用(enable_partitioned_index_filter 優化和設置單次最大返回邊數目),都放在內存固然快,但有時候也需要考慮數據量和性能的平衡
  • 3.多圖物理隔離,多張圖實在太有必要
  • 4.nGQL 最大程度接近最常用 MySQL 語句,2 期兼容 Cypher 更加完美;對比 GraphQL 固然香,但寫起復雜圖查詢真的讓人想爆炸,可能還是更加適合做數據中臺查詢語言
  • 5.和圖計算框架的結合,最近釋放的 Spark GraphX 結合算法非常有用,原先我們的圖計算都是基于 GraphX 從 Neo4j 抽取后離線計算團伙,后續打算嘗試 Nebula Graph 抽取

這里主要從實際經驗對比分享,二者都在持續優化,都在快速迭代,建議使用前多看看最新版本 release說明。