Redis实战指南:从单机到分布式架构的演进之路

从单机到分布式:Python 爬虫架构演进 本文系统介绍了Python爬虫开发的五个进阶阶段:1. 单机爬虫基础:讲解requests库使用、解析技术、重试机制和持久化存储等基础技能;2. Scrapy框架应用:分析Scrapy的核心架构和优势,展示如何实现工程化爬虫;3. 异步高并发:介绍asyncio和aiohttp实现高并发请求的技术;4. 分布式爬虫:探讨基于Redis等消息队列的分布式方案,以及Scrapy-Redis的应用;5. 反爬对抗:总结常见反爬手段及应对策略,包括参数破解、字体反爬和智能化对抗。文章从基础到高级,完整呈现了Pyth 阅读详情

1. 从单机到分布式:为什么你的Redis需要“进化”

大家好,我是老张,在互联网公司跟数据存储打了十几年交道,从早期的Memcached到现在的Redis,可以说是一路踩坑过来的。今天想跟大家聊聊一个非常实际的话题:你的Redis应用,是不是还停留在单机时代?

很多朋友刚开始接触Redis,都是从单机部署开始的。一台服务器,装个Redis,配个密码,业务代码里连上,搞定!性能确实比直接查数据库快多了,心里美滋滋。我最早做的一个电商项目也是这么干的,把商品详情页的热点数据全塞进Redis,QPS(每秒查询率)瞬间提升了好几倍。那时候觉得,Redis真是个神器。

但好景不长。随着用户量上来,促销活动一来,问题就暴露了。最典型的一次是“双十一”预热,晚上流量高峰,那台单机Redis的CPU直接飙到100%,连接数爆满,响应时间从毫秒级变成了秒级,整个商品系统几乎瘫痪。当时我们紧急扩容,但单台服务器的硬件上限就摆在那里,内存加到顶了,CPU也换不了更快的。那一刻我才深刻体会到,单机Redis的瓶颈,不是“优化”能解决的,而是架构上的“天花板”。

单机架构,顾名思义,所有活儿都让一台服务器干了。它简单、好维护,数据一致性也容易保证。但它的局限性就像木桶理论,取决于最短的那块板。首先是内存容量,你的数据量不能超过物理内存,否则就要用虚拟内存,性能会断崖式下跌。其次是处理能力,单个CPU核心的处理速度是有限的,虽然Redis是单线程模型避免了上下文切换,但复杂的操作或巨大的并发连接依然会让它不堪重负。最后是可用性,这台机器一旦宕机,整个缓存层就挂了,服务直接雪崩。

所以,当你的应用日活过了百万,数据量上了GB级别,并发请求动不动就几万QPS的时候,就该认真考虑让Redis“进化”了。这个进化方向,就是分布式架构。这不是为了追求技术时髦,而是业务发展逼着你必须走的路。分布式不是把问题变简单,而是把“一台机器扛不住”的问题,转变成了“如何让多台机器协同工作”的问题。虽然复杂度上去了,但换来的是近乎无限的横向扩展能力。接下来,我们就一步步看看,这条路该怎么走。

2. 单机Redis的实战基础与性能天花板

在聊分布式之前,我们得先把单机Redis玩明白。很多分布式环境下的问题,其实根源在于对单机特性理解不透。

2.1 核心数据结构与使用场景

Redis快,一半功劳要归于它丰富的数据结构。这可不是简单的Key-Value存储,每种结构都是为特定场景设计的利器。

  • String(字符串):这是最基础的类型。但别小看它,除了存简单的文本,我经常用它来做计数器。比如统计文章阅读量,用 INCR article:read:123 命令,原子性操作,又快又准。还可以存序列化的对象,比如用户会话信息。但要注意,如果对象很大,频繁序列化反序列化会成为瓶颈。
  • Hash(哈希):适合存储对象。比如一个用户信息,有姓名、年龄、城市等字段。用Hash存储,HSET user:1001 name "张三" age 28 city "北京"。它的好处是能单独存取、更新某个字段,不像String那样必须整个对象读写,节省网络流量。我们用户画像系统里,就用Hash来存用户标签,更新某个标签时效率很高。
  • List(列表):这简直就是个消息队列的简易实现。我们有个日志收集系统,多个应用服务器产生日志,用 LPUSH 往同一个List里塞,再用一个消费服务 BRPOP 阻塞地取,实现了简单的生产消费模型。还可以做最新消息排行,比如 LPUSH 加 LTRIM 只保留最新的100条。
  • Set(集合):最大的特点是去重和集合运算。经典场景是共同好友。用户A的好友ID存一个Set,用户B的好友存另一个Set,用 SINTER 命令一秒算出交集。社交APP里的“可能认识的人”,也可以用 SDIFF(差集)来推荐。
  • Sorted Set(有序集合):带权重的Set,能按分数排序。这是做排行榜的不二之选。比如游戏积分榜,ZADD leaderboard 10000 "player1",然后 ZREVRANGE leaderboard 0 9 就能取出前十名。我们直播间的礼物热度榜、电商的销量榜都在用它。

