通往创新之巅:互联网技术架构创新案例和实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

t1

为什么需要推送服务器

首先,FreeWheel有许多重量级的客户,这些客户会有不同的定制化业务需求,导致业务数据库非常复杂——包含超过1,000个数据库表。每个广告请求可能需要访问其中数百个数据库表,有些数据库表还可能需要访问多条数据。

其次,对于一个广告请求来说,到底要访问哪些数据,事先是不明确的,只有在广告决策过程中,才能逐步明确后续的计算需要哪些其他数据。因此,很难设计一种简单的并行访问数据库的方法。

如果要顺序访问大量的数据库表,即使采用内存数据库做加速缓存,所带来的访问延迟也会非常显著,会严重影响广告服务器的响应时间;此外,如果大量顺序地访问内存数据库,内存数据库在性能上的轻微抖动,会造成广告处理延时较大地偏离正常值。

采用推送服务器模式,因为所有的数据都被加载到广告服务器内存中,广告服务器通过访问内存就可以访问到数据库中的数据,相当于用进程内的内存访问,取代了外部的内存数据库访问,因此极大降低了广告服务器的响应时间。实际上,FreeWheel的广告响应时间大部分在10-20ms左右,如果只是通过内存数据库做加速缓存,是很难达到的。

除了加速响应,推送服务器带来的另外一个好处是稳定性。由于所有的数据都存放在内存中,在广告服务过程中就不需要大量的外部IO操作。众所知周,外部的IO操作和纯内存操作相比,稳定性不在一个级别,尤其是在超高并发的业务场景下。因此,推送服务器也极大提高了广告服务器在处理高并发请求时的稳定性。