内部構造

マルチスレッドアーキテクチャ

HotKV™は、ネットワークI/Oとコマンド実行の両方をすべてのコアで、1つの共有ストアに対して実行します。各ワーカースレッドは自身の接続のコマンドを読み取り、解析し、実行します。そのため単一のインスタンスでマシン全体を使用でき、スループットは割り当てたコア数に応じて伸びます。

  • 300のコアコマンド
  • 170以上のAIコマンドとエンタープライズコマンド
  • RESP2 / RESP3
  • C++20
  • Linux x86_64 · ARM64
全コア

真の並列処理

各ワーカーは、自身の接続のコマンドを並行して実行します。飽和する単一のコマンドスレッドが存在しないため、スループットはコア数に応じて向上します。

キー単位

きめ細かな並行性

キースペースが分割されているため、異なるキーに対するコマンドは同時に実行され、互いを待つことはほとんどありません。

GCなし

予測可能なレイテンシ

ガベージコレクタもStop-the-Worldの停止もない、ネイティブのC++エンジンです。スナップショットはforkしたプロセスではなくバックグラウンドスレッドで書き込まれるため、保存によってメモリ使用量が倍増することはありません。

ホットパス

コマンドのライフサイクル

すべてのリクエストは、受信したコア上で同じ4つの段階を経て処理されます。

01

パース

部分的な読み取りも含めて、リクエストを読み込みます。HotKVはRESP2、RESP3、インラインコマンドに対応し、HELLOによるプロトコルの切り替えも可能です。

02

ディスパッチ

実行を開始する前にコマンドを特定し、アリティ、フラグ、キーの位置を検査します。

03

実行

キーに対してコマンドを実行します。期限切れのキーは、アクセス時とバックグラウンドのスイープによって削除されます。

04

応答

クライアントがネゴシエートしたプロトコルバージョンで応答を送信します。

エンジンに組み込み

キャッシュ以上の存在

同じ並列エンジンが、300のコアコマンド、8つのエビクションポリシー、以下のサブシステムを提供し、さらにライセンスプランでは170を超えるAIコマンドとエンタープライズコマンドを利用できます。後付けのモジュールは不要です。

永続化

スナップショット + AOF

アトミックに書き込まれるバイナリスナップショットに加え、fsyncを設定可能(always、everysec、no)な追記専用ファイルと、BGREWRITEAOFによるコンパクションを備えています。

スクリプト

Lua 5.4、サンドボックス化

EVALとEVALSHAは、サンドボックス化されたLua 5.4ランタイムで、hotkv.call()を介してスクリプトをアトミックに実行します。redis.call()も互換エイリアスとして残されています。名前付きの関数ライブラリは、FUNCTIONとFCALLで提供されます。

ベクトル検索

HNSWインデックス

VSIMコマンドは、HNSWインデックス上での近似最近傍探索を提供します。コサイン、L2、内積の各距離と、タグでフィルタリングしたクエリにも対応しています。

確率的データ構造

スケッチとレート制限

HyperLogLog、ブルームフィルター、Count-Min Sketch、Top-Kによる高頻度要素の追跡に加え、バースト制御付きのサーバー側GCRAレート制限を備えています。クライアント側での計算は不要です。

オブザーバビリティ

Prometheusネイティブ

組み込みのHTTPメトリクスエンドポイント(metrics-portを設定するまで無効)が、コマンドごとの呼び出し回数とレイテンシを公開します。LATENCY HISTOGRAMとINFO latencystatsはp50、p99、p99.9を報告し、HOTKEYSは最もアクセスの多いキーをランク付けします。

セキュリティ

ACL + TLS

ユーザーごとのアクセス制御で、コマンド、キー、チャネルの範囲を制限でき、パスワードはハッシュ化されます。TLSはプロセス内で終端され、クライアント接続のほか、クラスターやレプリケーションのリンクにも適用されます。オンプレミス版では、LDAPとOpenID Connectによるシングルサインオンを使ったロールが追加されます。

すべてのコアを活用しましょう

HotKV Cloudでマネージドインスタンスを立ち上げるか、オンプレミスライセンスを使って自社のデータセンターでHotKVを運用できます。同じエンジン、同じアーキテクチャ、すべてのコア。

300のコアコマンド170以上のAIコマンドとエンタープライズコマンドRESP2 / RESP3C++20Linux x86_64 · ARM64