关于Redis的几件事 | 高并发和高可用

Redis高可用部署架构 Redis高可用部署可以采用主从复制与哨兵架构或Redis集群架构。下面将分别介绍这两种架构的架构图、优缺点和具体应用场景。 阅读详情

如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了。

redis高并发:主从架构,一主多从,一般来说,很多项目其实就足够了,单主用来写入数据,单机几万QPS,多从用来查询数据,多个从实例可以提供每秒10万的QPS。

redis高并发的同时,还需要容纳大量的数据:一主多从,每个实例都容纳了完整的数据,比如redis主就10G的内存量,其实你就最对只能容纳10g的数据量。如果你的缓存要容纳的数据量很大,达到了几十g,甚至几百g,或者是几t,那你就需要redis集群,而且用redis集群之后,可以提供可能每秒几十万的读写并发。

redis高可用:如果你做主从架构部署,其实就是加上哨兵就可以了,就可以实现,任何一个实例宕机,自动会进行主备切换。

下面详细介绍。

一.redis如何通过读写分离来承载读请求QPS超过10万+?

1.redis高并发跟整个系统高并发的关系

Rredis要搞高并发,那就要把底层的缓存搞好,让更少的请求直接到数据库,因为数据库的高并发实现起来是比较麻烦的,而且有些操作还有事务的要求等等,所以很难做到非常高的并发。

Redis并发做的好对于整个系统的并发来说还是不够的,但是redis作为整个大型的缓存架构,在支撑高并发的架构里面是非常重要的一环。

要实现系统的高并发,首先缓存中间件、缓存系统必须要能够支撑起高并发,然后在经过良好的整体缓存架构设计(多级缓存、热点缓存),才能真正支撑起高并发。

2.redis不能支撑高并发的瓶颈

Redis不能支撑高并发的瓶颈主要是单机问题,也就是说只有一个单一的redis,就算机器性能再怎么好,也是有上限的。

3.如何支撑更高的并发

单机的redis不可能支撑太高的并发量,要想支持更高的并发可以进行 读写分离 。对于缓存来说,一般都是支撑读高并发的,写的请求是比较少的,因此可以基于主从架构进行读写分离。

配置一个master(主)机器用来写入数据,配置多个slave(从)来进行数据的读取,在master接收到数据之后将数据同步到slave上面即可,这样slave可以配置多台机器,就可以提高整体的并发量。

二.redis replication以及master持久化对主从架构的安全意义

1.redis replication原理

一个master节点下面挂若干个slave节点,写操作将数据写到master节点上面去,然后在master写完之后,通过异步操作的方式将数据同步到所有的slave节点上面去,保证所有节点的数据是一致的。

2.redis replication的核心机制

(1)redis采用异步方式复制数据到slave节点,不过redis2.8开始,slave node会周期性地确认自己每次复制的数量。

(2)一个master node 可以配置多个 salve node。

(3)slave node也可以连接其他的slave node。

(4)slave node做复制分时候,是不会阻塞master node的正常工作的。

(5)slave node在做复制的时候,也不会阻塞自己的操作,它会用旧的数据来提供服务;但是复制完成的时候,需要删除旧的数据,加载新的数据,这个时候会对外暂停提供服务。

(6)slave node主要用来进行横向扩容,做读写分离,扩容的slave node 可以提高吞吐量。

3.master持久化对主从架构的安全意义

如果采用这种主从架构,那么必须要开启master node的持久化。不建议使用slave node作为master node的热备份,因为如果这样的话,如果master一旦宕机,那么master的数据就会丢失,重启之后数据是空的,其他的slave node要是来复制数据的话,就会复制到空,这样所有节点的数据就都丢了。

要对备份文件做多种冷备份,防止整个机器坏了,备份的rdb数据也丢失的情况。

C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享,视频获取+qun:正在跳转

三.redis主从复制原理、断点续传、无磁盘化复制、过期key处理

1.主从复制原理

①当启动一个slave node的时候,它会发送一个PSYNC 命令给master node。

