zoukankan      html  css  js  c++  java
  • redis的集群、主从复制、CAP、paxos

    redis单机、单节点、单实例

    问题:

    1.单点故障

    2.容量有限

    3.压力

     

     

     看图复习

     

    解决办法:AKF

    X: 全量、镜像
    
    Y: 业务、功能
    
    Z: 优先级、逻辑再拆分
    
    x: x轴解决压力问题,x轴增加多台主从机器,主机写,从机读取,环节了压力
    Y: y轴解决容量问题,相当于微服务分库,按照业务进行拆分
    z: Z轴是数据无法在进行拆分时,那么就进行数据范围拆分,比如1-1000万一个redis,一千万到两千万一个reids,以此类推等等

     

     

     

    一变多会遇到的问题?

    1.数据一致性问题
        a.所有节点阻塞直到数据一致、强一致性、破坏可用性
        b.本来一边多的目的就是解决可用性,为了数据一致性又破坏可用性,矛盾
        c.容忍数据丢失一部分
        d.异步发送、第一个redis发送kafka(可靠、集群、响应速度快)、当地一个挂掉、另外备用的顶上去、数据从kafka中拿(最终数据一致性)

    主备和主从概念:
    https://www.cnblogs.com/tankblog/p/11190598.html

     

     

     

     

    通过AKF、一变多(主备)

    问题:怎么保持数据一致性?

    强一致性破坏可用性。原:为什么一变多,解决可用性。(矛盾)

    1.容忍数据丢失一部分

    2.异步发送、第一个redis发送kafka(可靠、集群、响应速度快)、当第一个挂掉、另外备用的顶上去,数据从kafka中拿

     

     

     

    redis一般使用主从、那么主又有单点故障、所以需要对主做HA(高可用)

    主:并不是不允许挂掉、而是当主挂掉、来一个服务顶掉挂掉的主,对外是一种没有挂掉的感觉。

     

    所以主需要一个程序监控。

     

    一个程序:也有单点故障的问题。

     

    监控:只需要一部分决策成功即可(弱一致性 1或2个) 1:统计不准确,比如网络不通、出现脑裂现象,因为一个决策,一说ok,一个说不ok,第三个已经不重要了

    2:解决脑裂问题、

     

    集群配置

    条件:在utils目录下执行 ./install_server.sh

    第一次: 选择默认6379
    第二次: 输入6380
    第三次: 输入6381

    目录:/etc/redis 生成三个配置文件:6379.conf、6380.conf、6381.conf

    为了查看日志方便修改: 1.daemonize no 2.禁止日志路径


    启动:
    redis-server ./6379.conf
    redis-server ./6380.conf
    redis-server ./6381.conf

    人工选主:redis-cli -p 6379、6380、6381 进入三台redis
    5.0以前是:slaveof 127.0.0.1 6379
    5.0以后是:replicaof 1270.0.1 6379

    现象:
    1. 6380和6381的redis内容和6379内容一致
    2. 6380和6381的redis启动日志 a.flush本地内容、b.生成唯一id c.copy on write数据

    当主6380挂掉

    6381和6382一直循环出现: Connecting to MASTER 127.0.0.1:6380 MASTER <-> REPLICA sync started Error condition on socket for SYNC: Connection refused

    so:需要哨兵进行维护

     

    其他: 

    replica-serve-stale-data yes 数据同步完才可以处理
    replica-read-only yes 同步后,从机仅读取数据
    repl-diskless-sync no 数据同步走网络IO,还是磁盘IO(网络IO直接通过网络发送,磁盘IO是先写到rdb文件,在通过网络IO发送)
    repl-backlog-size 1mb  每次复制数据的大小
    #增量复制
    
    min-replicas-to-write 3
    min-replicas-max-lag 10 最少3台写成功、最多10台写成功(默认注掉的,这个配置项数据一致性靠拢)
    

      

     

     

    哨兵自动选主

    哨兵1: 26379.conf
    port 26379
    sentinel monitor mymaster 127.0.0.1 6379 1
    
    哨兵2: 26380.conf
    port 26380
    sentinel monitor mymaster 127.0.0.1 6380 2
    
    哨兵3: 26381.conf
    port 26381
    sentinel monitor mymaster 127.0.0.1 6381 3
    
    
    开启主从集群:
    1.redis-server ./6379.conf
    2.redis-server ./6380.conf --replicaof 127.0.0.1 6380
    3.redis-server ./6381.conf --replicaof 127.0.0.1 6381
    
    
    开启监控:
    redis-server ./26379.conf --sentinel
    redis-server ./26380.conf --sentinel
    redis-server ./26381.conf --sentinel
    
    结论:
    1.哨兵监控到了6379、6380、6381
    2.也监控到了其他哨兵
    3.哨兵会动配置文件,往26379、26380、26381配置文件加入监控到的其他哨兵信息
    4.通过发布订阅发现其他哨兵( PSUBSCRIBE *可以查看)
    "127.0.0.1,26381,e48a67a20bb64588c9bbc98826cae61dd2906b3e,6,mymaster,127.0.0.1,6381,0"
    1) "pmessage"
    2) "*"
    3) "__sentinel__:hello"
    4) "127.0.0.1,26380,ec6e1806cf9c782acec81397aa65b3870b7900f6,6,mymaster,127.0.0.1,6380,0"
    1) "pmessage"
    2) "*"
    3) "__sentinel__:hello"
    一直在相互发送信息hello
    

      

  • 相关阅读:
    Python爬虫模拟登录的github项目
    pandas常用数据清洗方法
    5分钟了解swagger
    OpenAuth.Net.landv分支之旅开始制作CRM系统
    捷信达会员管理系统SQL语句相关
    EXcel vba 获取批注信息
    西软报表处理语句相关
    中软酒店管理系统CSHIS操作手册_数据结构_数据字典
    金蝶k3密码批量修改
    K3 WISE 开发插件《SQL语句WHERE查询-范围查询/模糊查询》
  • 原文地址:https://www.cnblogs.com/bigdata-familyMeals/p/14295927.html
Copyright © 2011-2022 走看看