对于迟到的回答就等于错误回答的交易或广告技术系统,合适的外部公司,做的正是与你的时限同处一个区间的系统,并且能说明它的速度数字是怎么测出来的。你看好的那家公司,应当先测量你的线上系统,再去构建任何东西。
没有哪份低延迟软件开发公司名单能适合每一位买家,因为这个说法涵盖的时限,彼此可以相差一百万倍。在交易硬件里,它可能指几十或几百纳秒。在应用或网页里,大约十分之一秒以内的回答,对使用者来说就已经是即时的了。所以第一个问题是:你自己的时限落在哪里。
简短的答案是:写下你的时限,以及测量它的起止两个点,再问每家公司:它做过的系统里,哪些已经在生产环境中运行在这个区间。在任何人动手构建之前,付费请你看好的那家公司测量你的线上系统,并且无论最后怎么决定,都把它的报告留在手里。
对你的系统来说,低延迟就是一个时限,在两个你能说出名字的点之间测量。时限大致分为四个区间:
同一个产品的不同部分,可能落在不同的区间。交易员在屏幕上看价格,而他发出的订单在去往交易场所的路上,可能要满足严格得多的时限。把每个时限连同测量它的起止两个点一起写下来。每个时限落在哪个区间,就告诉你该找哪一类公司。
本文不给公司排名。哪一类公司合适,取决于你的区间以及你需要完成的工作:
很多公司不止属于一类,所以要问清楚,派给你的工程师做过的是哪一类工作。
上面链接的那篇关于专属团队的文章,列出了每一个性能数字都应当附带什么,并给出了一份可以直接粘贴进需求建议书(RFP)的清单。下面这些问题,用来弄清一家公司自己的数字是怎么得出来的。
问清楚计时从哪里开始、到哪里结束。OPRA 负责发布美国各期权交易所的综合成交与报价数据,它在传入消息“到达 OPRA 环境的应用程序入口”时开始计时,在传出消息“到达 OPRA 环境的应用程序出口”时停止计时。上文引用的欧盟定义,对这两个点同样界定得很精确。一个没有点明起止点的数字,无法和你的数字相比较。
既要看典型的回答,也要看最慢的那些。在 OPRA 公布的指标中,延迟中位数(也就是居中的那个值)2024 年 1 月为 19.5 微秒,2 月为 20.5 微秒。同样这两个月里,第 99 分位(只有最慢的 1% 的消息才会超过的那个时间)从 543.5 微秒降到了 57.5 微秒。一份只给中位数的报告,几乎看不出任何变化。
平均值同样会掩盖慢的回答。Google 的《Site Reliability Engineering》一书由 O'Reilly 于 2016 年出版,书中描述了一个每秒处理 1,000 个请求、平均延迟为 100 毫秒的 Web 服务,其中“1% 的请求很可能要花 5 秒”。要对方给出每条路径的第 99 分位;如果你的系统处理的请求量足以测出第 99.9 分位,也要这个数,每 1,000 个回答中只有 1 个会超过它。
核查每个数字背后的负载。在 STAC 2020 年的概述中,STAC-T0 以三种速率发送测试流量。最低的一档“旨在观察系统在大部分时间空闲时的表现”,最高的一档通常接近被测系统所能承受的上限,用来“观察系统在非常繁忙时的表现”。要对方拿出你自己最忙那一分钟的数字,或者来自重现那一分钟的测试的数字。
问清楚压测是怎么做的。很多压测工具发出一个请求,等到回答之后,才发下一个。系统一卡住,这样的工具就停止发送,于是本该在卡顿期间到达的那些请求,从来没有被计时。
压测工具 wrk2 的作者 Gil Tene 把这种效应称为 coordinated omission。在该工具最近一次修改于 2019 年 9 月的文档中,他写道:“高延迟的响应会导致压测生成器与服务器协同,从而避开在高延迟期间进行测量”。他的工具以固定速率发送请求,并“从本应发送请求的时刻起”为每个回答计时。要问清楚这家公司的工具是不是这样工作的,或者它的结果是怎么修正的。
问清楚每个时间戳是在哪里打的。对于微秒级的延迟,STAC 的概述把使用软件时间戳的基准测试称为“最佳选择”。它同时警告说,软件时间戳中那些微小而不均匀的延迟,“在测量几十或几百纳秒的延迟时,可能构成相当大的误差”,STAC-T0 则改为在硬件中打时间戳。一家报出纳秒数字的公司,应当能说明它的硬件时间戳是在哪里打的。
如果你还不知道问题出在哪里,只知道系统似乎比应有的更慢、或者花费比应有的更多,就从这里开始。付费请你看好的那家公司,对你的线上系统做一次范围固定的测量,并附一份报告;无论你下一步怎么决定,报告都归你所有。以书面形式约定:为了做测量,这家公司可以安装或改动什么,以及事后如何移除它的工具。
报告应当给出:
对于交易系统,上面链接的那篇关于订单执行慢的文章,列出了每笔订单都要记录的四个时间戳。在广告技术领域,关于流量峰值和关于 DSP 超时的两篇文章,讲了高峰时以及每条广告交易平台连接上要测量什么。
用报告来评判这家公司。如果你自己的工程师不靠这家公司也能照着报告行动,你就可以依据真实的数字,选择接下来由谁来做这项工作,无论是这家公司还是别家。
如果一家公司提议换一种新语言,下面链接的文章讲了工程师如何核查问题是不是出在语言上。
amBrain 诊断交易和广告技术领域的慢系统:对运行中的平台做端到端测量,报告会指明时间耗在了哪里。其交易方向的工作包括交易终端开发、订单管理系统和 FIX 协议交易所对接。
在 AdTech 领域,amBrain 从事 DSP 开发、实时竞价平台和广告交易平台工程方面的工作。
amBrain 有三种合作方式:整体交付、专属团队,或工程师嵌入你的团队。客户拥有产品与代码的全部所有权,amBrain 的可复用组件除外。
amBrain 自 2019 年起开发软件。
本文不是案例研究,也不描述任何客户项目。本文没有引用 amBrain 所建任何系统的延迟数字,也不给出任何价格或工期。
问问 amBrain,或者你名单上的任何其他公司,它会先在你的系统上测量什么,并让每一家公司都经受同样的核查。
带上您当前的架构和让您担心的故障场景,我们用半小时一起梳理。