②如果这个slave node是重新连接master node,那么master node 仅仅会复制给slave部分缺失的数据;如果是第一次连接master node,那么就会触发一次 full resynchronization。

③开始 full resynchronization的时候,master会启动一个后台线程 ,开始生成一份RDB快照文件,同时还会将从客户端新接收到的所有写命令缓存在内存当中。

④master node将生成的RDB文件发送给slave node,slave现将其写入本地磁盘,然后再从磁盘加载到内存当中。然后master node会将内存中缓存的写命令发送给slave node,slave node也会同步这部分数据 。

⑤slave node如果跟master node因为网络故障断开了连接,会自动重连 。

⑥master如果发现有多个slave node来重新连接,仅仅会启动一个rdb save操作 ,用一份数据服务所有slave node。

2.主从复制的断点续传

从redis2.8开始支持断点续传。如果在主从复制的过程中,网络突然断掉了,那么可以接着上次复制的地方,继续复制,而不是从头复制一份。

原理:

master node会在内存中创建一个backlog,master和slave都会保存一个replica offset还有一个master id,offset就保存在backlog中。如果master和slave网络连接断掉了,slave会让master从上次的replica offset开始继续复制。但是如果没有找到offset,就会执行一次 full resynchronization操作。

3.无磁盘化复制

无磁盘化复制是指,master直接再内存中创建RDB文件,然后发送给slave,不会在自己本地磁盘保存数据。

设置方式

配置 repl-diskless-sync和repl-diskless-sync-delay参数。

repl-diskless-sync:该参数保证进行无磁盘化复制。

repl-diskless-sync-delay:该参数表示等待一定时长再开始复制,这样可以等待多个slave节点从新连接上来。

4.过期key处理

slave不会过期key ,只有等待master过期key。

如果master过期了一个key,或者淘汰了一个key,那么master会模拟发送一条del命令 给slave,slave接到之后会删除该key。

四.redis replication的完整流运行程和原理的再次深入剖析

1.复制的完整流程

①slave node启动,仅仅保存了master node的信息,包括master node的host和ip,但是数据复制还没有开始。 master node的host和ip是在redis.conf文件里面的slaveOf中配置的 。

②slave node内部有一个定时任务,每秒检查是否有新的master node要连接个复制,如果发现,就跟master node建立socket网络连接。

③slave node发送ping命令给master node。

④如果master设置了requirepass,那么slave node必须发送master auth的口令过去进行口令验证。

⑤master node第一次执行全量复制,将所有数据发送给slave node。

⑥master node持续降写命令,异步复制给slave node。

2.数据同步的机制

指的是slave第一次连接master时的情况,执行的是全量复制。

①master和slave都会维护一个offset

master会在自身不断累加offset,slave也会在自身不断累加offset。slave每秒都会上报自己的offset给master,同时master也会保存每个slave的offset。

这个倒不是说特定就用在全量复制的,主要是master和slave都要知道各自的数据的offset,才能知道互相之间的数据不一致的情况

②backlog

master node有一个backlog在内存中,默认是1M大。

master node给slave node复制数据时,也会将数据在backlog中同步一份。

backlog主要是用来做全量复制中断时候的增量复制的。

③master run id

redis通过info server 可以查看到master run id。

用途:slave根据其来定位唯一的master。

为什么不用host+ip : 因为使用host+ip来定位master是不靠谱的,如果master node重启或者数据出现了变化,那么slave应该根据不同的master run id进行区分,run id不同就需要做一次全量复制。

如果需要不更改run id重启redis,可以使用redis-cli debug reload 命令。

3.全量复制流程与机制

①master执行bgsave,在本地生成一份RDB文件。

②master node将RDB快照文件发送给slave node,如果RDB文件的复制时间超过60秒(repl-timeout),那么slave node就会任务复制失败,可以适当调整这个参数。

③对于千兆网卡的机器,一般每秒传输100M,传输6G文件很可能超过60秒。

④master node在生成RDB文件时,会将所有新接到的写命令缓存在内存中,在slave node保存了RDB文件之后,再将这些写命令复制个slave node。