选对数据结构,性能提升立竿见影。我见过有人用String存了一个JSON数组,然后频繁地读出来、解析、修改某个元素、再序列化、写回去,慢得不行。其实用List或者Hash来存,操作会高效得多。

2.2 单机性能调优与硬瓶颈

把数据结构用对了,接下来就是压榨单机Redis的性能。这里有几个我实战中总结的关键点。

首先是 内存优化。Redis所有数据都在内存里,内存就是最宝贵的资源。一定要用 INFO memory 命令定期看内存使用情况。如果发现 used_memory 接近 maxmemory,就要警惕了。可以开启 maxmemory-policy 策略,比如 allkeys-lru,当内存不足时自动淘汰最近最少使用的数据。对于小对象,可以考虑使用Hash结构压缩存储,或者启用Redis的 hash-zipmap(或新版本的 listpack)等内部编码优化。

其次是 持久化策略。这是单机数据安全的关键。RDB(快照)和AOF(追加日志)各有优劣。RDB是定时全量备份,恢复快,但可能丢失最后一次快照后的数据。AOF记录每一条写命令,数据安全,但文件会越来越大,恢复慢。我的建议是生产环境两者都开启。用RDB做定时备份(比如每小时),用AOF做实时增量(appendfsync everysec),在安全性和性能间取得平衡。记得要监控 aof_current_size 和 aof_rewrite_in_progress,防止AOF重写时磁盘IO打满。

然后是 网络与连接。单机Redis的并发连接数受 maxclients 配置和系统文件描述符限制。我们有一次故障就是因为连接池配置不当,短连接太多,导致Redis忙于建立和断开连接,CPU飙升。建议使用连接池,并且根据业务压力调整池大小。使用 slowlog 命令查看慢查询,对于超过10毫秒的命令要重点分析,是不是用了 KEYS * 这种全表扫描的“自杀式”命令?

但无论怎么优化,单机的硬瓶颈是无法逾越的:CPU单核极限、内存容量上限、单点故障风险。当你的业务量增长到一定阶段,比如缓存数据超过200GB,或者QPS持续在5万以上,单机Redis就会显得力不从心。这时候,加内存、换更好的CPU,性价比会越来越低。是时候把目光投向分布式集群了。

3. 携手MySQL:缓存与数据库的协同作战

在实际系统中,Redis很少单打独斗,它最好的搭档就是像MySQL这样的关系型数据库。这套“缓存+数据库”的组合拳,几乎成了互联网应用的标配。但怎么打好这套拳,里面门道可多了。

3.1 经典读写策略与数据一致性难题

最常见的模式是 Cache Aside(旁路缓存)。读的时候,先读缓存,命中则返回;没命中则读数据库,写入缓存再返回。写的时候,先更新数据库,再删除缓存。注意,这里是删除缓存,而不是更新缓存。这是为了减少并发写操作带来的数据不一致风险。我画个简单的流程图,大家一看就懂:

读请求 -> 查Redis -> 命中 -> 返回数据
                -> 未命中 -> 查MySQL -> 写入Redis -> 返回数据

写请求 -> 更新MySQL -> 删除Redis中对应Key

这个模式简单有效,但它有个经典的数据不一致问题:如果写操作(更新DB后,删除缓存前)和读操作(缓存未命中,读DB老数据,准备写回缓存)并发发生,可能会导致旧数据被写回缓存。虽然这个时间窗口极短,但对一致性要求极高的金融类业务来说,仍不可接受。我们当时的解决方案是,对关键数据使用分布式锁,在更新时锁定对应的缓存Key,但这会牺牲一些性能。

