palmx

【W44/2024】高效传输:以 QUIC 构建高效传输通道

⾃ 2012 年 Google 前瞻性地提出 QUIC 传输协议,历经⼗年迭代,HTTP/3 作为 HTTP/2 的继任者,在 2022 年 IETF 正式标准化 HTTP/3 为 RFC9114。HTTP/3 凭借其对 QUIC 协议的深度整合以及从 TCP 向 UDP 的底层连接转型,迅速赢得了业界的⼴泛接纳。截⽌到2022年11⽉,全球已有超过四分之⼀的⽹站部署了 HTTP/3 技术,如下图。⼀个崭新的⾼速、⾼效⽹络时代正逐步拉开帷幕。

【W44/2024】异步读写:窥见未来的系统调用——io_uring

从 2019 年 Linux 在 5.1 版本发布 io_uring 开始,许多框架都使用了这一项技术,比如 netpoll、rocksdb、ceph、spdk,但是这项技术并没有在 Java 生态中大规模使用,幸运的是,在 Netty 社区,目前正在孵化使用 io_uring 的项目 —— netty-incubator-transport-io_uring,里面提供了新的读写模型 IOUringEventLoop,基于这项技术实现了 io_uring。

【W44/2024】双端流控:自适应的负载均衡与流量控制

在分布式系统中,如何合理分配请求、保障服务的高可用性与稳定性,是每一位架构师必须面对的挑战。负载均衡(Loadbalance)与流量控制(FlowControl)正是解决这一问题的两大利器。

负载均衡侧重于资源分配,通过动态调度请求,使多台服务器负载趋于均衡,从而提升系统吞吐量和容错能力;而流量控制则更加关注请求限制,防止单一服务因高并发或恶意流量而过载,确保系统整体的可持续运行。

【W44/2024】配置驱动:灵活的配置指标与评分体系

前文说到,自适应负载均衡与流控,将 CPU 负载、RT、上线时间通过一个公式来计算一个权重值或阈值,但是这个公式通用型可能不够,服务节点的性能存在差异,因为在不同的机器有不同的硬件资源,比如有些机器是 I/ O 特别强,有比较高的的 IOPS,有些机器有更高的 CPU 频率,CPU处理性能比较高,所以通过一个算法去计算最大并发量,通用性比较低,计算出来的最大并发量可能不够准确,并且这几个的指标并不能完全体现真实的服务节点负载,那么还有那些指标可以更加科学得体现节点负载呢?

【W44/2024】超高并发:虚拟线程在 IO 中的机遇

在许多编程语言中,如 Go 和 Python,协程是作为高效并发的解决方案,通过用户级调度来实现轻量级的并发。Go 通过 goroutine 提供了类似的高并发能力,Python 则通过 async/await 实现了协程的控制流,Java 的虚拟线程借鉴了这些语言的思路,使用用户级调度来取代操作系统调度,从而降低了线程创建和切换的成本。