あなたはそうする傾向があります

1 はじめに

Tendis ストレージ バージョンは、Tencent Interactive Entertainment の CROS DBA チームと Tencent Cloud データベース チームによって独自に設計および開発されたオープンソースの分散型高性能 KV ストレージです。Redis プロトコルと完全に互換性があり、ストレージ エンジンとして Rocksdb を使用します。ユーザーは、コードをほとんど変更することなく、redis クライアントを通じて Tendis ストレージ バージョンにアクセスできます。同時に、Tendis ストレージ バージョンはメモリをはるかに超えるディスク容量をサポートするため、ユーザーのストレージ コストを大幅に削減できます。
GitHub: https://github.com/Tencent/Tendis
公式ドキュメント: http://tendis.cn/#/
ダウンロード アドレス: https://github.com/Tencent/Tendis/releases/tag/2.4.3-rocksdb -v5.13.4

2.特徴

  • 1.Redis 互換性: Redis プロトコルと完全に互換性があり、ほとんどの Redis 命令をサポートします。
  • 2. 永続ストレージ: ストレージ エンジンとしてrocksdbを使用し、すべてのデータは特定の形式でrocksdbに保存され、最大PBレベルのストレージをサポートします。
  • 3. 分散型アーキテクチャ: Redis クラスターの分散実装と同様に、すべてのノードがゴシップ プロトコルを通じて通信し、ハッシュタグを指定してデータの配布とアクセスを制御できるため、使用コストと運用保守コストが非常に低くなります。
  • 4. 水平拡張: クラスタはノードの追加と削除をサポートし、スロットに応じて任意の 2 つのノード間でデータを移行できます拡張と縮小のプロセスはアプリケーションの運用保守担当者に透過的であり、1,000 ノードまでの拡張をサポートします。
  • 5. 障害の高可用性: 障害のあるノードを自動的に検出し、障害が発生すると、スレーブがマスターに昇格して外部サービスを継続します。

3.実績報告

公式パフォーマンス レポート、スタンドアロン ハードウェア構成

  • CPU:2.50GHz、48コア
  • ディスク:NVMe SSD
  • メモリ:192GB

ここに画像の説明を挿入します
ここに画像の説明を挿入します

以下は、NVME SSD の Tendisplus.conf 構成リファレンスです。参考にしてください。

bind 127.0.0.1
port 51002
loglevel notice
cluster-enabled on
storage rocks
pidfile ./home/tendisplus.pid

# 数据和日志目录要提前创建
logdir ./home/log
dir ./home/db
dumpdir ./home/dump

# tendis的密码,按需指定
#requirepass 123
#masterauth 123

# binlog清理相关参数
truncateBinlogIntervalMs 100
truncateBinlogNum 500000
binlogDelRange 500000

# 网络线程池数量,建议cpu数量/4,
netiothreadnum 8
# 工作线程池数量,建议略多于cpu数量
executorthreadnum 56
# 其他线程池数量配置,根据实际情况配置,想看参数配置
# incrPushThreadnum 4
# migrateSenderThreadnum 2
# migrateReceiveThreadnum 4
# migrateClearThreadnum 2

# rocksdb的blockcache大小,建议使用30%系统内存(64GB)
rocks.blockcachemb 65536

# rocksdb相关配置
rocks.cache_index_and_filter_blocks 0
rocks.max_open_files -1
rocks.compress_type lz4
#rocks.level0_compress_enabled no
#rocks.level1_compress_enabled no
rocks.level_compaction_dynamic_level_bytes 1
# [n >= 4, n <= 64, n ~= cpu_cores]
rocks.max_background_compactions 64
#rocks.max_write_buffer_number 16
#rocks.min_write_buffer_number_to_merge 14
rocks.write_buffer_size 67108864
rocks.target_file_size_base 67108864
rocks.max_bytes_for_level_base 536870912

# mapping-command dbsize emptyint
# mapping-command keys emptymultibulk

# 数据迁移相关配置
cluster-migration-slots-num-per-task 10
cluster-migration-rate-limit 500
cluster-migration-binlog-iters 20
cluster-migration-distance 10000

4. Tendis ストレージ バージョンと Redis クラスターの比較

4.1. 利点:
  • すべてのデータはディスクに保存されるため、大容量、低コスト、より高いデータ信頼性が実現します。
  • マルチスレッド アーキテクチャ、単一プロセスのパフォーマンス スループットは、Redis 単一プロセスのパフォーマンス スループットよりも高い (30wQPS 対 13wQPS)
  • 独立したゴシップ ネットワーク スレッドは、より多くのノード通信と大規模なクラスターをサポートします
  • より強力なデータ再配置機能、元の Redis クラスター キー再配置実装、大きなキーが発生した場合、深刻なグローバル ブロッキングが発生します。
  • Rocksdb ミラーリングと完全な binlog 実装に基づいて、いつでもロールバックをサポートしますが、現在、コミュニティ バージョンの Redis にはこの機能がありません。
  • インクリメンタル コピーとレプリケーション切断ブレークポイントの再開をサポート Redis レプリケーション切断には完全レプリケーションが必要です。
4.2. 欠点:
  • 純粋なメモリ Redis と比較して、Tendis ストレージ バージョンの待ち時間は長くなります。
  • 一部のコマンドはまだサポートされておらず (pubsub、geo など)、改善されています。
  • シングルキー更新の場合、Tendis ストレージ バージョンの内部同時実行制御により、マルチスレッドの利点を利用できず、パフォーマンスの低いシングル スレッドに低下します。