另一种模式是 Read/Write Through(读写穿透)。应用层只和缓存交互,缓存自己负责和数据库同步。这对业务代码最友好,但需要缓存层有复杂的逻辑支持,通常需要自己封装一个中间件来实现。

还有 Write Behind(异步回写),更新时只写缓存,然后缓存异步批量写回数据库。这性能最好,但风险也最高,一旦缓存宕机,可能丢失大量数据。适合一些能容忍少量数据丢失的日志、行为统计场景。

3.2 同步挑战与解决方案实战

“先更数据库,还是先删缓存?” 这个面试常考题,在实际运维中就是个头疼事。除了上面提到的不一致窗口,我们还在数据更新上踩过大坑。

场景是这样的:后台管理员修改了商品价格,这个操作更新了MySQL,也删除了Redis里 product:123 这个Key。但是,商品详情页不仅展示价格,还展示库存、促销信息等,这些数据可能被组装在一个复杂的JSON对象里,缓存在另一个Key如 product_detail:123 里。你只删了价格的Key,详情页缓存里的价格还是旧的!这就是多级缓存或聚合缓存的数据更新难题。

我们当时的解决办法是,引入一个事件发布机制。当商品核心信息(价格、库存)变更时,除了操作数据库,还发布一个“商品信息变更”的事件。所有消费了商品信息的服务(比如详情页服务、购物车服务)都监听这个事件,收到后去清理自己维护的相关缓存。这其实就是简化版的缓存失效总线思路。

对于数据同步的实时性要求,还有一个更重的方案:订阅数据库的Binlog。使用Canal或者Debezium这样的工具,实时监听MySQL的二进制日志,当发现有数据变更时,解析Binlog,然后去删除或更新Redis中对应的数据。这个方案解耦彻底,对业务代码无侵入,但技术复杂度高,运维成本也大。适合那些缓存数据结构相对固定,且对一致性要求极高的核心业务。

我的经验是,不要追求绝对的、实时的强一致性,那代价太高。根据业务特点定义不同的数据一致性等级。比如用户昵称、头像,可以接受几秒的延迟;但商品库存、账户余额,就必须采用更严格的同步策略。在架构设计之初就明确这些,能避免后期很多麻烦。

4. 迈向分布式:Redis集群与哨兵模式解析

当单机撑不住的时候,我们就正式进入了分布式Redis的世界。这里主要有两条技术路线:官方原生的Redis Cluster和基于哨兵(Sentinel)的主从复制架构。它们解决的问题侧重点不同。

4.1 Redis Cluster:自动分片与高可用

Redis Cluster是官方推出的分布式解决方案,它的核心目标是数据分片(Sharding) 和高可用。你可以把它理解为一个“去中心化”的集群,每个节点都存储一部分数据,并且知道数据该怎么分布。

数据是怎么分片的呢? 它把所有Key分配到16384个哈希槽(Slot)里。当你启动一个Cluster时,你需要指定哪些节点负责哪些槽位。比如一个3主3从的集群,你可以让节点A负责槽0-5460,节点B负责5461-10922,节点C负责10923-16383。当客户端要存取一个Key时,会先计算它的CRC16值,然后对16384取模,得到它属于哪个槽,再直接连接负责这个槽的节点进行操作。如果客户端连错了节点,节点会返回一个“MOVED”重定向错误,告诉客户端正确的节点地址,聪明的客户端库(如Jedis Cluster、Lettuce)会缓存这个映射关系,下次就直接连对地方了。

高可用是如何实现的? 每个主节点都可以配置一个或多个从节点。当主节点宕机时,集群中的其他主节点会投票,从它的从节点中选举出一个新的主节点,接替槽位的工作。这个过程是自动的,对业务的影响时间很短(通常在几秒内)。

部署一个Redis Cluster并不复杂,但有几个坑我提醒大家注意。第一是集群规模,官方建议至少6个节点(3主3从),才能保证高可用和选举的顺利进行。第二是网络要求,所有节点之间需要两两开通TCP端口(通常是节点端口+10000,用于集群总线通信),云服务器安全组配置要小心。第三是某些命令的限制,比如涉及多个Key的操作(MGET、MSET),要求这些Key必须在同一个节点上,否则会报错。你需要用“哈希标签”来保证一组Key被分配到同一个槽,比如把 user:{123}:profile 和 user:{123}:orders 中的{123}作为标签。

