随着备受瞩目的冬奥会顺利召开,相信大家对美轮美奂的开幕式会赞叹不已,俗话说外行看热闹,内行看门道,今天就来谈一下开幕式中跟低延迟相关的一点东西。
先来看一个来自英特尔中国的微博消息:
相信很多观众在没看到这个消息前都会以为那个冰随人动的特效是事先做好的,只是和现场演员对下时间轴,结果英特尔这一揭秘不免让人大吃一惊,这些竟然都是实时的。还有更牛的事在后边,现场的检测延迟和管线延迟竟然达到了惊人的10ms和46ms。
什么是延迟?
在计算机系中中所说的延迟,一般是指生成和返回响应之前的时间延迟。通常有以下几种来源:
- 网络 I/O
- 磁盘 I/O
- 运行环境
- 程序代码
一般情况下,对于基础资源产生的延迟是取决于对应的设备或系统的技术水平,像英特尔展示的冬奥会开幕式的数据中心就采用了大量的新技术来降低这个延迟。而对于多数人来讲,降低应用的延迟最可行的还是从优化程序代码来入手。
在软件领域,有许多类型的延迟。没有应用程序可能是真正实时的即:零延迟(在程序启动和结果交付之间经过的时间为零)。尽管如此,所有高性能应用程序的目标都是尽可能接近实时。甚至 Gartner 对零延迟的定义也承认延迟实际上永远不可能为零,因为计算机需要时间来“思考”。
软件延迟示例
下面是一个简单的图形示例,说明典型高性能应用程序的延迟情况。我们通常会发现应用的延迟大多会在一个狭窄的范围内变化,但是偶尔会出现非常高的延迟。对于高性能应用程序,按分位数对延迟进行分组通常会产生类似于以下的图:
Y 轴表示程序的延迟时间,X 轴是将一段时间内的所有分组为分位数的结果。蓝线是每个分位数的延迟,橙线是平均延迟。
如果只看平均延迟,你可能会想“应用程序做得很好啊,大部分时间都低于平均值!”这就是问题所在。如果应用程序在大多数情况下具有可接受的延迟,但有时会出现极端延迟,你的业务可能会受影响。
如果你的客户在每次使用产品时都非常快速地需要产品的结果,但有时他们会因长时间的等待而陷入困境,他们会转向你的竞争对手,即使竞争对手的平均延迟可能比你的应用高。
例如:金融交易、考试报名、线上购物、实时交互等场景都要求具有高性能+低延迟的应用。
一个真实的案例
某国家级考试主管单位在一次考试报名的当天,系统发生故障导致大量的用户无法登录。
通过APM工具发现,当时的所有事务都出现了超时现象:
进一步分析,能够看到当时数据库是最大的瓶颈:
接着根据提示,一步步确认问题的位置,着手解决,包括:优化SQL、优化代码等等。一番操作下来,系统表现有了巨大的改变。
1、应用平均响应时间大幅缩短
2、数据库执行时间大幅缩短
3、报名完成时间大幅提前
类似北京、上海这种城市的报名,以往需要近1分钟时间完成,优化后平均4.5秒完成报名。
总结
由此可见,低延迟对于任何应用程序在业务上取得成功都至关重要,好在我们可以通过APM工具来做性能的监控与分析。基调听云多年来致力于提供优质的APM解决方案,也曾多次获得权威机构Gartner的认可,欢迎联系我们了解更多关于APM的信息。