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

连云港市网站设计在线做网页的网站

连云港市网站设计,在线做网页的网站,图片编辑软件,网站审核员做点啥引言#xff1a;本文记录了博主在学习Redis的过程中的原理#xff0c;了解为什么使用与怎么样使用 Redis 集群#xff0c;在使用 Redis 集群时出现的主从复制和哨兵模式的相关知识。本文并不涉及Redis安装。 文章目录 一、简单介绍什么是 Redis二、为什么要使用 Redis 集群三… 引言本文记录了博主在学习Redis的过程中的原理了解为什么使用与怎么样使用 Redis 集群在使用 Redis 集群时出现的主从复制和哨兵模式的相关知识。本文并不涉及Redis安装。 文章目录 一、简单介绍什么是 Redis二、为什么要使用 Redis 集群三、常说的Redis节点是什么在集群中扮演什么角色四、Redis 集群实现主从复制五、Redis 集群实现故障转移哨兵模式 一、简单介绍什么是 Redis 首先Redis是一个很重要的工具它的英文全称是 Remote Dictionary Server 意思是远程字典服务是一个开源的、基于内存的高性能键值存储数据库读取和写入速度远超于常见的数据库。 另外它支持多种数据结构支持类型十分广泛如字符串strings、哈希hashes、列表lists、集合sets、有序集合sorted sets以及范围查询、位图bitmaps、超日志hyperloglogs和地理空间索引等。 被用于高性能缓存最常用 作为缓存层存储频繁访问的数据减少对后端数据库的访问压力从而提高系统的响应速度和吞吐量。在Web应用中将用户会话信息、热点数据如商品详情、用户信息等存储在Redis中避免每次都查询数据库。在后端的数据存储中热点数据都可以存储在Redis中提高访问速度同时降低IO。只要有关热点数据那就和缓存有关基本就和Redis有关。 消息队列 支持发布/订阅模式可以作为消息队列使用实现应用之间的异步通信。并不常用虽然说增加消息中间件会增加额外的开销但是在大型项目中常常有访问峰值的出现Redis的抗并发能力到达阈值时就会影响队列问题。所以常常做到分工明确对后面的开发和维护效果更好。 分布式锁 用于实现分布式环境下的锁机制确保多个进程或线程在访问共享资源时的互斥性。在分布式系统中多个实例需要对某个资源进行写操作时通过Redis锁确保同一时间只有一个实例可以操作。 排行榜和计数器 利用有序集合Sorted Set实现排行榜功能对数据进行实时排序和计数。在游戏或社交应用中实时更新用户的积分排名或统计页面访问次数。 会话管理 存储用户会话信息支持无状态的分布式应用。在Web应用中将用户登录状态、会话数据存储在Redis中实现会话的快速读取和共享。 数据持久化 虽然Redis是基于内存的存储但它支持多种持久化机制如RDB和AOF可以将数据持久化到磁盘防止数据丢失。在需要数据持久化的场景中定期将内存中的数据保存到磁盘确保系统故障时数据不丢失。 二、为什么要使用 Redis 集群 首先项目随着业务的扩展单个Redis实例可能无法满足高并发和大数据量的需求需要更强大的缓存组件。其次项目常会出现网络问题和宕机问题等会导致服务重启存储在Redis中的热点数据就会丢失这就是常见的单点故障问题。 使用Redis集群会有以下优势 水平扩展通过将数据分散到多个Redis节点上增加系统的存储容量和处理能力。因为Redis集群使用哈希槽hash slot机制将数据分布到多个节点上。每个节点负责一部分哈希槽从而实现数据的水平扩展。高可用性通过主从复制和故障转移机制确保系统的高可用性。Redis集群支持主从复制当主节点故障时从节点可以自动晋升为主节点继续提供服务。此外集群还支持故障检测和自动故障转移。负载均衡通过将请求分散到多个节点上减轻单个节点的负载压力提高系统的整体性能。客户端根据哈希槽将请求发送到不同的节点从而实现负载均衡。容错能力通过冗余机制确保部分节点故障时系统仍然可以正常运行。每个节点都有多个副本主从复制当某个节点故障时其他副本可以接管其职责确保数据的可用性。 上面提到了一个关键词节点下面解释下什么是节点在集群中节点如何分配。 三、常说的Redis节点是什么在集群中扮演什么角色 在Redis集群中节点Node是指运行Redis服务的实例它是一个独立的Redis服务器进程。每个节点负责存储一部分数据实现数据的分布并且可以与其他节点通信以实现数据的分布和高可用性。 知道了什么是节点关于节点的作用有以下描述 数据存储每个节点负责存储一部分键值对数据。通过哈希槽机制整个键空间被划分为16384个哈希槽每个节点会被分配一定数量的哈希槽。例如如果有3个节点的集群每个节点可能会被分配大约5461个哈希槽16384 / 3 ≈ 5461。这个是关于Redis集群的设计后面会继续介绍。数据分片节点通过哈希槽机制实现数据的分片。当一个键被写入或读取时Redis会根据键的哈希值计算出对应的哈希槽然后将请求路由到负责该哈希槽的节点上。例如键 user:1 可能被哈希到哈希槽 1234而哈希槽 1234 被分配给了 节点A 那么对 user:1 的操作就会被发送到 节点A 。主从复制每个节点可以有多个从节点Replica。主节点Master负责处理写操作从节点通过复制主节点的数据来保持数据一致性。从节点不仅可以提供读操作还可以在主节点故障时接管主节点的角色实现高可用性。故障转移当主节点故障时从节点会自动晋升为主节点继续提供服务。集群中的其他节点会通过 内部通信机制检测到故障并触发故障转移。例如如果主节点A故障其从节点B会根据哨兵模式的选举等发哪个时晋升为主节点客户端的请求会被自动路由到新的主节点B。通信与协调节点之间通过内部通信机制如Gossip协议交换状态信息包括节点的健康状态、哈希槽的分配情况等。这种通信机制确保了集群的高可用性和数据一致性。 在Redis集群中节点可以分为两种类型也就是主节点和从节点。主节点负责写操作和数据分片从节点负责数据复制和故障转移。 主节点Master Node主节点负责处理写操作并将数据同步到从节点。每个主节点负责一部分哈希槽存储与这些哈希槽对应的键值对。从节点Replica Node从节点是主节点的副本通过复制主节点的数据来保持数据一致性。从节点可以提供读操作减轻主节点的负载。从节点在主节点故障时可以晋升为主节点实现故障转移。 假设你有一个Redis集群包含3个主节点和3个从节点每个主节点有1个从节点。以下是节点的分配和作用 主节点A 负责哈希槽范围0-5460从节点从节点A1 主节点B 负责哈希槽范围5461-10922从节点从节点B1 主节点C 负责哈希槽范围10923-16383从节点从节点C1 当客户端请求键 user:1 时Redis计算键 user:1 的哈希值确定其对应的哈希槽为 1234 。根据哈希槽分配哈希槽 1234 属于 主节点B 。客户端将请求发送到主节点B。如果主节点B故障从节点B1 会自动晋升为主节点继续提供服务。现在知道了节点在Redis集群中的作用再进一步了解Redis集群的工作原理。 四、Redis 集群实现主从复制 上面讲到了Redis集群的主从复制的概念和原理主从复制就是将主节点和从节点中的数据同步实现主节点负责处理写操作从节点负责处理读操作从节点通过复制主节点的数据来保持数据一致性。 我们要知道为什么要做主从复制也就是要知道主从复制的优势是什么。 数据容灾。从机作为主机的一个数据备份当主机宕机后从机能够快速的切换成主机达到一个高可用的目的。读写分离。主机负责写数据从机负责读数据提高 Redis 的吞吐量但是会发生数据一致性的问题毕竟主从同步数据需要时间。 需要注意的是 当 Redis 搭建主从后从机就只能读数据不能去写数据了写的话会报错。单纯的搭建 Redis 主从不能实现主从的切换也就是主机宕机后从机还是从机要想实现主从切换必须引用 Redis 的哨兵机制。 下面通过图片解释图片是百度搜索找了两张懒得自己画看着不错就用了如有侵权请联系。 如上图所示我们跟着步骤来了解主从复制的原理这张图展示了Redis主从实例之间的数据同步过程具体如下 首先两个实例主实例和从实例IP地址信息这个不多说。 第一阶段建立连接协商同步为了全量复制做准备 从实例在配置完启动后会根据配置的主机的 ipport 去 ping 主机看能不能 ping 通建立一个 socket 通道。期间也会不断的进行心跳检测保证二者实时感应到的。从实例执行 replicaof 192.168.1.100 6379 或 slaveof 172.16.19.3 6379 命令向主实例发起连接请求。Redis 在 5.0.0 版本之前使用 slaveof 命令进行主从复制相关操作从 5.0.0 版本开始使用 replicaof 命令替代 slaveof 命令二者功能基本相同主要用于设置一个 Redis 实例成为另一个实例的从节点实现主从复制。避免存在歧视的问题。连接请求就是从实例发送 psync ? -1 命令请求进行数据同步。psync 包含两个参数分别是主服务器的 runID 和复制进度 offset 。runID 每个 Redis 服务器在启动时会自动生成随机 ID 来唯一标识第一次同步时主从信息未知所以设置为 ? 。offset 表示复制的进度第一次同步时其值为 -1。主实例收到连接诶请求后会回复 FULLRESYNC {runID} {offset} 告知从实例将进行全量同步并提供主实例的 runID 和复制进度 offset从服务器收到响应后会记录这两个值。FULLRESYNC 响应命令是采用全量复制的方式主服务器会把所有的数据都同步给从服务器。 第二阶段主库同步数据给从库 主实例执行 bgsave 命令在后台生成 RDB 文件这是对当前数据库状态的快照然后把文件发送给从服务器。主服务器生成 RDB 这个过程是不会阻塞主线程Redis 依然可以正常处理命令不会出现性能影响。从实例接收到 RDB 文件后先清空现有数据然后加载 RDB 文件将主实例的数据库状态同步过来。在从实例加载文件的期间主实例写操作命令记录的数据就不会同步主从服务器间的数据就不一致了。为了保证主从服务器的数据一致性主服务器会将在 RDB 文件生成后收到的写操作命令写入到 replication buffer 缓冲区。 第三阶段主库发送新写命令给从库 主实例在生成 RDB 文件期间新的写命令会被存储在 replication buffer 复制缓冲区中。主实例将 replication buffer 中的写命令发送给从实例从实例加载 replication buffer 中的写命令以确保与主实例的数据最终一致。 至此主从服务器的第一次同步的工作就完成了。 五、Redis 集群实现故障转移哨兵模式 Redis集群实现故障转移一般通过哨兵Sentinel机制哨兵机制是来监控我们的 Redis 主从服务当发现主从服务出现问题比如主机下线了或宕机它就会将其他的从机扶持成主机达到系统正常运行的效果。一般而言常用多个实例来组成 sentinel 哨兵集群来监视一组的一主多从或者是多组的一主多从。 哨兵模式遵循自己的选举机制和过半原则只有当一半以上的 sentinel 认为某台机器出问题了这个决议才会被通过然后进行之后的操作。如果集群任意主节点挂掉且当前主节点没有从节点集群进入 fail 状态如果集群超过半数以上主节点挂掉无论是否有从节点集群直接进入 fail 状态。 步骤如下图所示图片是百度所查如有侵权请联系。 1、前期准备工作 配置主从复制在每个Redis节点的配置文件 redis.conf 中设置节点角色和复制关系。例如有节点1IP为 192.168.1.10 节点2、3、4从节点。配置主节点配置文件中 replicaof no one 并设置密码等从节点配置 replicaof 192.168.1.10 6379 指定主节点IP和端口。配置 Sentinel 监控在任意 Redis 节点创建 Sentinel 配置文件 sentinel.conf 。Sentinel 是一个特殊的 Redis 服务器不会去进行持久化Sentinel 实例启动后每个 Sentinel 会创建2个连向主服务器的网络连接。 命令连接用于向主服务器发送命令并接收响应。订阅连接用于订阅主服务器的一个 sentinel:hello 频道。 获取主节点信息Sentinel 默认每10秒一次向被监控的主节点发送 info 命令获取主节点和其下属从节点的信息。获取从节点信息当 Sentinel 发现主节点有新的从节点出现时Sentinel 还会向从节点建立命令连接当命令连接建立之后Sentinel 还是会默认 10s 一次向从节点发送 info 命令并记录从节点的信息。sentinel monitor mymaster 192.168.1.10 6379 2 表示监控名为 mymaster 的主节点。sentinel auth - pass mymaster your_master_password 配置主节点密码。 2、故障检测 当 Sentinel 与主节点或从节点建立起订阅连接之后Sentinel 就会通过订阅连接向节点发送以下命令subscribe —sentinel—:helloSentinel 彼此之间只创建命令连接而不创建订阅连接。通过订阅节点就能感知到新的 Sentinel 的加入。检测主观下线状态 SDOWN Sentinel 每2秒一次向所有被监视的主节点和从节点所订阅的 sentinelhello 频道上发送 PING 命令消息消息会携带 Sentinel 自身的信息和主节点的信息也会向其他 Sentinel 发送 PING 命令消息。当在 sentinel down - after - milliseconds mymaster 设置的毫秒时间内返回除了PONG、-LOADING、-MASTERDOWN 的无效回复或者超时无回复未收到主节点的 PONG 响应单个 Sentinel 会先认为该主节点主观下线 SDOWN。 检查客观下线状态 ODOWN 当一个 Sentinel 将一个主节点判断为主观下线后Sentinel 会向同时监控这个主节点的所有其他 Sentinel 发送查询命令。当同意主节点下线的 Sentinel 数量达到配置的最小选举数量如上述配置中的2则认为主节点客观下线 ODOWN 。 3、故障转移选举 在认定主节点客观下线后Sentinel 会进行故障转移选举。它会将失效主节点中的一个从节点升级为新的主节点并让失效主节点的其他从节点改为复制新的主节点。当客户端试图连接失效的主节点时集群也会向客户端返回新主节点的地址集群使用新主节点替换失效主节点。主节点和从节点切换后主节点的 redis.conf 和从节点的 redis.conf 和 sentinel.conf 的配置文件的内容都会发生相应的改变。即从节点的配置文件中会有 replicaof 的配置Sentinel 的监控目标也会调换。 4、选举规则 首先过滤掉主观下线的节点先选举 Leader Sentinel 当一个主节点被判定为客观下线后监视这个主节点的所有 Sentinel 会通过选举算法 raft 选出一个 Leader Sentinel 去执行 failover 故障转移操作。先看优先级选 优先级最高 的从节点可在从节点配置slave - priority设置优先级值越小优先级越高。若优先级相同会选择 复制偏移量最大数据最完整的从节点复制偏移量越大则表示数据复制的越完整。若仍相同会根据节点的 runID 选择因为 ID 越小说明重启次数越少。 5、更新从节点配置 新主节点选出后Sentinel 会将新主节点信息更新到所有从节点的配置文件中从节点配置文件中的 replicaof 配置会修改为新主节点的IP和端口。 6、重启从节点 从节点配置更新后需重启每个从节点执行redis - server redis.conf使其连接到新的主节点至此完成故障转移集群恢复正常服务能力。 至此完成了故障转移。 本文参考 1、Redis三主三从集群搭建三台机器 2、浅谈redis的主从复制 哨兵模式 3、Redis缓存哨兵机制的基本流程 4、Redis 主从复制
http://www.hkea.cn/news/14311166/

