网站建设 实训意见和建议宜兴百度推广公司

张小明 2025/12/29 16:59:24
网站建设 实训意见和建议,宜兴百度推广公司,网站建设管理案例实训报告,如何做英文网站推广本文详解Redis高可用架构设计#xff0c;从主从复制到哨兵模式再到Cluster集群的完整实践。前言 Redis作为最流行的缓存数据库#xff1a; 高性能#xff1a;10万 QPS丰富的数据结构简单易用 但单机Redis存在问题#xff1a; 单点故障容量有限无法水平扩展 今天来讲Redis的…本文详解Redis高可用架构设计从主从复制到哨兵模式再到Cluster集群的完整实践。前言Redis作为最流行的缓存数据库高性能10万 QPS丰富的数据结构简单易用但单机Redis存在问题单点故障容量有限无法水平扩展今天来讲Redis的高可用部署方案。一、高可用架构选型1.1 架构对比架构特点适用场景主从复制读写分离手动故障转移小规模读多写少哨兵模式自动故障转移中等规模Cluster集群分片存储高可用大规模数据量大1.2 如何选择数据量 10GBQPS 5万主从复制 数据量 50GB需要自动故障转移哨兵模式 数据量 50GB需要分片Cluster集群二、主从复制2.1 架构图┌─────────────┐ │ Master │ │ 192.168.1.1 │ │ :6379 │ └──────┬──────┘ │ 同步 ┌───┴───┐ ↓ ↓ ┌──────┐ ┌──────┐ │Slave1│ │Slave2│ │ .2 │ │ .3 │ └──────┘ └──────┘2.2 Docker部署# docker-compose.ymlversion:3.8services:redis-master:image:redis:7container_name:redis-masterports:-6379:6379volumes:-./master/data:/data-./master/redis.conf:/etc/redis/redis.confcommand:redis-server /etc/redis/redis.confredis-slave1:image:redis:7container_name:redis-slave1ports:-6380:6379volumes:-./slave1/data:/data-./slave1/redis.conf:/etc/redis/redis.confcommand:redis-server /etc/redis/redis.confdepends_on:-redis-masterredis-slave2:image:redis:7container_name:redis-slave2ports:-6381:6379volumes:-./slave2/data:/data-./slave2/redis.conf:/etc/redis/redis.confcommand:redis-server /etc/redis/redis.confdepends_on:-redis-master2.3 配置文件Master配置# master/redis.confbind0.0.0.0 port6379requirepass yourpassword masterauth yourpassword appendonlyyesSlave配置# slave1/redis.confbind0.0.0.0 port6379requirepass yourpassword masterauth yourpassword replicaof redis-master6379appendonlyyesreplica-read-onlyyes2.4 验证同步# 连接Masterredis-cli -h127.0.0.1 -p6379-a yourpassword# 查看复制状态127.0.0.1:6379INFO replication# role:master# connected_slaves:2# 写入数据127.0.0.1:6379SETtesthello# 连接Slave验证redis-cli -h127.0.0.1 -p6380-a yourpassword127.0.0.1:6380GETtesthello三、哨兵模式3.1 架构图┌────────────────────────────────┐ │ Sentinel集群 │ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │ │ S1 │ │ S2 │ │ S3 │ │ │ └──┬──┘ └──┬──┘ └──┬──┘ │ └─────┼───────┼───────┼────────┘ │ │ │ 监控 ┌──────┴───────┴───────┴──────┐ ↓ ↓ ┌─────────────┐ ┌─────────────┐ │ Master │──同步──────→│ Slave │ └─────────────┘ └─────────────┘ 故障转移Master挂了 → Sentinel投票 → 提升Slave为Master3.2 部署配置# docker-compose.yml 添加哨兵sentinel1:image:redis:7container_name:sentinel1ports:-26379:26379volumes:-./sentinel1/sentinel.conf:/etc/redis/sentinel.confcommand:redis-sentinel /etc/redis/sentinel.confsentinel2:image:redis:7container_name:sentinel2ports:-26380:26379volumes:-./sentinel2/sentinel.conf:/etc/redis/sentinel.confcommand:redis-sentinel /etc/redis/sentinel.confsentinel3:image:redis:7container_name:sentinel3ports:-26381:26379volumes:-./sentinel3/sentinel.conf:/etc/redis/sentinel.confcommand:redis-sentinel /etc/redis/sentinel.confSentinel配置# sentinel.confport26379sentinel monitor mymaster redis-master63792sentinel auth-pass mymaster yourpassword sentinel down-after-milliseconds mymaster5000sentinel failover-timeout mymaster60000sentinel parallel-syncs mymaster13.3 故障转移测试# 停止Masterdocker stop redis-master# 查看Sentinel日志docker logs sentinel1# sdown master mymaster 192.168.1.1 6379# odown master mymaster 192.168.1.1 6379 #quorum 2/2# switch-master mymaster 192.168.1.1 6379 192.168.1.2 6379# Slave已提升为新Master3.4 客户端连接// Java连接哨兵SetStringsentinelsnewHashSet();sentinels.add(192.168.1.1:26379);sentinels.add(192.168.1.2:26379);sentinels.add(192.168.1.3:26379);JedisSentinelPoolpoolnewJedisSentinelPool(mymaster,sentinels,config,yourpassword);四、Cluster集群4.1 架构图┌────────────┐ ┌────────────┐ ┌────────────┐ │ Master1 │ │ Master2 │ │ Master3 │ │ Slot 0-5460│ │Slot 5461- │ │Slot 10923- │ │ │ │ 10922 │ │ 16383 │ └─────┬──────┘ └─────┬──────┘ └─────┬──────┘ │ │ │ ↓ ↓ ↓ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ Slave1 │ │ Slave2 │ │ Slave3 │ └────────────┘ └────────────┘ └────────────┘ 数据按Key的CRC16值分配到16384个槽位 每个Master负责一部分槽位4.2 部署# 创建6个节点3主3从forportin700170027003700470057006;domkdir-p cluster/${port}catcluster/${port}/redis.confEOF port${port}cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes requirepass yourpassword masterauth yourpassword EOFdone# 启动节点forportin700170027003700470057006;dodocker run -d --name redis-${port}\-p${port}:${port}-p1${port}:1${port}\-v$(pwd)/cluster/${port}:/data\redis:7 redis-server /data/redis.confdone# 创建集群redis-cli --cluster create\192.168.1.1:7001192.168.1.1:7002192.168.1.1:7003\192.168.1.1:7004192.168.1.1:7005192.168.1.1:7006\--cluster-replicas1-a yourpassword4.3 集群操作# 连接集群-c表示集群模式redis-cli -c -p7001-a yourpassword# 查看集群状态127.0.0.1:7001CLUSTER INFO cluster_state:ok cluster_slots_assigned:16384 cluster_known_nodes:6# 查看节点信息127.0.0.1:7001CLUSTER NODES# 设置Key自动路由127.0.0.1:7001SET user:1test-Redirected to slot[8106]located at192.168.1.1:7002 OK4.4 扩容# 添加新节点redis-cli --cluster add-node192.168.1.1:7007192.168.1.1:7001 -a yourpassword# 重新分配槽位redis-cli --cluster reshard192.168.1.1:7001 -a yourpassword# 添加从节点redis-cli --cluster add-node192.168.1.1:7008192.168.1.1:7007\--cluster-slave --cluster-master-idmaster-id-a yourpassword五、跨机房/多站点部署5.1 场景挑战需求 - 总部机房3台服务器 - 分部机房3台服务器 - 需要搭建6节点Cluster 挑战 - 两个机房网络不通 - Redis Cluster需要节点互通5.2 解决方案使用组网软件如星空组网打通网络组网后的部署 ┌─────────────────────────────────────────────────────────┐ │ 组网虚拟局域网 │ │ │ │ ┌──────────────────┐ ┌──────────────────┐ │ │ │ 总部机房 │ │ 分部机房 │ │ │ │ │ │ │ │ │ │ Master1(10.10.0.1) │ Master2(10.10.0.4)│ │ │ │ Master3(10.10.0.2) │ Slave1 (10.10.0.5)│ │ │ │ Slave2 (10.10.0.3) │ Slave3 (10.10.0.6)│ │ │ │ │ │ │ │ │ └──────────────────┘ └──────────────────┘ │ │ │ └─────────────────────────────────────────────────────────┘配置# 各节点配置中使用组网IP# 节点1总部cluster-announce-ip10.10.0.1 cluster-announce-port7001cluster-announce-bus-port17001# 节点4分部cluster-announce-ip10.10.0.4 cluster-announce-port7001cluster-announce-bus-port17001# 创建集群时使用组网IPredis-cli --cluster create\10.10.0.1:700110.10.0.2:700110.10.0.3:7001\10.10.0.4:700110.10.0.5:700110.10.0.6:7001\--cluster-replicas1-a yourpassword效果跨机房节点通过组网IP互通Cluster正常工作加密传输安全可靠5.3 跨机房容灾策略主从分布策略 - 每个Master的Slave部署在不同机房 - 机房故障时另一机房的Slave可提升为Master ┌──────────────┐ ┌──────────────┐ │ 总部 │ │ 分部 │ │ Master1 ←───────同步──→ Slave1 │ │ Master2 ←───────同步──→ Slave2 │ │ Slave3 ←───────同步──→ Master3 │ └──────────────┘ └──────────────┘六、运维管理6.1 监控指标# 关键指标redis-cli INFO|grep-Econnected_clients|used_memory|hit_rate|ops_per_sec# 监控脚本#!/bin/bashHOSTS(10.10.0.1:637910.10.0.2:637910.10.0.3:6379)forhostin${HOSTS[]};doecho$hostredis-cli -h${host%:*}-p${host#*:}-a yourpassword INFO|\grep-Econnected_clients|used_memory_human|keyspace_hitsdone6.2 数据备份# RDB备份redis-cli -a yourpassword BGSAVE# 备份文件位置/data/dump.rdb# 定时备份脚本#!/bin/bashDATE$(date%Y%m%d_%H%M%S)redis-cli -a yourpassword BGSAVEsleep5cp/data/dump.rdb /backup/redis_${DATE}.rdb6.3 性能优化# redis.conf优化# 内存策略maxmemory 4gb maxmemory-policy allkeys-lru# 持久化优化写入性能appendfsync everysec# 连接优化tcp-backlog511timeout300tcp-keepalive300# 慢查询日志slowlog-log-slower-than10000slowlog-max-len1286.4 常用命令# 查看大Keyredis-cli -a yourpassword --bigkeys# 查看内存分析redis-cli -a yourpassword --memkeys# 慢查询redis-cli -a yourpassword SLOWLOG GET10# 客户端列表redis-cli -a yourpassword CLIENT LIST七、常见问题7.1 主从同步延迟# 查看延迟redis-cli -a yourpassword INFO replication|greplag# 解决方案# 1. 增加repl-backlog-sizerepl-backlog-size 256mb# 2. 网络优化使用组网降低延迟7.2 Cluster MOVED错误# 客户端需要使用集群模式# Java: JedisCluster# Python: redis-py-clusterJedisCluster clusternew JedisCluster(nodes, config);7.3 内存不足# 查看内存使用redis-cli -a yourpassword INFO memory# 清理过期Keyredis-cli -a yourpassword --scan --pattern*|head-1000|xargsredis-cli DEL# 设置过期时间EXPIRE key3600八、总结Redis高可用部署要点架构节点数自动故障转移分片主从复制2❌❌哨兵模式5含哨兵✅❌Cluster6✅✅我的建议小项目主从复制够用一般项目哨兵模式大数据量Cluster集群跨机房组网 Cluster关键配置1. 密码认证 2. 持久化策略 3. 内存限制 4. 监控告警参考资料Redis官方文档https://redis.io/docs/Redis Cluster扩展指南https://redis.io/learn/operate/redis-at-scale/scalability/Redis集群API文档https://redis.io/docs/latest/operate/rs/clusters/建议生产环境至少使用哨兵模式避免单点故障。定期备份数据监控内存使用。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