⑤查看client-output-buffer-limit slave 参数,比如[client-output-buffer-limit slave 256MB 64MB 60],表示在复制期间,内存缓存去持续消耗超过64M,或者一次性超过256MB,那么停止复制,复制失败。

⑥slave node接收到RDB文件之后,清空自己的数据,然后重新加载RDB文件到自己的内存中,在这个过程中,基于旧数据对外提供服务。

⑦如果slave node开启了AOF,那么会立即执行BRREWRITEAOF,重新AOF、rdb生成、rdb通过网络拷贝、slave旧数据的清理、slave aof rewrite,很耗费时间,如果复制的数据量在4G~6G之间,那么很可能全量复制时间消耗到1分半到2分钟。

4.增量复制流程与机制

①如果全量复制过程中,master和slave网络连接断掉,那么slave重新连接master会触发增刊复制。

②master直接从自己的backlog中获取部分丢失是数据,发送给slave node。

③master就是根据slave发送的psync中的offset来从backlog中获取数据的。

5.心跳

master和slave互相都会发送heartbeat信息。

master默认每隔10秒发送一次,slave node默认每隔1秒发送一次。

6.异步复制

master每次接收到写命令之后,现在内部写入数据,然后异步发送给slave node

五.redis主从架构下如何才能做到99.99%的高可用性?

1.什么是99.99%高可用?

高可用性(英语:high availability,缩写为 HA),IT术语,指系统无中断地执行其功能的能力,代表系统的可用性程度。是进行系统设计时的准则之一。高可用性系统与构成该系统的各个组件相比可以更长时间运行。

高可用性通常通过提高系统的容错能力来实现。定义一个系统怎样才算具有高可用性往往需要根据每一个案例的具体情况来具体分析。

其度量方式,是根据系统损害、无法使用的时间,以及由无法运作恢复到可运作状况的时间,与系统总运作时间的比较。计算公式为:

A(可用性),MTBF(平均故障间隔),MDT(平均修复时间)

在线系统和执行关键任务的系统通常要求其可用性要达到5个9标准(99.999%)。

2.redis不可用

redis不可以包含了单实例的不可用,主从架构的不可用。

不可用的情况:

①主从架构的master节点挂了,如果master节点挂了那么缓存数据无法再写入,而且slave里面的数据也无法过期,这样就导致了不可用。

②如果是单实例,那么可能因为其他原因导致redis进程死了。或者部署redis的机器坏了。

不可用的后果 :首先缓存不可用了,那么请求就会直接走数据库,如果涌入大量请求超过了数据库的承载能力,那么数据库就挂掉了,这时候如果不能及时处理好缓存问题,那么由于请求过多,数据库重启之后很快就又会挂掉,直接导致整个系统不可用。

3.如何实现高可用

①保证每个redis都有备份。

②保证在当前redis出故障之后,可以很快切换到备份redis上面去。

为了解决这个问题,引入下面的哨兵机制。

六.redis哨兵架构的相关基础知识的讲解

1.什么是哨兵?

哨兵(Sentinal)是redis集群架构当中非常重要的一个组件,它主要有一下功能:

①集群监控 ,负责监控redis master和slave进程是否正常工作。

②消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员。

③故障转移,如果master挂掉了,会自动转移到slave上。

④配置中心,如果故障发生了,通知client客户端连接到新的master上面去。

2.哨兵的核心知识

①哨兵本身是分布式的,需要作为一个集群去运行,个哨兵协同工作。

②故障转移时,判断一个master宕机了,需要大部分哨兵同意才行。

③即使部分哨兵挂掉了,哨兵集群还是能正常工作的。

④哨兵至少需要3个实例,来保证自己的健壮性。

⑤哨兵+redis主从结构,是无法保证数据零丢失的,只会保证redis集群的高可用。

⑥对应哨兵+redis主从这种架构,再使用之前,要做重复的测试和演练。

3.为什么哨兵集群部署2个节点无法正常工作?

