当前位置: 首页 > news >正文

视频网站建设技术方案书河南省工程建设监理协会网站

视频网站建设技术方案书,河南省工程建设监理协会网站,公司网站设计素材,网站开发开题报告范文【Redis】Redis分片集群 文章目录【Redis】Redis分片集群1. 搭建分片集群1.1 分片集群结构1.2 搭建分片集群1.2.1 集群结构1.2.2 准备实例和配置1.2.3 启动1.2.4 创建集群1.2.5 测试2. 散列插槽2.1 总结3. 集群伸缩4. 故障转移4.1 数据迁移5. RedisTemplate访问分片集群1. 搭建…【Redis】Redis分片集群 文章目录【Redis】Redis分片集群1. 搭建分片集群1.1 分片集群结构1.2 搭建分片集群1.2.1 集群结构1.2.2 准备实例和配置1.2.3 启动1.2.4 创建集群1.2.5 测试2. 散列插槽2.1 总结3. 集群伸缩4. 故障转移4.1 数据迁移5. RedisTemplate访问分片集群1. 搭建分片集群 1.1 分片集群结构 主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决 海量数据存储问题高并发写的问题 使用分片集群可以解决上述问题分片集群特征 集群中有多个master每个master保存不同数据每个master都可以有多个slave节点master之间通过ping监测彼此健康状态客户端请求可以访问集群任意节点最终都会被转发到正确节点 1.2 搭建分片集群 1.2.1 集群结构 分片集群需要的节点数量较多这里我们搭建一个最小的分片集群包含3个master节点每个master包含一个slave节点结构如下 这里我们会在同一台虚拟机中开启6个redis实例模拟分片集群信息如下 IPPORT角色192.168.150.1017001master192.168.150.1017002master192.168.150.1017003master192.168.150.1018001slave192.168.150.1018002slave192.168.150.1018003slave1.2.2 准备实例和配置 删除之前的7001、7002、7003这几个目录重新创建出7001、7002、7003、8001、8002、8003目录 # 进入/tmp目录 cd /tmp # 删除旧的避免配置干扰 rm -rf 7001 7002 7003 # 创建目录 mkdir 7001 7002 7003 8001 8002 8003在/tmp下准备一个新的redis.conf文件内容如下 port 6379 # 开启集群功能 cluster-enabled yes # 集群的配置文件名称不需要我们创建由redis自己维护 cluster-config-file /tmp/6379/nodes.conf # 节点心跳失败的超时时间 cluster-node-timeout 5000 # 持久化文件存放目录 dir /tmp/6379 # 绑定地址 bind 0.0.0.0 # 让redis后台运行 daemonize yes # 注册的实例ip replica-announce-ip 192.168.150.101 # 保护模式 protected-mode no # 数据库数量 databases 1 # 日志 logfile /tmp/6379/run.log将这个文件拷贝到每个目录下 # 进入/tmp目录 cd /tmp # 执行拷贝 echo 7001 7002 7003 8001 8002 8003 | xargs -t -n 1 cp redis.conf修改每个目录下的redis.conf将其中的6379修改为与所在目录一致 # 进入/tmp目录 cd /tmp # 修改配置文件 printf %s\n 7001 7002 7003 8001 8002 8003 | xargs -I{} -t sed -i s/6379/{}/g {}/redis.conf1.2.3 启动 因为已经配置了后台启动模式所以可以直接启动服务 # 进入/tmp目录 cd /tmp # 一键启动所有服务 printf %s\n 7001 7002 7003 8001 8002 8003 | xargs -I{} -t redis-server {}/redis.conf通过ps查看状态 ps -ef | grep redis发现服务都已经正常启动 如果要关闭所有进程可以执行命令 ps -ef | grep redis | awk {print $2} | xargs kill或者推荐这种方式 printf %s\n 7001 7002 7003 8001 8002 8003 | xargs -I{} -t redis-cli -p {} shutdown1.2.4 创建集群 虽然服务启动了但是目前每个服务之间都是独立的没有任何关联。 我们需要执行命令来创建集群在Redis5.0之前创建集群比较麻烦5.0之后集群管理命令都集成到了redis-cli中。 1Redis5.0之前 Redis5.0之前集群命令都是用redis安装包下的src/redis-trib.rb来实现的。因为redis-trib.rb是有ruby语言编写的所以需要安装ruby环境。 # 安装依赖 yum -y install zlib ruby rubygems gem install redis然后通过命令来管理集群 # 进入redis的src目录 cd /tmp/redis-6.2.4/src # 创建集群 ./redis-trib.rb create --replicas 1 192.168.150.101:7001 192.168.150.101:7002 192.168.150.101:7003 192.168.150.101:8001 192.168.150.101:8002 192.168.150.101:80032Redis5.0以后 我们使用的是Redis6.2.4版本集群管理以及集成到了redis-cli中格式如下 redis-cli --cluster create --cluster-replicas 1 192.168.150.101:7001 192.168.150.101:7002 192.168.150.101:7003 192.168.150.101:8001 192.168.150.101:8002 192.168.150.101:8003命令说明 redis-cli --cluster或者./redis-trib.rb代表集群操作命令create代表是创建集群--replicas 1或者--cluster-replicas 1 指定集群中每个master的副本个数为1此时节点总数 ÷ (replicas 1) 得到的就是master的数量。因此节点列表中的前n个就是master其它节点都是slave节点随机分配到不同master 运行后的样子 这里输入yes则集群开始创建 通过命令可以查看集群状态 redis-cli -p 7001 cluster nodes1.2.5 测试 尝试连接7001节点存储一个数据 # 连接 redis-cli -p 7001 # 存储数据 set num 123 # 读取数据 get num # 再次存储 set a 1结果悲剧了 集群操作时需要给redis-cli加上-c参数才可以(表示集群模式) redis-cli -c -p 7001这次可以了 2. 散列插槽 Redis会把每一个master节点映射到0~16383共16384个插槽hash slot上查看集群信息时就能看到 数据key不是与节点绑定而是与插槽绑定。redis会根据key的有效部分计算插槽值分两种情况 key中包含{}且“{}”中至少包含1个字符“{}”中的部分是有效部分key中不包含“{}”整个key都是有效部分 例如key是num那么就根据num计算如果是{itcast}num则根据itcast计算。计算方式是利用CRC16算法得到一个hash值然后对16384取余得到的结果就是slot值。 注一个插槽并不代表一个key一个插槽可以存储多个key。 2.1 总结 Redis如何判断某个key应该在哪个实例 将16384个插槽分配到不同的实例。根据key的有效部分计算哈希值对16384取余。余数作为插槽寻找插槽所在实例即可。 如何将同一类数据固定的保存在同一个Redis实例中 这一类数据使用相同的有效部分例如key都以{typeId}为前缀。 3. 集群伸缩 redis-cli --cluster提供了很多操作集群的命令可以通过下面方式查看 比如添加节点的命令 4. 故障转移 当集群中有一个master宕机会发生什么呢 首先是该实例与其它实例失去连接然后是疑似宕机 最后是确定下线自动提升一个slave为新的master 4.1 数据迁移 利用cluster failover命令可以手动让集群中的某个master宕机切换到执行cluster failover命令的这个slave节点实现无感知的数据迁移。其流程如下 手动的Failover支持三种不同模式 缺省默认的流程如图1~6步force省略了对offset的一致性校验takeover直接执行第5步忽略数据一致性忽略master状态和其他master的意见 5. RedisTemplate访问分片集群 RedisTemplate底层同样基于lettuce实现了分片集群的支持而使用的步骤与哨兵模式基本一致 引入redis的starter依赖配置分片集群地址配置读写分离 1)引依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId /dependency2配置 spring:redis:cluster:nodes: # 指定分片集群的每一个节点信息- 192.168.150.101:7001- 192.168.150.101:7002- 192.168.150.101:7003 - 192.168.150.101:8001- 192.168.150.101:8002- 192.168.150.101:80033配置读写分离 //配置读写分离 Bean public LettuceClientConfigurationBuilderCustomizer clientConfigurationBuilderCustomizer() {return clientConfigurationBuilder - clientConfigurationBuilder.readFrom(ReadFrom.REPLICA_PREFERRED); }
http://www.hkea.cn/news/14429585/