4.2 哨兵模式:专注于故障转移的守护者

如果你的数据量还没大到必须分片,但你对高可用性有强烈要求,那么哨兵模式可能是更简洁的选择。它的架构很简单:一主多从,外加几个哨兵进程。

哨兵进程不存储数据,它的任务就是当“监控员”和“调度员”。它们持续监控主节点和从节点是否健康。如果哨兵们(通常需要多个哨兵达成共识)判断主节点挂了,它们就会自动从剩下的从节点中,选出一个新的主节点,然后通知其他从节点和客户端(通过发布订阅)切换到这个新主节点。

我比较喜欢哨兵模式的地方是,它对客户端透明。像Jedis、Lettuce这些客户端都支持哨兵模式,你只需要配置哨兵节点的地址列表,客户端会自动从哨兵那里查询当前的主节点是谁。运维起来也相对直观。

但哨兵模式有个根本的局限:它不解决数据分片问题。写压力全在主节点上,存储容量受限于单节点内存。所以它适合读多写少,且数据量可控的场景。比如用来做会话存储(Session Store)、或者存储全量但访问不频繁的配置信息。

在实际选型中,我的一般原则是:数据量预计会超过200G,或者写QPS非常高,优先考虑Redis Cluster。如果数据量不大(比如几十G),但要求服务绝对稳定,不能有手动干预的停机时间,哨兵模式就够用了。当然,这两种模式也可以结合使用,比如用Cluster解决分片,每个分片内部再用哨兵保证高可用,但这架构就非常复杂了,非超大厂一般用不到。

5. 分布式环境下的性能优化与避坑指南

分布式系统不是银弹,它把单机的性能瓶颈转化成了网络、协调、数据分布等新问题。在分布式Redis环境下做优化,是另一个维度的挑战。

5.1 热点Key与数据倾斜问题

在集群中,如果一个Key被访问得特别频繁,比如某个顶流明星的微博动态,承载这个Key的节点就会成为热点,网卡被打满,拖累整个分片的性能。这就是热点Key问题。

我们的应对策略有几种。一是本地缓存,在应用服务器本地(如Guava Cache)缓存这个热点数据,减少对Redis集群的访问。但要注意本地缓存的一致性。二是拆Key,把一份数据复制成多份。比如原来Key是 star:news:1001,我们把它拆成 star:news:1001:1、star:news:1001:2…… 访问时随机选一个后缀。这相当于把压力分摊到了多个节点。当然,更新的时候就需要更新所有副本。

比热点Key更棘手的是数据倾斜。也就是大量数据集中到了某一个或某几个节点上,导致这些节点内存先满,而其他节点还很空。在Redis Cluster中,这通常是因为哈希槽分配不均,或者大量Key的哈希值恰好都落入了某几个槽。解决方法是使用 redis-cli --cluster rebalance 命令手动重新平衡槽位,或者检查业务Key的命名规则,使用哈希标签来人为干预数据的分布。

5.2 管道、事务与Lua脚本的分布式差异

在单机Redis里,管道(Pipeline)能大幅提升批量操作的性能,因为它把多个命令打包一次发送,减少了网络往返时间。在集群环境下,管道依然有效,但前提是管道内的所有命令,都必须发往同一个节点。如果你在一个管道里操作了属于不同节点的Key,客户端库通常会报错或者拆开发送,这就失去了管道的意义。所以,在Cluster下使用管道,要特别注意Key的分布。

类似的问题也出现在事务和Lua脚本上。Redis的事务(MULTI/EXEC)和Lua脚本执行都是原子性的,但它们在Cluster中只能操作同一个节点上的Key。如果你的事务涉及多个Key,必须确保它们有相同的哈希标签,从而落在同一个节点上。否则,事务会失败。这是从单机转向分布式时,代码层面需要做的重大适配。

对于跨节点的复杂操作,分布式环境下通常的做法是,在客户端层面进行协调。比如一个需要扣减A库存、增加B库存的“库存转移”操作,在Cluster中可能涉及两个节点。我们无法用一个事务完成,那就只能在应用层写补偿逻辑:先扣A,成功后再加B,如果加B失败,则回滚A。这引入了分布式事务的复杂性,但这是分布式架构下不得不面对的现实。