哨兵集群必须部署2个以上的节点。如果集群仅仅部署了2个哨兵实例,那么quorum=1(执行故障转移需要同意的哨兵个数)。

如图,如果这时候master1宕机了,哨兵1和哨兵2中只要有一个认为master1宕机了就可以进行故障转移,同时哨兵1和哨兵2会选举出一个哨兵来执行故障转移。

同时这个时候需要majority(也就是所有集群中超过一半哨兵的数量),2个哨兵那么majority就是2,也就说需要至少2个哨兵还运行着,才可以进行故障转移。

但是如果整个master和哨兵1同时宕机了,那么就只剩一个哨兵了,这个时候就没有majority来运行执行故障转移了,虽然两外一台机器还有一个哨兵,但是1无法大于1,也就是无法保证半数以上,因此故障转移不会执行。

4.经典的3节点哨兵集群

Configuration: quorum = 2,majority=2

如果M1所在机器宕机了,那么三个哨兵还剩下2个,S2和S3可以一致认为master宕机,然后选举出一个来执行故障转移

同时3个哨兵的majority是2,所以还剩下的2个哨兵运行着,就可以允许执行故障转移

七.redis哨兵主备切换的数据丢失问题:异步复制、集群脑裂

1.两种数据丢失的场景

①异步复制导致的数据丢失

因为从master到slave的数据复制过程是异步的,可能有部分数据还没来得及复制到slave上面去,这时候master就宕机了,那么这部分数据就丢失了。

②集群脑裂导致的数据丢失

什么是脑裂:脑裂,也就是说,某个master所在机器突然脱离了正常的网络,跟其他slave机器不能连接,但是实际上master还运行着。

此时哨兵可能就会认为master宕机了,然后开启选举,将其他slave切换成了master。

这个时候,集群里就会有两个master,也就是所谓的脑裂。

此时虽然某个slave被切换成了master,但是可能client还没来得及切换到新的master,还继续写向旧master的数据可能也丢失了。

因此旧master再次恢复的时候,会被作为一个slave挂到新的master上去,自己的数据会清空,重新从新的master复制数据

2.解决异步复制的脑裂导致的数据丢失

要解决这个问题,就需要配置两个参数:

min-slaves-to-write 1 和 min-slaves-max-lag :

表示 要求至少有一个slave 在进行数据的复制和同步的延迟不能超过10秒。

如果一旦所有的slave数据同步和复制的延迟都超过了10秒,那么这个时候,master就会在接受任何请求了。

①减少异步复制的数据丢失

有了min-slaves-max-lag这个配置,就可以确保说,一旦slave复制数据和ack延时太长,就认为可能master宕机后损失的数据太多了,那么就拒绝写请求,这样可以把master宕机时由于部分数据未同步到slave导致的数据丢失降低的可控范围内。

②减少脑裂的数据丢失

如果一个master出现了脑裂,跟其他slave丢了连接,那么上面两个配置可以确保说,如果不能继续给指定数量的slave发送数据,而且slave超过10秒没有给自己ack消息,那么就直接拒绝客户端的写请求。

这样脑裂后的旧master就不会接受client的新数据,也就避免了数据丢失。

上面的配置就确保了,如果跟任何一个slave丢了连接,在10秒后发现没有slave给自己ack,那么就拒绝新的写请求。

因此在脑裂场景下,最多就丢失10秒的数据

八.redis哨兵的多个核心底层原理的深入解析(包含slave选举算法)

1.sdown和odown两种状态

sdown是主观宕机,就一个哨兵如果自己觉得一个master宕机了,那么就是主观宕机。

odown是客观宕机,如果quorum数量的哨兵都觉得一个master宕机了,那么就是客观宕机

sdown达成的条件很简单,如果一个哨兵ping一个master,超过了is-master-down-after-milliseconds指定的毫秒数之后,就主观认为master宕机。

sdown到odown转换的条件很简单,如果一个哨兵在指定时间内,收到了quorum指定数量的其他哨兵也认为那个master是sdown了,那么就认为是odown了,客观认为master宕机。

2.哨兵集群的字段发现机制

