クラスタリング手法をRedisの

上の3つが現在ありません 

(1)Twitterの先進twemproxy

(2)エンドウ豆のさや開発CODIS

(3)は、公式のRedisクラスターをRedisの

Twemproxy

 

 

 


 シンプルな構造では、プロキシのバックエンドRedisのサーバープロキシを使用することですが、低消費性能プロキシ層による、通常は含ま複数のキー操作がサポートされていないため、動的な拡張と透過的なデータ移行や、失われたメンテナンスのTwitterをサポートしていません。内部もはや使用

          Redisのクラスタ彼は、各キー値のためにすべてのノードにハッシュスロット16348ハッシュスロットカバーを使用する分散型の方法の使用を得るためにCRC16(KEY)&16348 =スロットを使用して保存されたと思ったので、最も強力なの三年間のパフォーマンスであります彼のハッシュスロットとノードと現在のアクセスノードはノード間の通信のための軽量プロトコルを使用して、ハッシュスロットを取得するために実際のノードから割り当てられている彼のハッシュスロットを見つけるに対応するアクセスキーは、帯域幅のデータを減らします千個のノードに演奏されている自動化フェイルオーバーに高性能自動負荷分散と高可用性を占有し、公式の動的な拡張をサポートすることは分散型プロキシ消費の必要性を排除し、彼のアイデアので、このアーキテクチャを好む短い個人的に低い複雑性を達成することができます思考の新しい方法です

           しかし、それはまた、コマンドのサポートなどではない、完全にはRedisの自身への運用・保守の経験と貧しい手を自分のデータ移行のためのグラフィカルな管理ツールを提供しなかった公式のようないくつかの欠点を持っているしかし、私は、これらの問題は、彼の主要なアイデアは持っ隠すことができなかったと思います公式の利点は、一定時間内に、高性能の考え方の中心にもたらしたときには、彼の大きな利点が表示されますように解決され、これらの問題を前進させることができるはずで 

          CODISはまた、プロキシのアイデアを使用していますが、より良い行うには、中間レベルのコマンドおよびサポートは、両者の間のRedisされる時間をかけて運転・保守に優しいを管理および監視するための最もグラフィカルなGUIツールは、これが書かれた別の原理を詳細に説明するがあります達成するための仕組みや構造

集まる

1.はじめに

  • redis3.0及以上版本实现,集群中至少应该有奇数个节点,所以至少有三个节点,官方推荐三主三从的配置方式
  • 使用哈希槽的概念,Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽。集群的每个节点负责一部分hash槽。
  • 使用主从复制模型,每个节点都会有N-1个slave。如果master不可用,会选举slave为新的master继续服务;如果同个节点的master和slave都失效,整个集群将不可用。

2. 集群的不足:

  • Redis集群并不支持处理多个key的操作,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误。举例来说,当两个set映射到不同的redis实例上时,你就不能对这两个set执行交集操作。
  • 涉及多个key的redis事务不能使用。
  • 无法使用多个DB. select 禁止使用

集群

cluster info :打印集群的信息
cluster nodes :列出集群当前已知的所有节点( node),以及这些节点的相关信息。

下面是常用的参数:
redis-cli --cluster help

复制代码
1、create:创建集群
2、check:检查集群
3、info:查看集群信息
4、fix:修复集群
5、reshard:在线迁移slot
6、rebalance:平衡集群节点slot数量
7、add-node:将新节点加入集群
8、del-node:从集群中删除节点
9、set-timeout:设置集群节点间心跳连接的超时时间
10、call:在集群全部节点上执行命令
11、import:将外部redis数据导入集群
复制代码

CODIS

Codis动态迁移原理:

 

 

 动态迁移场景:

1、服务slot_1的group原为group 1,codis-config 现发起迁移指令 pre_migrate slot_1 to group 2,将slot_1状态标记为”pre_migrate”;
2、等待所有的proxy回复收到迁移指令;
3、将slot_1状态标记为”migrating”,服务slot_1的server group改为group2
4、codis-config不断发送SLOTSMGRT命令给group1的redis ,直到slot_1所有的key迁移完成;
5、迁移过程中, 如果请求 slot_1 的 key 数据, proxy 会将请求转发到group2上, proxy会先在group1上强行执行一次 MIGRATE key 将这个键值提前迁移过来. 然后再到group2上正常读取
6、将slot_1状态标记为”online”

zookeeper 数据:

 

hash_tag

当一个key包含 {} 的时候,就不对整个key做hash,而仅对 {} 包括的字符串做hash。

假设hash算法为sha1。对user:{user1}:ids和user:{user1}:detail,其hash值都等同于sha1(user1)。

 

def HASH_SLOT(key)
    s = key.index "{"
    if s
        e = key.index "}",s+1
        if e && e != s+1
            key = key[s+1..e-1]
        end
    end
    crc16(key) % 16384
end

  

おすすめ

転載: www.cnblogs.com/yizhou35/p/12150573.html