MQ 串讲
串讲思路:MQ是什么 → 分类选型 → RocketMQ架构 → 持久化 → 消息类型 → 常见问题 一、什么是 MQ MQ(Message Queue)是应用之间的异步通信中间件:生产者把消息投进队列,消费者从队列里取出来处理,双方不需要直接…
串讲思路:MQ是什么 → 分类选型 → RocketMQ架构 → 持久化 → 消息类型 → 常见问题 一、什么是 MQ MQ(Message Queue)是应用之间的异步通信中间件:生产者把消息投进队列,消费者从队列里取出来处理,双方不需要直接…
Redis 重启之后数据没了,是最让人心慌的事故之一。要么是没开持久化,要么是配了但没生效。这篇把 RDB 和 AOF 讲清楚。 RDB:快照 按条件触发生成整个数据集的二进制快照: save 900 1 # 900 秒内至少 1 个…
有序集合(zset)是 Redis 里最有用的结构之一:每个元素带一个分数,按分数自动排序。排行榜和延时队列都是它的直接应用。 排行榜 # 加分 ZINCRBY rank:2025-07 1 user:1001 # 前 10 名(降序,带分数) ZREVRANG…
Redis 内存到上限之后的行为,由 maxmemory-policy 决定。选错了,轻则缓存命中率下降,重则数据丢失、请求变慢。 先看现状 redis-cli INFO memory | grep -E 'used_memory_human|maxmemory_human|maxmemory_policy…
凌晨被告警叫醒,队列积压几十万条。慌是没用的,按顺序处理。 第一步:确认是不是真积压 # RabbitMQ rabbitmqctl list_queues name messages messages_ready messages_unacknowledged # Kafka kafka-consumer-gro…
用 ES 做搜索,最常见的两个问题是「搜不到」和「搜出一堆不相关的」。这两个问题的根源往往都在分词和索引设计上。 倒排索引是什么 普通数据库是「文档 → 包含哪些词」,倒排索引反过来:「词 → 出现在哪些文档」…
接口被人刷的时候,第一道防线通常是 Nginx 限流。配置只有几行,但参数理解错了,要么没挡住,要么把自己的正常用户挡了。 基本配置 limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s; server { …
Kafka 的并发模型就两条规则:一个分区只能被同组的一个消费者消费;不同组之间互不影响。把这两条吃透,很多问题就解释得通了。 分区是并行的单位 一个 topic 分成多个 partition,每个 partition 内部有序,parti…
“消息丢了”是消息队列最常见的投诉。丢可能发生在四个环节,每一个都要单独兜住,少一环就可能出问题。 第一关:生产者到交换机 网络抖动、交换机不存在、Broker 挂了,消息都可能没送到。开启 publisher confirm:…
单机用 threading.Lock 就够了,多实例部署就必须上分布式锁。Redis 是最常见的方案,但实现细节差一点,可靠性差很多。 第一版:SETNX + DEL if redis.setnx(key, 1): try: do_something() finall…
这三个词经常被混着说,但成因完全不同,处理方式也不一样。分清楚之后,线上出事才知道该动哪里。 穿透:查一个根本不存在的数据 请求带着不存在的 id 打进来,缓存没有,落到数据库也没有,于是每次请求都穿透到 …