5.3 监控与运维要点

分布式系统的运维,监控必须走在前面。除了基础的节点内存、CPU、连接数监控外,要特别关注:

  • 集群状态:使用 CLUSTER INFO 和 CLUSTER NODES 命令,监控集群是否健康,是否有节点失败,槽位是否完全覆盖。
  • 慢查询日志:每个节点都要开,并且集中收集分析。分布式环境下一个慢查询可能会阻塞一个分片。
  • 网络流量:监控节点间的数据同步流量(主从同步、Cluster节点间的心跳和数据迁移),异常的流量飙升可能预示着问题。
  • 客户端连接:观察客户端是否因为频繁的重定向(MOVED/ASK)导致性能下降。

还有一点血的教训:谨慎进行在线扩容缩容。虽然Redis Cluster支持动态增删节点和重新分片,但这个过程中数据会进行迁移。迁移期间,如果客户端访问正在迁移的Key,可能会收到一个临时的“ASK”重定向指令。客户端库需要正确处理它。同时,迁移操作本身会消耗网络和CPU资源,一定要在业务低峰期进行,并做好回滚预案。

从单机到分布式,Redis的演进之路,其实就是互联网业务成长的缩影。起步时追求简单快捷,发展时面临性能压力,壮大时必须拥抱复杂度以换取扩展性。这条路没有捷径,每一个坑都得自己踩过才记得牢。我的经验是,不要过早优化,单机能扛住就用单机;但要有前瞻性,当业务指标出现趋势性变化时,就要开始规划分布式架构了。技术选型没有最好,只有最适合当前和未来一段时间业务发展的。希望我这些年的实战心得,能帮你在这条路上走得稳一些。

【Redis系列 05】Redis集群终极指南:从单机到千万级QPS的架构演进之路 当Redis遇到单机性能瓶颈时,集群架构就是突破的关键。本文从实际问题出发,通过通俗易懂的语言和丰富的案例,深入解析Redis集群的核心原理、分片策略、高可用设计和实战应用。你将学会如何构建能处理千万级QPS的Redis集群,掌握从架构设计到运维监控的完整技能体系。 阅读详情

相关推荐

10+ 张图解|高并发分布式架构演进

章在介绍一些基本概念后,按照以下过程阐述了整个架构的演进过程: 单机架构 第一次演进:Tomcat 与数据库分开部署 第二次演进:引入本地缓存和分布式缓存 第三次演进:引入反向代理实现负载均衡 第四次演进:数据库读写分离 第五次演进:数据库按业务分库 第六次演进:把大表拆分为小表 第七次演进:使用 LVS 或 F5 来使多个 Nginx 负载均衡 第八次演进:通过 DNS 轮询实现机房间的负载均衡 第九次演进:引入 NoSQL 数据库和搜索引擎等技术 第十次演进:大应用拆分为小应用

m0_71682321的博客 2732

Redis实战指南:从单机到分布式架构的演进

本文系统阐述了Redis从单机部署到分布式架构的演进路径。针对单机Redis在容量、性能和可用性上的瓶颈,详细介绍了主从复制、哨兵模式及Redis Cluster集群等核心分布式解决方案。文章结合实战经验,深入剖析了数据分片、缓存策略、性能调优及常见避坑指南,为应对海量数据与高并发场景提供专业指导。

214

脑影像分析入门:如何用一般线性模型(GLM)处理fMRI数据?

本文为神经影像研究入门者详细解析了如何运用一般线性模型(GLM)处理fMRI数据。文章从GLM的核心原理出发,逐步拆解了从实验设计、构建稳健设计矩阵、模型估计与统计推断,到高阶分析及多重比较校正的全流程,并指出了常见陷阱与结果解读要点,是掌握fMRI数据分析基础的关键指南。

weixin_29091445的博客 400

从单机架构到分布式:Redis为何成为架构升级的关键一环?

本文是Redis系列的开篇先导,将采取循序渐进的方式来讲解,不会深入Redis的具体命令和配置,而是聚焦于回答一个根本问题:我们的架构为什么会走到需要Redis这一步?让我们从最初的起点开始...(温馨提示,本文文字内容较多,建议收藏下来反复学习喔)

2301_81073317的博客 1万+

基因家族Motif 分析

MEME

