在这一块面临着什么问题?首先面临的是系统扩展性的问题,规模增长了数百倍,系统是不是能水平扩展以支撑数百倍的增长?这是我们面临的首要难题。
双11零点技术挑战的本质是什么?是用较低的成本去实现最大化的吞吐量和最佳的用户体验,三者取得一个平衡,用合理的代价来解决零点峰值,支持好业务的狂欢,保证业务系统平稳运行。如果不限成本做这件事,难度会降低非常多。我们用有限成本来做这件事就会面临一个问题,集群规模、机器数、机房资源都是固定的,怎么能把资源最合理的分配下去?假设有500个系统,要一起来支持双11,要做一个非常极致的容量规划,把硬件资源能够非常均匀地分配给每一个应用,让整个集群整个技术链条上没有瓶颈,这就是容量领域最大的挑战。因为如果有一个地方存在短板,整个系统就没法做到最大化吞吐量,所以要求有一个极致的容量规划。
双11的不确定性来自于什么呢?还是来自于所有技术变量的叠加,如果业务不变,系统架构不变,技术也不升级,那难度会越来越小。但是所有事情都在变,好多变量,比如说用户的流量会发生很大的变化,有很大的增量,峰值流量的构成、还有系统架构的变化会带来很多不确定。流量的组成部分有哪些用户来源,哪些业务模型会让峰值的流量和压力不同。包括CPU利用率,这些会影响到整体,因为整个系统是在非常高的水位情况下运行的,又要运行平稳、整体全链条没有短板,所以对线上要实现非常精细化的运行控制,还要有很强大的稳定性治理能力,这又是一个挑战。
零点峰值对我们来说有什么意义?这个意义非常巨大。它可以让技术实现能力有个推动力,推动架构优化,加速技术演进和沉淀,催生技术创新,所以双11也是技术的盛宴。
针对这几个挑战,我今天分成几个部分:
如何解决业务增长情况下扩展性的问题、如何解决线上容量规划的问题、如何解决成本增速很快的问题、如何做精细化的运行控制、如何治理线上稳定性。
先讲一下淘宝架构的发展背景,2007—2008年这两年,是从集中式架构快速演变为分布式的架构。大家已经非常熟悉这套架构,现在一般的互联网应用,互联网系统都会采用这样的分层架构,业务上分层,通过分布式中间件进行远程消息传递、远程服务调用,中间提供一层共享中心,把公共业务逻辑抽象成平台,抽象成服务中心,不直接对用户暴露接口,提供一种服务能力,中间会有缓存,底层有存储集群,这是非常常见的架构,在2008年整个架构演变到这个程度,到现在为止架构也没有发生太大变化。