低延迟系统实践

本文概述了构建低延迟系统时的最佳实践,包括选择高效语言、内存优化、减少网络开销、批量处理写操作、优化缓存、使用非阻塞和异步模式以及并行处理。通过这些策略,可以降低系统延迟,提高并发处理能力。
摘要由CSDN通过智能技术生成

低延迟系统实践

英文原文:11 Best Practices for Low Latency Systems

自从Google发布额外的一个500ms延迟将减少20%的流量以及亚马逊发现额外的100ms延迟会使销售量下降1%已经8年了。此后,开发者们一直奋战在延迟曲线的底部,甚至前端开发者们都在压缩JavaScript、CSS以及HTML来争取分毫时间。以下是各种低延迟系统设计时需牢记在心的最佳实践的一个概览。大多数这些建议考虑的是逻辑上极端,可以权衡使用。(感谢在Quora上问这个问题的匿名用户,这让我把我的想法写了下来)。
选择正确的语言

脚本语言不要使用,尽管它们越来越快,当你处理关键事务像拿掉进程的最后几毫秒时间时,你处理不掉解释型语言的开销。此外,你会想要一个强有力的记忆模型来进行无锁编程,所以你应该看Java、Scala、C++11或Go。
把一切放在内存里

I/O会是延迟主因,所以确保你的所有数据在内存中。这通常意味着管理内存中的数据结构以及维护现有记录,这样你在重启机器或进程后能够重建之前的状态。维持记录的选择包括Bitcask、Krati、LevelDB和BDB-JE。或者你也可以本地运行一个像redis或MongoDB(memory >> data)这样的内存型数据库。但需要注意的是,在它们后台同步数据到硬盘crash时你仍旧可能丢失一些数据。
确保数据和处理程序的位置

网络跳数比磁盘寻道要快,但即使这样通过网络也会增加很多开销。理想情况下,数据应当完全在主机的内存中。像AWS云中几乎提供了1/4TB的内存,物理服务器提供多个TB现在也很常见。如果你需要运行在多个主机上,你应当确保数据和请求被适当的划分,使得在服务请求时所有必要的数据都在本地。

保持系统未充分使用

低延迟总是需要有资源来处理新

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值