①哨兵相互之间的发现,是通过redis的pub/sub系统实现的,每个哨兵都会往 __sentinel__:hello 这个channel里面发送一个消息,这时候其他的哨兵都可以消费这个消息,并感知其他哨兵的存在。

②每个两秒钟,每个哨兵都会往自己监控的某个master+slave对应的 __sentinel__:hello channel里面发送一个消息,内容是自己的host、ip和run id还有对这个master的监控配置。

③每个哨兵也会去监听自己监控的每个master+slave对应的 __sentinel__:hello channel,r然后去感知到同样在监听这个master+slave的其他哨兵的存在。

④每个哨兵还会根据其他哨兵交换对master的监控配置,互相进行监控配置的同步。

3.slave配置的自我纠正

哨兵会负责自动纠正slave的一些配置,比如slave如果要成为潜在的master候选人,哨兵会确保slave在复制现有master数据;如果slave连接到了一个错误的master上,比如故障转移之后,那么哨兵会确保他们连接到正确的master上来。

4.选举算法

如果一个master被认为odown了,而且majority数量的哨兵都允许了主备切换,那么某个哨兵就会执行主备切换,此时首先要选举一个slave出来。选举会考虑到一下情况:

①slave跟master断开连接的时长

②slave的优先级

③slave复制数据的offset

④slave的run id

首先,如果一个slave跟master断开连接已经超过了 down-after-millisecondes 的10倍,外加master宕机的时长,那么slave就被认为不适合选举为master了。

即:断开连接时间 > (down-after-milliseconds * 10 + milliseconds_since_master_is_in_SDOWN_state).

对应剩下的slave按照如下规定排序:

①首先,按照slave的优先级进行排序,slave priority越低,优先级就越高。

②如果优先级相同,那么就看replica offset,那个slave复制了越多的数据,offset越靠后,优先级就越高。

③如果上面都想同,那就选择run id最小的那个slave。

5.quorum和majority

每次一个哨兵做主备切换,首先需要quorum数量的哨兵认为odown,然后选举出一个哨兵来做主备切换,这个哨兵还要得到majority数量哨兵的授权,才能正式执行切换。

如果quorum < majority ,比如5个哨兵,majority就是3(超过半数),quorum设置为2,那么就需要3个哨兵授权就可以执行切换。

如果 quorum >= majority,那么必须quorum数量的哨兵都授权才可以进行切换,比如5个哨兵,quorum是5,那么必须5个哨兵都同意授权,才可以进行切换。

6.configuration epoch

哨兵会对一套redis master+slave进行监控,有相应的监控的配置。

执行切换的那个哨兵,会从要切换到的新master(salve->master)那里得到一个configuration epoch,这就是一个version号,每次切换的version号都必须是唯一的。

如果第一个选举出的哨兵切换失败了,那么其他哨兵,会等待failover-timeout时间,然后接替继续执行切换,此时会重新获取一个新的configuration epoch,作为新的version号。

7、configuraiton传播

哨兵完成切换之后,会在自己本地更新生成最新的master配置,然后同步给其他的哨兵,就是通过之前说的pub/sub消息机制。

这里之前的version号就很重要了,因为各种消息都是通过一个channel去发布和监听的,所以一个哨兵完成一次新的切换之后,新的master配置是跟着新的version号的。

其他的哨兵都是根据版本号的大小来更新自己的master配置的。

Qwen3.5在昇腾NPU上部署:vLLM-Ascend全链路实战 大语言模型推理框架(如vLLM)通过PagedAttention等内存调度机制,显著提升显存利用率与吞吐性能;国产AI芯片(如昇腾NPU)需配套专用算子优化与硬件感知调度才能释放真实算力。本文聚焦Qwen3.5大语言模型在昇腾平台的端到端部署,深入解析vLLM-Ascend如何协同CANN工具链、适配RoPE位置编码与Tokenizer映射、调优block_size与kv_cache_dtype等关键参数,实现单卡42 tokens/s高吞吐与112ms低延迟。内容覆盖环境验证、源码编译、模型权重转换、服务 阅读详情