hgz2020的博客 6324

AI应用架构师干货:智能财务分析AI平台可视化模块设计(附最佳实践)

智能财务分析的价值,从来不是“AI模型有多准”,而是“财务人员能用上AI的结果”。可视化模块的设计,本质是**“站在业务用户的角度,重新定义技术的价值”**——它不需要复杂的动画,不需要华丽的特效,只需要“把AI的结果翻译成财务人员能看懂的语言”。作为AI应用架构师,我们的使命不是“打造最先进的技术”,而是“打造最有用的技术”。而可视化,就是连接技术与业务的那座“桥”。附录:实战项目GitHub仓库(注:此处可放置实际项目的GitHub链接,包含完整代码、数据样例、部署文档)作者简介。

SuperAGI2025 1157

从单机到分布式:架构演进与技术实践

从单机到分布式,架构演进的核心驱动力是业务需求与技术创新的双轮驱动。未来,随着 AI、量子计算等技术的发展,分布式系统将向智能化(自动调优资源)、低代码(简化分布式应用开发)和超大规模(百万节点集群)方向迈进。对于技术从业者,理解架构演进的底层逻辑,掌握分布式思维,将是应对未来技术变革的关键能力。正如 Amazon CTO Werner Vogels 所言:“在分布式系统中,故障是常态而非例外”,构建韧性架构,在不确定性中寻求可靠与高效的平衡,将是技术人永恒的追求。

zqmgx13291的博客 1399

Docker网络冲突?手把手教你解决Dify社区版无法访问172.18.0.0网段的问题

本文详细解析了在部署Dify社区版时,因Docker默认网段与局域网冲突导致无法访问172.18.0.0网段的问题。通过剖析Docker网络原理,提供了修改Docker守护进程默认地址池的根治方案,并介绍了在Compose文件中指定自定义网络等备选方法,帮助用户彻底解决网络冲突,保障服务稳定运行。

p8q9r0的博客 486

从单机架构到分布式:Redis为何成为架构升级的关键?

摘要: 本文系统梳理了从单机架构到分布式架构的演进过程,揭示了Redis在解决高并发、高可用等核心问题中的关键作用。单机架构面临资源争抢和性能瓶颈,通过数据库分离、负载均衡、读写分离等策略逐步优化,而Redis的引入显著提升了系统性能,通过内存存储和高效数据结构缓解数据库压力。文章详细分析了Redis的读写流程、分布式锁实现及高可用方案,并探讨了分库分表、微服务等进阶架构的挑战与解决方案。Redis凭借高性能、丰富功能和可扩展性,成为现代分布式架构不可或缺的组件,为应对海量数据和高并发场景提供了有效支撑。

没事学AI的博客 1280

Coze:手把手教你搭建 小红书二创 智能体

前一篇 “” ,讲了如何针对需求进行拆解,并拆解 ”小红书二创“ 智能体,分为四个内容模块。通过上述步骤,开始一步一步构建 “小红书二创” 智能体。用来测试的小红书地址:http://xhslink.com/a/quxWEDAj3J48。

保持敏感!保持学习! 1436

IC设计新手必看:如何正确使用去耦电容(decap)避免电源噪声?

本文深入探讨了IC设计中去耦电容(decap)的应用技巧,从核心原理到布局实现,帮助新手工程师有效抑制电源噪声。文章详细解析了MIM、MOM等电容类型的特性与选择策略,并提供了先进的布局技巧和验证方法,特别适用于28nm以下先进工艺的电路设计挑战。

weixin_30555125的博客 116

从单机到分布式:系统架构演进的七步成长指南

本文以 “问题驱动演进” 为核心逻辑,系统拆解了从单机到分布式的 7 步架构成长路径。从单机架构的原始形态出发,依次讲解了应用与数据库分离、引入应用集群与负载均衡、实现数据库读写分离、部署 Redis 缓存、落地分库分表、拆分微服务的演进脉络,每一步均对应业务增长中出现的资源冲突、流量压力、存储瓶颈等具体问题。同时,文章前置解析了 Redis 的核心价值,补充了分布式领域易混淆的核心概念(如集群、主从、中间件等),并客观分析了微服务的利弊。

2301_79274600的博客 960

[多智能体强化学习] 王树森YouTube课程笔记

