MySQL 8.0 升级至 8.4,属于小版本跨越,但 8.4 是一个 LTS 版本,做了若干破坏性变更。结合 PHP 7.3 + Swoole 4.3 的实际情况,整理出以下兼容性问题和对应处理方案。影响概览问题严重程度影响范围mysql_native_password 插件被移除🔴 高连接直接失败Swoole 连接池持久连接行为异常🔴 高协程环境下连接错乱ONLY_FULL_GROUP_...
消息队列不只是"生产-消费"那么简单。在真实的业务场景中,我们需要面对消息消费失败、延时执行、顺序保障等各种复杂问题。本文梳理六种常见的队列模式,帮你建立完整的消息队列知识体系。一、死信队列(Dead Letter Queue)是什么死信队列(DLQ)是用来存放无法被正常消费的消息的特殊队列。当一条消息反复消费失败、超过最大重试次数,或者因为格式错误无法解析时,它不会被直接丢弃,而是被转移到...
你有没有想过,当你和朋友视频通话时,视频流是怎么从你的摄像头传到对方屏幕的?在 WebRTC 出现之前,实时音视频通信依赖服务器中转,延迟高、带宽成本大。而 WebRTC(Web Real-Time Communication) 让浏览器可以直接建立点对点(P2P)连接,无需插件、无需服务器中转媒体流,彻底改变了 Web 实时通信的格局。本文将从原理到代码,带你深入理解 WebRTC P2P...
在 Redis 运维过程中,你是否遇到过这样的困惑:明明已经删除了大量数据,used_memory 也确实下降了,但服务器的实际内存占用却几乎没有变化?这就是 Redis 内存碎片问题,也是生产环境中最常见、最容易被忽视的性能隐患之一。本文将从原理到实战,全面解析 Redis 内存碎片的成因、诊断方法和解决方案。一、什么是内存碎片?1.1 内存分配原理Redis 并不直接使用操作系统的 ma...
前言在 Linux 服务器运维和开发工作中,终端文本编辑器是不可或缺的工具。nano 和 vim 是两款最常见的命令行编辑器,很多初学者面对它们时往往感到困惑:该选哪个?有什么区别?本文将从设计哲学、使用方式、适用场景等多个维度进行深度对比,帮助你做出正确选择。一、基本介绍nanonano 是一款轻量、友好的终端编辑器,诞生于 1999 年,最初作为 pico 的自由软件替代品。它的设计目标...