相关推荐

从三个角度理解知识图谱

2012年谷歌首次提出“知识图谱”这个词,由此知识图谱在工业界也出现得越来越多,对于知识图谱以及相关概念的理解确实也是比较绕。自己在研究大数据独角兽Palantir之后开始接触知识图谱,也算对其有了一定了解,这里从三个角度总结一下怎么去理解知识图谱。 几个基本概念:本体、实体、知识库、知识图谱 1、本体是概念的集合,是大家都公认的概念框架,一般不会改变如“人”、“事”、“物”、 “地”、“组...

JavaChaoCo的博客 6901

(十)redis高可用之主从复制replication+哨兵sentinal

单机的redis几乎不太可能说QPS超过10万+,除非机器性能特别好。那如何支撑20w+QPS呢--->答案就是读写分离 那就需要进行数据同步。redis支持主从同步和从从同步 (一)redis同步(replication)核心机制 redis采用异步方式复制数据到slave节点,不过redis 2.8开始,slave node会周期性地确认自己每次复制的数据量 一个master node是可以配置多个slave node的 slave node也可以连接其他的slave node s.

lss446937072的博客 1474

C#上位机与OneNET云平台数据交互实战——基于HTTP与JSON解析

本文详细介绍了使用C#开发上位机软件与OneNET物联网云平台进行数据交互的实战方法。通过构建HTTP请求、解析JSON数据,实现设备数据的实时获取、界面展示与本地存储,为工业监控与数据采集提供了一套完整高效的C#解决方案。

kkk56的博客 218

sentinel哨兵模式详细介绍

sentinel哨兵模式介绍 Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis 的高可用性解决方案,sentinel哨兵模式已经被集成在redis2.4之后的版本中。sentinel是redis高可用的解决方案,sentinel系统可以监视一个或者多个redis master服务,以及这些master服务的所有从服务;当某个master服务下线时,自动将该master下的某个从服务升级为master服务替代已下线的master服务继续处理请求。 sentinel可以让r

wxina 6584

CP2102 USB 转 UART 模块 PCB 设计项目

不幸的是,我的笔记本电脑只有 USB 端口,所以我需要在 USB 端口和 UART 接口之间进行转换。PCB 布局将足够小,因此我们不一定需要高速布线 USB 线路,但我们将在此将其作为一个简单的示例来实现,以展示如何在这种类型的电路板上实现它。相反,我们只使用屏幕左侧的电路。在这里,我们利用对之间的间距和到 L1 上的铜灌注的距离将差分阻抗设置为目标值。初始布局分为两个部分:USB 连接器和 USB 线路的 TVS 二极管放置在电路板左侧,带有二极管 D4 和 D5 的引脚接头放置在电路板右侧。

jkh920184196的博客 2401

Unity插件UniWebView实战:UGUI动态调整内嵌网页尺寸与交互优化

本文详细解析了如何在Unity游戏中使用UniWebView插件实现内嵌网页的动态尺寸适配与深度交互。核心在于利用Reference Rect Transform属性,将网页窗口精准绑定至UGUI控件,并随其动态调整。文章进一步探讨了通过消息系统与JavaScript执行实现Unity与网页的双向通信,并提供了加载优化、过渡动画及事件拦截等实用技巧,助力开发者打造无缝、流畅的游戏内网页体验。

earth的博客 276

redis 主从配置_Redis6.0主从、哨兵、集群搭建和原理

点击上方蓝色字体,选择“设为星标”回复”资源“获取更多资源大数据技术与架构点击右侧关注,大数据开发领域最强公众号!暴走大数据点击右侧关注,暴走大数据!由于单机Redis存储能力受单机限制,以及无法实现读写操作的负载均衡和读写分离,无法保证高可用。本篇就来介绍 Redis 集群搭建方案及实现原理,实现Redis对数据的冗余备份,从而保证数据和服务的高可用。主从复制是哨兵和集群的基石,因此我...

weixin_39729115的博客 605

遥感目标检测数据集汇总

