io_uring如何让Linux I/O性能翻倍:从环形缓冲区到零拷贝的技术革命
2019年5月,Linux 5.1内核合并了一个名为io_uring的新子系统。三年后,这项技术已经成为高性能数据库、存储引擎和网络服务的标配。从Redis到PostgreSQL,从Nginx到Envoy,越来越多的系统开始迁移到这个新接口。 ...
2019年5月,Linux 5.1内核合并了一个名为io_uring的新子系统。三年后,这项技术已经成为高性能数据库、存储引擎和网络服务的标配。从Redis到PostgreSQL,从Nginx到Envoy,越来越多的系统开始迁移到这个新接口。 ...
多标签页的协调困境 现代 Web 应用越来越复杂,用户经常在多个标签页中打开同一个应用。一个在线文档编辑器可能被同时打开在三个标签页里;一个股票交易网站可能同时运行在多个窗口中。这些场景都面临同一个问题:如何让多个独立的 JavaScript 执行上下文协调工作? ...
2016年,Cloudflare在部署HTTP/2时遇到了一个奇怪的问题:某个高优先级的大文件传输会阻塞所有其他请求,尽管HTTP/2已经实现了多路复用。问题的根源在于TCP的流量控制机制——所有流共享同一个滑动窗口,一个流的丢包会让整个连接停摆。 ...
浏览器扩展已经成为现代网络生活中不可或缺的工具。广告拦截、密码管理、翻译辅助、开发者工具——这些小小的插件极大地提升了我们的工作效率。但你是否想过,当你安装一个浏览器扩展时,你实际上给了它什么权力? ...
1995 年 5 月,Brendan Eich 在网景公司的十天内完成了 JavaScript 的设计与实现。他面临一个关键决策:采用传统的类继承模型,还是更灵活的原型继承模型?最终,他选择了后者——受 Self 语言启发的原型继承机制。这个决定深刻影响了此后三十年 JavaScript 的演进轨迹。 ...
1996年,当John Carmack设计Quake的网络架构时,他面临一个看似不可能的挑战:如何在拨号上网时代(平均延迟200-300毫秒),让玩家获得接近本地游戏的流畅体验?这个问题的答案,最终塑造了接下来三十年实时网络游戏的技术演进路径。 ...
2011年,一位名叫Greg Young的开发者在一次技术会议上提出了一个看似简单的想法:如果我们不再存储对象的当前状态,而是存储导致状态变化的所有事件,会怎样?这个想法后来被称为事件溯源(Event Sourcing)。十五年后的今天,事件驱动架构已经成为微服务系统的核心范式,但它的复杂性也让无数开发者痛不欲生。 ...