相关文章:

  • 怎样只做自己的网站wordpress菜单分页
  • 一级a做爰片365网站网站空间如何使用
  • 网站首页怎么做全屏swf电商培训
  • 网站如何做营销开发项目管理软件
  • 建站程序免费网站百度收录
  • 大朗镇仿做网站网站的优化 设计
  • 购物网站开发教学视频wordpress 多站点错误
  • 做实验流程图的网站百度不抓取网站
  • 北京网站建设 标准型 新翼企业网站设计调查问卷
  • 企业网站上线白银市做网站
  • 营销型企业网站制作公司wordpress用户部门
  • 电子商务网站建设预算表app平台搭建
  • 营销型网站建设定制手机设计免费软件
  • 海口网站建设团队设计师培训计划方案
  • 惠州地区网站建设公司菏泽 网站建设
  • 江津做电子商务网站自己建网站做网店
  • 门户手机网站模板17网站一起做网店潮汕
  • 网站建设国内公司wordpress前台管理员
  • 祁东县建设局网站线下推广方式有哪些
  • 中能建西北城市建设有限公司网站ui设计怎么自学
  • 网站建设要用H5的缺点做网站软件 手机
  • 彩票网站怎么做系统用易语言可以做网站吗
  • php做数据网站物联网的发展前景
  • 阿里云网站301重定向怎么做宝安做棋牌网站建设哪家便宜
  • 网站建设中单页源码做跨境电商网站报价
  • 网站建设和维护待遇网站重构怎么做
  • 企业网站psd模板中国建筑工程网施工组织设计
  • 用自己电脑做服务器建网站wordpress最大上传尺寸
  • 可以写代码的网站门户网站建设招标书
  • 如何制作自己公司网站微信微官网如何制作