如何优化渝水区城乡建设局网站百度手机SEO以提升搜索排名?

摘要:渝水区城乡建设局网站,百度手机seo,wordpress用户列表,如何做一个自己的电商平台Redis 是一款开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。然而&#xff0
渝水区城乡建设局网站,百度手机seo,wordpress用户列表,如何做一个自己的电商平台Redis 是一款开源的、内存中的数据结构存储系统#xff0c;它可以用作数据库、缓存和消息中间件。然而#xff0c;作为一个单点服务#xff0c;Redis 在面临硬件故障或者网络问题时可能会导致服务不可用。为了解决这个问题#xff0c;Redis 提供了哨兵模式#xff0c;一个… Redis 是一款开源的、内存中的数据结构存储系统它可以用作数据库、缓存和消息中间件。然而作为一个单点服务Redis 在面临硬件故障或者网络问题时可能会导致服务不可用。为了解决这个问题Redis 提供了哨兵模式一个高可用性解决方案。 在这篇博客中我们将深入探讨 Redis 的哨兵模式。我们将首先介绍哨兵模式的基本概念包括主节点、从节点和哨兵节点。然后我们将详细解析哨兵模式下的主要流程包括主观下线、客观下线、领导者选举和故障转移。 无论你是一个 Redis 的新手还是一个有经验的开发者我相信这篇博客都能帮助你更好地理解和使用 Redis 的哨兵模式。让我们开始吧 文章目录 1、Redis哨兵模式介绍1.1、Redis哨兵模式概述1.2、Redis主从复制与哨兵模式1.3、Redis哨兵模式主要角色 2、Redis哨兵模式原理2.1、Redis哨兵模式-定时监控2.2、Redis哨兵模式-主观客观下载2.4、Redis哨兵模式-节点选举2.5、Redis哨兵模式-故障转移 3、Redis主从复制实现3.1、拉取Redis镜像3.3、创建所需文件夹3.3、修改redis.conf3.4、修改sentinel.conf4.5、运行容器4.6、查看主从节点信息 1、Redis哨兵模式介绍 1.1、Redis哨兵模式概述 Redis 哨兵模式是 Redis 提供的一种高可用解决方案。它通过使用哨兵节点来监控 Redis 主服务器和从服务器的运行状态当主服务器出现故障时哨兵可以自动将一个从服务器提升为新的主服务器实现故障转移。 以下是 Redis 哨兵模式的主要特点 监控哨兵会定期检查主服务器和从服务器是否正常运行这包括检查是否能正常响应客户端的请求以及主从服务器之间的数据复制是否正常。通知当哨兵发现主服务器出现故障时它可以通过 API 向管理员发送通知。自动故障转移当主服务器出现故障时哨兵会自动从从服务器中选举出一个新的主服务器并让其他的从服务器开始复制新的主服务器。配置提供者客户端可以向哨兵询问哪个服务器是当前的主服务器。这样即使发生了故障转移客户端也能找到正确的主服务器。 1.2、Redis主从复制与哨兵模式 主从复制模式在 Redis 中是一种常见的数据冗余和读取性能提升的方式但它也存在一些不足之处 单点故障问题在主从复制模式中所有的写操作都是在主服务器上进行的如果主服务器出现故障那么整个 Redis 服务将无法处理写请求。故障恢复手动性当主服务器出现故障后需要手动将一个从服务器提升为新的主服务器并修改应用程序的配置指向新的主服务器。这个过程可能需要一段时间导致服务中断。数据一致性问题在主服务器向从服务器复制数据的过程中如果出现网络问题或者从服务器宕机可能会导致主从服务器的数据不一致。 Redis 哨兵模式就是为了解决这些问题而设计的 自动故障转移哨兵模式可以自动检测主服务器的状态当主服务器出现故障时哨兵会自动从从服务器中选举出一个新的主服务器并让其他的从服务器开始复制新的主服务器。这个过程是自动进行的无需人工干预可以减少因主服务器故障导致的服务中断时间避免单点故障通过自动故障转移哨兵模式可以避免单点故障问题。即使主服务器出现故障Redis 服务仍然可以继续处理写请求通知Notification 哨兵可以将故障转移的结果发送给客户端提供服务发现功能哨兵还提供了服务发现功能客户端可以询问哨兵当前的主服务器是哪一个这样即使发生了故障转移客户端也能找到正确的主服务器。 1.3、Redis哨兵模式主要角色 在 Redis 哨兵模式中主要有以下三种角色 主节点Master主节点是 Redis 服务的主要提供者它处理所有的写操作并将数据复制到从节点。在正常情况下所有的读写操作都由主节点处理从节点Slave从节点是主节点的备份它从主节点复制数据可以处理读操作。当主节点出现故障时从节点可以被提升为新的主节点哨兵节点Sentinel哨兵节点是 Redis 高可用性的关键它监控主节点和从节点的运行状态当主节点出现故障时哨兵节点会进行故障转移选举一个新的主节点并重新配置从节点。 在哨兵模式下主节点、从节点和哨兵节点都可以是多个形成一个分布式的、高可用的 Redis 服务。 2、Redis哨兵模式原理 哨兵模式是通过哨兵节点完成对数据节点的监控、下线、故障转移。 2.1、Redis哨兵模式-定时监控 哨兵节点会定期检查主服务器和所有从服务器的运行状态包括是否在线是否能正常响应请求主从数据复制是否正常等。 以下是哨兵模式下的定时监控的主要步骤 每隔默认 1 秒每个 Sentinel 节点会向主节点、从节点以及其余 Sentinel 节点发送 PING 命令以检查它们是否在线。如果服务器正常响应了 PING 命令那么哨兵节点就认为这个服务器是在线的。如果服务器没有响应或者返回了错误那么哨兵节点就认为这个服务器可能出现了故障每隔默认 2 秒每个 Sentinel 节点会向 Redis 数据节点的 __sentinel__:hello 频道发送消息这个消息包含了该 Sentinel 节点对于主节点的判断以及当前 Sentinel 节点的信息每隔默认 10 秒每个 Sentinel 节点会定期默认是每10秒向主节点和所有从节点发送 INFO 命令获取最新的拓扑结构和其他信息。INFO 命令可以返回 Redis 服务器的各种信息和统计数据包括服务器的一般信息例如 Redis 版本启动时间操作系统等客户端连接的信息内存使用情况数据持久化的状态主从复制的信息等。 2.2、Redis哨兵模式-主观客观下载 在 Redis 哨兵模式中主观下线和客观下线是两个重要的概念它们是 Sentinel 节点判断主服务器是否出现故障的依据。 主观下线Subjective Down每个 Sentinel 节点会定期默认是每1秒向主节点、从节点和其他 Sentinel 节点发送 PING 命令进行心跳检测。如果某个节点在 down-after-milliseconds 参数设定的时间内没有进行有效回复Sentinel 节点就会对该节点做失败判定这个行为被称为主观下线。 主观下线是基于 Sentinel 节点自身视角的判断它只代表了该 Sentinel 节点无法与被检测节点正常通信可能是由于网络问题或者被检测节点的实际故障。 客观下线Objective Down当足够多的 Sentinel 节点都认为主服务器已经下线那么主服务器就被认为是客观下线。这是多数 Sentinel 节点的共识更具有可信度。 在 Redis 哨兵模式中当一个 Sentinel 节点主观判断主节点下线后它会通过 sentinel is-master-down-by-addr 命令向其他 Sentinel 节点询问对主节点的判断。如果收到的回复中认为主节点下线的 Sentinel 节点数量达到了 quorum 参数设定的值那么这个 Sentinel 节点就会认为主节点确实有问题做出客观下线的决定。 在 Sentinel 模式下只有当主服务器被判断为客观下线才会触发故障转移过程。这是为了防止由于个别 Sentinel 节点的网络问题或者误判导致的误报。只有当多数 Sentinel 节点都认为主服务器已经下线才认为这是一个真实的故障需要进行故障转移。 2.4、Redis哨兵模式-节点选举 在 Redis 哨兵模式中当主节点被判断为客观下线后哨兵节点会进行领导者选举选出一个领导者 Sentinel 节点来负责故障转移的过程。以下是领导者 Sentinel 节点选举的详细步骤 开始选举当一个 Sentinel 节点判断主节点客观下线后它会开始一个新的领导者选举过程。首先它会增加自己的配置纪元一个全局的、递增的数字然后向其他 Sentinel 节点发送请求投票的消息投票当一个 Sentinel 节点收到请求投票的消息后如果请求中的配置纪元大于自己的配置纪元那么它会更新自己的配置纪元并向请求投票的 Sentinel 节点发送投票消息。每个 Sentinel 节点在一个配置纪元中只能投票一次统计投票请求投票的 Sentinel 节点会统计收到的投票消息如果在指定的时间内默认是 2 秒收到了大多数 Sentinel 节点的投票那么它就会被选举为领导者开始故障转移领导者 Sentinel 节点会开始故障转移过程包括选举新的主节点重新配置从节点等。 通过这个过程哨兵系统可以在主节点出现故障后快速选举出一个领导者来进行故障转移保证 Redis 服务的高可用性。 2.5、Redis哨兵模式-故障转移 在 Redis 哨兵模式中当主节点被判断为客观下线后哨兵节点会进行故障转移选举一个新的主节点并重新配置从节点。以下是故障转移的详细步骤 选举新的主节点首先领导者 Sentinel 节点会从所有的从节点中选举出一个新的主节点。选举的原则主要是优先选择数据最新复制偏移量最大和优先级最高的从节点。发送 SLAVEOF NO ONE 命令领导者 Sentinel 节点会向新选举出的主节点发送 SLAVEOF NO ONE 命令让它成为新的主节点。重新配置从节点然后领导者 Sentinel 节点会向其他的从节点发送 SLAVEOF 命令让它们成为新主节点的从节点。更新元数据最后所有的 Sentinel 节点会更新自己的元数据包括主节点的地址、主从关系等。通知客户端所有的 Sentinel 节点会向订阅了 switch-master 事件的客户端发送消息通知它们主节点已经切换。 通过这个过程哨兵系统可以在主节点出现故障后快速完成故障转移保证 Redis 服务的高可用性。 3、Redis主从复制实现 3.1、拉取Redis镜像 拉取 Redis 镜像 docker pull redis3.3、创建所需文件夹 创建所需文件夹用于映射容器相应文件路径 mkdir -p ~/data/redis/master/data touch ~/data/redis/master/redis.confmkdir touch ~/data/redis/master/redis.conf mkdir -p ~/data/redis/slave-1/data touch ~/data/redis/slave-1/redis.confmkdir touch ~/data/redis/slave-1/redis.conf mkdir -p ~/data/redis/slave-2/data touch ~/data/redis/slave-2/redis.confmkdir touch ~/data/redis/slave-2/redis.conf mkdir -p ~/data/redis/slave-3/data touch ~/data/redis/slave-3/redis.confmkdir touch ~/data/redis/slave-3/redis.conf # sentinel.conf 文件一个就够 touch ~/data/redis/master/sentinel.conf 3.3、修改redis.conf 修改主节点 redis.conf 文件 bind 0.0.0.0 # 开启保护模式限制为本地访问默认yes protected-mode no # 默认no改为yes意为以守护进程方式启动可后台运行除非kill进程改为yes会使配置文件方式启动redis失败 daemonize no # redis持久化可选 appendonly yes 修改从节点 redis.conf 文件 bind 0.0.0.0 # 开启保护模式限制为本地访问默认yes protected-mode no # 默认no改为yes意为以守护进程方式启动可后台运行除非kill进程改为yes会使配置文件方式启动redis失败 daemonize no # redis持久化可选 appendonly yes # 指向master节点 replicaof 172.17.0.2 63793.4、修改sentinel.conf 修改 sentinel.conf 文件 daemonize yes sentinel monitor mymaster 172.17.0.2 6379 2 port 263794.5、运行容器 运行容器并指定挂载路径 docker run -p 16379:6379 -p 16389:26379 --name redis-master -v ~/data/redis/master/data/:/data -v ~/data/redis/master/sentinel.conf:/etc/redis/sentinel.conf -v ~/data/redis/master/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf --appendonly yes --- docker run -p 26379:6379 -p 16390:26379 --name redis-slave-1 -v ~/data/redis/slave-1/data/:/data -v ~/data/redis/slave-1/sentinel.conf:/etc/redis/sentinel.conf -v ~/data/redis/slave-1/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf --appendonly yes --- docker run -p 36379:6379 -p 16391:26379 --name redis-slave-2 -v ~/data/redis/slave-2/data/:/data -v ~/data/redis/slave-2/sentinel.conf:/etc/redis/sentinel.conf -v ~/data/redis/slave-2/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf --appendonly yes --- docker run -p 46379:6379 -p 16392:26379 --name redis-slave-3 -v ~/data/redis/slave-3/data/:/data -v ~/data/redis/slave-3/sentinel.conf:/etc/redis/sentinel.conf -v ~/data/redis/slave-3/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf --appendonly yes通过 Docker Desktop 查看 4.6、查看主从节点信息 查看主从节点信息 # 进入从节点服务 docker exec -it [CONTAINER ID] redis-cli # 查看角色信息 127.0.0.1:6379 role # 查看主从复制信息 127.0.0.1:6379 info replication主节点 从节点