文章目录1. 光学数据集1.1 DIOR1.2 LEVIR1.3 DOTA1.4 RSOD1.5 NWPU VHR-101.6 VEDAI1.7 COWC1.8 ITCVD1.9 DIUx xView 20181.10 HRSC20161.11 TAS1.12 SZTAKI‐INRIA1.13 UCAS AOD1.14 DLR 3K Vehicle2. SAR2.1 SSDD2.2 SSDD+2....

quanwei的博客 6万+

Redis为什么能抗住10万并发?揭秘性能优越的背后原因

Redis是一个开源的,基于内存的,高性能的键值型数据库。它支持多种数据结构,包含五种基本类型 String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),和三种特殊类型 Geo(地理位置)、HyperLogLog(基数统计)、Bitmaps(位图),可以满足各种应用场景的需求。Redis还提供了多种特性,如持久化、事务、发布订阅、Lua脚本、管道、主从复制、哨兵机制、集群机制等,可以保证数据的安全性、一致性和可用性。

weixin_67553250的博客 2236

【Basis】Lumerical licence center 无法连接的问题

端口,我们需要确认该端口是否被其他程序占用。这里我们将介绍如何处理这一问题。后,今天电脑更新后我无法打开。终结占用该端口的程序后再次打开。

u011699626的博客 314

数据库小技能:数据导入脚本

背景:版本大升级,从2.0升级到3.0 ,服务端开发语言从c#换到java语言。数据库类型从microsalft sql server 换到mysql。数据来源于微信,用于查询卡bin。

专注于计算机研发知识和资讯分享 774

解析单线程 Redis如何扛起每秒百万并发(一)

单线程Redis如何扛起百万并发

zhp优快云921011的博客 3203

Android Audio其他——数字音频接口(附)

数字音频接口 DAI,即 Digital Audio Interfaces,顾名思义,DAI 表示在板级或板间传输数字音频信号的方式。相比于模拟接口,数字音频接口抗干扰能力更强,硬件设计简单,DAI 在音频电路设计中得到越来越广泛的应用。

小旭的专栏 1028

redis与高并发_关于Redis的几件事 | 高并发和高可用

如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了。redis高并发:主从架构,一主多从,一般来说,很多项目其实就足够了,单主用来写入数据,单机几万QPS,多从用来查询数据,多个从实例可以提供每秒10万的QPS。redis高并发的同时,还需要容纳大量的数据:一主多从,每个实例都容纳了完整的数据,...

weixin_29279047的博客 709

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

mysql 单表查询承载_关于Redis的几件事 | 高并发和高可用

如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了。redis高并发:主从架构,一主多从,一般来说,很多项目其实就足够了,单主用来写入数据,单机几万QPS,多从用来查询数据,多个从实例可以提供每秒10万的QPS。redis高并发的同时,还需要容纳大量的数据:一主多从,每个实例都容纳了完整的数据,...

weixin_33448555的博客 175

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【Redis】保证redis的高并发高可用的几种策略

保证redis的高并发高可用的几种方式

hui_zai_的博客 3546

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Redis高并发高可用详解

在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡等需求。Redis也是如此,它为我们提供了复制功能,实现了相同数据的多个Redis 副本。复制功能是高可用Redis的基础,后面章节的哨兵和集群都是在复制的基础上实现高可用的。默认情况下,Redis都是主节点。每个从节点只能有一个主节点,而主节点可以同时具有多个从节点。复制的数据流是单向的,只能由主节点复制到从节点。

励志成为一名优秀的全能型软件开发工程师。 2046

如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么?

如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么?

weixin_55682785的博客 3367

Redis 如何保证高并发与高可用

Redis通过单线程模型结合I/O多路复用、高效数据结构实现高并发处理能力,利用主从复制、哨兵机制和Cluster集群确保高可用性。其内存操作特性与可选持久化机制(RDB/AOF)保障了性能与数据安全。最佳实践建议采用集群部署、开启持久化、配置哨兵监控,并通过Pipeline优化、冷热数据分离等措施提升系统稳定性。Redis以独特架构实现了高并发读写与自动故障转移,成为分布式场景下的高效缓存解决方案。