徐州市城乡和城乡建设厅网站潍坊专业网络营销

Windows Server 2008 域控管理与备份恢复指南 在 Windows Server 2008 环境中,对只读域控制器(RODC)的凭据管理、细粒度密码和帐户锁定策略的设置,以及活动目录域服务(AD DS)的备份与恢复都是至关重要的操作。下面将详细介绍这些操作的相关场景、问题及解决方案。 重置…

张小明 2025/12/29 11:28:47 网站建设

济南网站建设咨询小七百度如何注册公司网站

GPT-SoVITS音色相似度优化技巧:提升克隆真实感 在虚拟主播一夜涨粉百万、AI配音悄然渗透有声书市场的今天,声音的“辨识度”正成为人机交互的新战场。一个高度还原原声特质的语音克隆系统,不再只是技术炫技,而是决定用户体验生死的…

张小明 2025/12/29 17:24:07 网站建设

吴江网站制作公司外贸推广平台哪家好

福特汽车主观评价规范,性能开发参考,英文原版直译,评价条目、规则描述非常细致 包含平顺舒适性,转向,操稳,NVH,制动等 最近研究了福特汽车主观评价规范,这可是性能开发相当重要的参…

张小明 2025/12/29 5:09:58 网站建设

如何让百度新闻收录网站文章广告宣传设计图

LobeChat能否提醒事项?生活工作两不误 在快节奏的现代生活中,我们每天都在和时间赛跑。会议、截止日期、家庭事务交织在一起,稍有不慎就会遗漏重要安排。虽然手机日历和待办应用早已普及,但大多数人仍然需要手动打开App、逐项填写…

张小明 2025/12/29 17:24:09 网站建设

太原网站建设网站wordpress背景飘带

想要告别每日手动签到什么值得买的繁琐操作吗?通过本教程,你将掌握搭建自动化签到系统的完整流程,实现积分自动获取,让签到变得轻松高效。什么值得买自动化签到系统能够帮助用户实现每日自动签到、积分自动累积,是提升…

张小明 2025/12/29 17:24:12 网站建设

个体户做网站有优势吗wordpress 证书

近日,阿里巴巴达摩院正式向全球开发者开源其最新力作——Qwen2.5-VL-32B-Instruct多模态大模型,这一突破性进展迅速在人工智能领域掀起技术讨论热潮。该模型创造性地在保持轻量化部署优势的同时,实现了视觉理解、逻辑推理与任务执行能力的全方…

张小明 2025/12/29 17:24:11 网站建设