前言 近期在设计V2X资源分配任务下的状态空间和动作空间,可以说是一筹莫展,是自己菜,现在看来可能也是涉及到一些关于多智能体强化学习实现过程中过于细节的点,目前的知识储备还不够。因此打算用半周到一周的时间重电,希望之后能有进展。 本文内容来自于友人LX所推荐的油管教程,链接如下:多智能体强化学习,一共两节课40min左右。教程废话不多干货不少,老师的声音还好听,推荐直接去看原教程。 这里还要多一嘴,那就是对于强化学习来说,单主体和多主体的界限,在某种程度上来说是很模糊的,并不是场景中有多个主体需要..

观林望实的博客 3365

【Redis】 浅谈分布式架构

Redis 是引入缓存——冷热架构时所需要用到的一个关键技术,那什么是架构呢?架构的的演进过程又是怎么杨的呢?接下来我们一起来看一看在进⾏技术学习过程中,由于⼤部分读者没有经历过⼀些中⼤型系统的实际经验,导致⽆法从全局理解⼀些概念,所以本⽂以⼀个"电⼦商务"应⽤为例,介绍从⼀百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,希望能帮助⼤家对分布式架构的演进有⼀个整体的认知。如此,⼀个还算合理的⾼可⽤、⾼并发系统的基本雏形已显。

m0_71731682的博客 1441

机器人行业面试全攻略:从0到1拿下心仪Offer,看这一篇就够了

【摘要】2026年机器人行业迎来爆发期,全球市场规模超800亿美元,人才争夺激烈。本文针对机器人行业面试提供系统攻略:首先需明确岗位方向、打造差异化标签并了解目标公司;技术面试高频考点包括ROS框架、SLAM导航、运动控制、深度学习和嵌入式系统;项目介绍需采用STAR+R结构并量化成果;行为面试需注意协作能力与职业规划。文章还总结了简历堆砌、单向输出等五大常见误区,强调长期积累与精准准备的重要性,助力求职者把握行业窗口期机会。

郑伟强dev的专栏 192

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Redis高可用与扩展性:从单机到分布式架构的演进

单点故障风险:一旦服务器宕机,整个服务不可用性能瓶颈:单机内存、CPU、网络带宽都有上限容量限制:单机内存容量有限,难以存储超大规模数据业务持续性:维护升级期间可能导致服务中断保证服务连续性:即使部分节点故障,整体服务仍可用支持数据动态扩容:随业务增长灵活扩展存储容量提供线性扩展性能:通过增加节点实现性能水平扩展实现灵活的部署架构:适应不同规模和场景的业务需求Redis的高可用与扩展性方案为不同规模和场景的应用提供了灵活的选择。

m0_65382359的博客 958

IEM模型,地表粗糙度模拟

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

从单机架构到分布式:Redis为何成为架构升级的关键一环

、不同的业务模块,部署到多台独立的、通过网络连接的机器上协同工作,这就是分布式架构的起点。通过将单一庞大的数据库(表),按照特定的规则(如用户ID、订单ID、地理位置等)水平拆分到多个独立的物理数据库(表)中,从而突破单库在存储容量、连接数、I/O吞吐量和CPU计算能力上的限制。单机架构的优点使其成为许多系统诞生的摇篮。然而,其固有的、由单点资源集中化带来的性能瓶颈、单点故障风险、存储与扩展性天花板,决定了它只能是特定发展阶段的产物,无法承载持续增长的业务规模(用户量↑、数据量↑、并发量↑)。

BlueBirdssh的专栏 760

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

Redis存储①高并发分布式架构演进

Redis存储①高并发分布式架构演进(架构的基本概念和评价指标+单机架构+应用数据分离架构+应用服务集群架构+读写分离/主从分离架构+冷热分离架构+垂直分库架构+微服务架构+容器编排架构)

参考书籍:《C语言程序设计》《数据结构》《C++ Primer》《Effective C++》《STL源码剖析》《现代操作系统》《UNIX环境高级编程》《图解TCP/IP》《图解HTTP》《Linux高性能服务器编程》《剑指Offer》《算法导论》 1816

Redis集群架构详解:从单机到分布式的扩展之路

单机Redis:简单高效,但面临容量和可用性限制主从复制:通过读写分离提升性能和可靠性Sentinel哨兵:解决主从架构下的高可用问题Cluster集群:通过数据分片实现水平扩展每个阶段都是对前一阶段限制的突破,形成了一条清晰的演进路径。根据业务规模和需求,选择合适的架构阶段至关重要。