笑衬人心的博客 1289

Redis如何做到高并发和高可用

1、高并发 单机的redis的QPS一般在几万(官方说法可以达到10万)。所以对于十万、百万甚至千万级别的QPS,单机的redis肯定不能支撑这么大的访问量。解决此类高并发问题,可以采用redis的主从架构模式。 主从架构:一主多从实现读写分离,主节点负责写,并将数据同步给其他从节点,从节点负责读,从而实现高并发。 但是,在主从架构中,每个redis实例都容纳了所有的完整数据,比如redis...

wangqsse的博客 2707

【存储中间件】Redis核心技术与实战(四):Redis高并发高可用(哨兵Redis Sentinel)

当Sentinel主观下线的节点是主节点时,该Sentinel节点会通过sentinel is-master-down-by-addr命令向其他Sentinel节点询问对主节点的判断,当超过<quorum>个数,Sentinel节点认为主节点确实有问题,这时该Sentinel节点会做出客观下线的决定,这样客观下线的含义是比较明显了,也就是大部分Sentinel节点都对主节点的下线做了同意的判定,那么这个判定就是客观的。假如Sentinel节点对于主节点已经做了客观下线,那么是不是就可以立即进行故障转移了?

专注上位机开发、机器视觉、机器学习、嵌入式软硬件开发 1万+

Redis_高并发高可用知识

脑裂(网络分区),也就是说,某个 master 所在机器突然脱离了正常的网络,跟其他 slave 机器不能连接,但是实际上 master 还运行着,此时哨兵可能就会认为 master 宕机了,然后开启选举,将其他 slave 切换成了 master 这个时候,这个过程,实现了 Redis 的主从架构下的高可用性。因此,旧 master 再次恢复的时候,会被作为一个 slave 挂到新的 master上去,自己的数据会清空,重新从新的 master 复制数据,导致写向旧 matse r的数据可能也丢失了。

m0_55679301的博客 1902

Redis的五件小事,Redis保证高并发及高可用

Redis是非常重要的知识点,本文从五个方面讲述

m0_59679869的博客 1260

如何保证 redis 的高并发和高可用

转载自:https://www.toutiao.com/i6632494136425447949/ redis 主从架构   单机的 redis,能够承载的 QPS 大概就在上万到几万不等。对于缓存来说,一般都是用来支撑读高并发的。因此架构做成主从(master-slave)架构,一主多从,主负责写,并且将数据复制到其它的 slave 节点,从节点负责读。所有的读请求全部走从节点。这样也可以很轻松...

ZERO 8948

Redis全面解析二:redis高可用高并发集群方案

前言 Redis 缓存作为使用最多的缓存工具被各大厂商争相使用。通常我们会使用单体的 Redis 应用作为缓存服务,然而我们日常在对于redis的使用中,经常会遇到一些问题: 高可用问题,如何保证redis的持续高可用性。 容量问题,单实例redis内存无法无限扩充,达到32G后就进入了64位世界,性能下降。 并发性能问题,redis号称单实例10万并发,但也是有尽头的。 如果只使用一个r...

Mr_lisj的博客 2364

如何保证 Redis 高可用和高并发(主从+哨兵+集群)

1. 概述 Redis 作为一种高性能的内存数据库,普遍用于目前主流的分布式架构系统中。为了提高系统的容错率,使用多实例的 Redis 也是必不可免的,但同样复杂度也相比单实例高出很多。 那么如何保证 Redis 的高并发和高可用? Redis 主要有三种集群方式用来保证高并发和高可用:主从复制,哨兵模式和集群。 2. 主从复制 在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡等需求。Redis 也是如此,它为我们提供了复制功能,实现了相同数据的多个 Redis

个人站点:javatv.net 5508
上一篇: nginx源码分析之内存池与线程池丨nginx的多进程网络实现
下一篇: 工作多年C/C++该具备哪些专业技能(进阶C++职业规划)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值