5. クイックトライアル

  • 1. Tendis をダウンロードし、サーバーにアップロードします (デモ マシンは VMware 仮想マシン centos7.5)
  • 2. 解凍します: tar -xvzf Tendisplus-2.3.4-rocksdb-v5.13.4.tgz
    ここに画像の説明を挿入します
  • 3. Tendis のスクリプト ディレクトリに移動します: cd Tendisplus-2.3.4-rocksdb-v5.13.4/scripts
  • 4. 傾向を開始します: sh start.sh

この時点で、基本的な Tendis プロセスが開始されます。デフォルトのバインド 127.0.0.1 は、redis-cli コマンドを使用してサーバー上でのみアクセスできるため、cd Tendisplus-2.3.4-rocksdb-v5.13.4/bin、redis-cli -p 51002 Redis クライアントを入力します

  • 5. tendisplus.conf を変更して外部ネットワーク アクセスを有効にします。
# tendisplus configuration for testing
# 绑定本机IIP
bind 192.168.148.140 
#设置访问密码
requirepass 123456
port 51002
daemon yes
#设置单机模式,非集群模式,默认值no
cluster-enabled no
loglevel notice
logdir ./home/log
dumpdir ./home/dump
dir ./home/db
pidfile ./home/tendisplus.pid
slowlog ./home/log/slowlog
rocks.blockcachemb 4096
executorThreadNum 48

ここに画像の説明を挿入します
クライアントに再度接続します: redis-cli -h 192.168.148.140 -p 51002 -a 123456
ここに画像の説明を挿入します

Redis デスクトップ マネージャーで接続する

ここに画像の説明を挿入します

6.テンディスクラスター

参照してください: http://tendis.cn/#/Tendisplus/%E8%BF%90%E7%BB%B4/new_cluster

  • 1. 構成ファイルでは、クラスターの有効化が [はい] であることを確認する必要があります。
  • 2. 複数の Tendis インスタンスを起動し、6 つの Tendis プロセスを起動しますポート番号は 30000 ~ 30005 です: 30000、30001、30002、30003、30004、30005
  • 3. ノード ハンドシェイク: Tendis サービス プロセスを開始した後、同様の Redis コマンドを使用して Tendis クラスターを確立できます。
# 连接30000节点meet其他所有节点
shell> redis-cli -p 30000 
127.0.0.1:30000> cluster meet 127.0.0.1 30001
127.0.0.1:30000> cluster meet 127.0.0.1 30002
127.0.0.1:30000> cluster meet 127.0.0.1 30003
127.0.0.1:30000> cluster meet 127.0.0.1 30004
127.0.0.1:30000> cluster meet 127.0.0.1 30005
  • 4. スロットの割り当て: デフォルトでは、Redis と同様に Tendis ストレージ バージョンはすべてのデータを 16384 スロットにマップし、各キーはスロットに対応します。スロットが Tendis ノードに割り当てられている場合にのみ、Tendis ノードはスロット関連のコマンドに応答できます。そうでない場合は、他のノードに移動します。
#分配slots可使用cluster add slots指令
#将16384个slots平均的分配给3个节点
shell> redis-cli -p 30000 cluster addslots {0..5461}
OK
shell> redis-cli -p 30002 cluster addslots {5462..10922}
OK
shell> redis-cli -p 30004 cluster addslots {10923..16383}
OK

#等待若干秒后,可以通过cluster info指令查看集群状态
127.0.0.1:30000> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
  • 5. マスター/スレーブ レプリケーション。ここでは 3 つのインスタンスにスロットが割り当てられ、残りの 3 つのインスタンスはスレーブとして使用できます。cluster replicate コマンドを使用します。
shell> redis-cli -p 30001 cluster replicate 4233f87b9899774feb71bcef1cfeec964de0535b
OK
shell> redis-cli -p 30003 cluster replicate b072bdd0f3d6cf75edcee1345da0d33f59177da0
OK
shell> redis-cli -p 30005 cluster replicate c980e1e23d20e9169aca0cbe7751d8a76b73859f
OK

3 つのマスターと 3 つのスレーブでクラスターを構築できます。

127.0.0.1:30000> cluster nodes
20f8df612b19c879c92149458856ec08af50d459 127.0.0.1:30001@16374 slave 4233f87b9899774feb71bcef1cfeec964de0535b 0 1606964904000 5 connected
4233f87b9899774feb71bcef1cfeec964de0535b 127.0.0.1:30000@16379 myself,master - 0 1606964903000 0 connected 0-5461
f9d8c3f6679badc6366087d498f005849ad3b14d 127.0.0.1:30003@16375 slave b072bdd0f3d6cf75edcee1345da0d33f59177da0 0 1606964901000 4 connected
b072bdd0f3d6cf75edcee1345da0d33f59177da0 127.0.0.1:30002@16378 master - 0 1606964902996 1 connected 5462-10922
c980e1e23d20e9169aca0cbe7751d8a76b73859f 127.0.0.1:30004@16377 master - 0 1606964904598 2 connected 10923-16383
cd3c5da6415d5c1d125961e0f78badd162c7f7d3 127.0.0.1:30005@16376 slave c980e1e23d20e9169aca0cbe7751d8a76b73859f 0 1606964894000 3 connected

おすすめ

転載: blog.csdn.net/zhuyu19911016520/article/details/125198543