sinat_27016095的博客 738

IM 系统架构设计:从单机到分布式的演进思考

1.Channel 路由:通过 Redis 路由表 + MQ 转发实现跨机器消息推送2.状态共享:Redis 存储路由信息,所有服务器共享3.消息路由:RocketMQ Tag 路由,支持精确路由到目标服务器4.负载均衡:通过网关和负载均衡器分配用户到不同服务器5.状态同步:事件驱动 + 定期同步,保证最终一致性。

Kiyra的博客 817

【Redis】分布式架构演进与Redis的核心价值

本文介绍了Redis的基本概念及其在分布式架构中的应用演变。Redis作为内存级存储系统,可用作数据库、缓存和消息中间件,其访问速度优于传统数据库如MySQL,但存储空间有限。文章通过电商服务案例,从单机架构逐步演进到负载均衡、数据库读写分离和冷热数据分离架构,分析了不同架构的优缺点。最终强调应根据实际业务需求选择合适的架构模式,技术服务于业务场景。

2403_88316985的博客 644

LiveKit企业级部署实战:从单机到分布式集群的完整架构演进指南

作为基于WebRTC的实时音视频解决方案,LiveKit凭借其高性能SFU架构和开源特性,正成为构建实时通信应用的首选平台。但当你从开发测试迈向生产环境时,如何确保系统能够承载数千并发用户?本文将为你揭示LiveKit从单机部署到分布式集群的完整架构演进路径,助你构建稳定可靠的企业级实时通信系统。 ## 识别性能瓶颈:监控指标与诊断策略 LiveKit提供了完善的Prometheus监控指标,

gitblog_00753的博客 1059

【Redis篇】为什么需要 Redis:从单机到分布式的架构演进之路

本文从单机架构到分布式系统的演进过程,阐述了Redis诞生的必要性。最初单机架构随着用户增长面临性能瓶颈,通过应用与数据分离、应用集群+负载均衡、读写分离等方案逐步扩展系统能力。然而当系统面临热点数据频繁查询数据库的问题时,Redis作为高性能缓存中间件应运而生,有效解决了数据库访问压力大的痛点。文章通过电商系统案例,清晰展示了技术架构演进中遇到的瓶颈及解决方案,最终引出Redis在分布式系统中的核心价值——提升系统响应速度与吞吐量。

半截诗的博客~ 565

从单机到分布式:Redis 在系统演进中的角色

分布式系统是如何一步步演化而来的?Redis在其中扮演什么角色?本文沿着“单机→应用/DB分离→负载均衡→读写分离→缓存→分库分表→微服务”的演进路径,解析每一步的设计思想和解决的核心问题。最终揭示Redis的真正价值:不仅是缓存,更是分布式系统中的共享状态中心。

2301_79057670的博客 985

Web服务器架构设计实战:从单机到分布式集群的演进之路

本文深入探讨了Web服务器架构设计从单机到分布式集群的演进过程,涵盖负载均衡、数据层架构、缓存体系及高可用设计等关键环节。通过实战案例解析了横向扩展、Session一致性、分库分表等核心技术挑战,并分享了云原生与微服务架构的优化经验,为构建高性能、高可用的Web系统提供实用指导。

linux6sysadmin的博客 771

【单片机】【分布式】从单机到分布式:Redis如何成为架构升级的关键力量

当电商系统的用户量突破2000万,日活用户持续激增,数据库CPU使用率频频飙红,查询响应时间从几十毫秒飙升至数秒,页面加载缓慢引发用户怨声载道时,我们不得不正视一个现实:单机架构已经触碰到了它的"天花板"。要突破这个瓶颈,分布式架构成为必然选择。而在从单机到分布式的演进之路上,Redis逐渐崭露头角,成为现代高并发、高性能系统架构中不可或缺的关键组件。本文将循着架构演进的脉络,探寻Redis在这一过程中的核心价值。

weixin_56334307的博客 1152
上一篇: AOSP Native Service开发实战:从AIDL接口定义到Binder通信实现
下一篇: 开源舆情系统全解析:从功能亮点到一键部署实战
Python
博客等级 码龄26年 1973粉丝 1567原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值