• redis cluster


    redis常用的使用模式是主从,主挂了启动从库,但是这个是单个实例的,如果处理数据量量级太大,(具体不好说没碰到过,几亿,几十亿条记录?),单个redis会遭遇读写性能的瓶颈。

    redis cluster试图解决这个问题,来看下它的设计目标:

    1,高性能,线性分布到1000+机器上

    2,写入的安全度是可接受的:大部分写请求直接落到master节点,这样会保证写入是安全的

    3,可用性:redis server机器down掉后,服务是可用的

    对于3,如何保证可用性的?

    每台redis server都有至少一个从节点,如果主节点down掉,自动启用从节点,从节点来保证服务是可用的(数据的同步可想象成msyql的binlog追加)。

    如果主server,和对应的从server同时down掉,是会影响服务的。

    细节1:redis实现了对于某些key强制写入相同的节点的能力。是hash tags技术

    Redis Cluster implements a concept called hash tags that can be used in order to force certain keys to be stored in the same node.

    细节2:在手工reshard的时候,multi操作在cluster模式中有时候会不可用,但是单个key操作总是可用的

    However during manual reshardings, multi-key operations may become unavailable for some time while single keys operations are always available.

    细节3:cluster不保证key能够放到不同的数据库上(因为redis支持选择database,类似于mysql),只会放在0号数据库上。cluster模式不支持select操作

    Redis Cluster does not support multiple databases like the stand alone version of Redis, there is just database 0, and the SELECT command is not allowed.

    细节4:如果检查redis的节点是否坏掉?

    redis cluster bus就是解决这个问题的,redis的每个server节点都会主动探测其它所有节点的状态,如果down掉,可能会自动执行slave升级到master的动作。

    redis的server状态和key的map是server端来管理维护的,redis的client理论上不用知道key是分布在哪个server node上的,但是如果client能缓存对应关系,性能提升是明显的

    细节5:write safety未完成

    细节6:fail的几种情况

    fail1:大多数节点fail,整个系统fail

    recovery:如果master节点fail,从节点升为master

    fail2:如果所有的从节点被升为master,这个时候再有一个master fail,整个系统fail

    参考:

    http://www.redis.io/topics/cluster-spec

    http://redis.io/topics/cluster-tutorial

  • 相关阅读:
    协成
    进程与线程-多线程
    进程与线程2
    进程与线程
    socket编程
    常用模块二(hashlib、configparser、logging)
    异常处理
    python之路——面向对象进阶
    封装
    初识——面向对象
  • 原文地址:https://www.cnblogs.com/helww/p/4467881.html
Copyright © 2020-2023  润新知