相关文章:

  • django 做的网站域名如何备案教程
  • 做培训网站电商网站建设用php
  • 怎样选择网站的关键词百度浏览器app
  • 查找手机网站福州最新通告今天
  • html购物网站设计论文上海百度竞价托管
  • 做最好的言情网站无锡网站推广外包服务
  • wordpress 微信导航站招聘代做网站
  • 邢台建网站的公司html5网站动态效果
  • 专门看广告的网站做网站欢迎页什么意思
  • 前端做网站的步骤网站建设公司品牌
  • asp.net 创建网站电商公司网站建设流程
  • 我的网站为什么打不开怎么回事啊网站建设参考的文献
  • 购物网站大全jsp个人网站怎样做
  • 做网站需要什么素材seo营销技巧
  • 网站开发人员的水平wordpress相关推荐
  • 网站开发要什么样的环境asp.net+网站开发+实战
  • 国内网站有哪些温州营销型网站建设
  • 网站运营方案怎么写?深圳兆富资本非吸案4人被判刑
  • 昆明做网站那家好郴州建设网站哪家好
  • 建设一个网站需要什么软件wordpress404页面更爱
  • 网站建设wangzhii网站建设叫什么软件
  • 专门做包装的网站wordpress 下载
  • 大型电子商务网站建设网站建设的总结200字
  • 做网站广告词找王思奇wordpress 插件 ftp
  • 书籍设计网站推荐用照片做视频的网站
  • 网站挂马解决苏州互联网公司工资
  • 如何做一个更新网站农产品网站建设需求
  • 删除百度收录的网站免费网站建
  • 网站开发打赏功能深圳最好的网站建设公司哪家好
  • 网站建设与维护中国出版社天河区门户网站招生考试