的例子开始谈起。他认为程序组织很重要,对于存储这部分来说,它需要仔细考虑包括结构、数据特点、访问模式、接口性质四大方面的问题。林仕鼎对这四大方面的问题作了详细阐述,指出每一个问题都面临若干选择,比如结构问题就有:File、Object、Table的选择,然后在同样一个结构中,还要面临是实时读写、批量写实时读之类的访问模式的选择,接下来不同访问模式对系统带来的影响,数据大小的分布、布局等。林仕鼎表示,正是因为有这么多因素的影响,导致开发者在设计系统时,必需要考虑很多方面。只有在全面掌握这一些信息的情况下,才能设计出符合实际要求的系统。
存储带来的一些矛盾包括:延迟与吞吐、随机与顺序、规模与实时性。一般来说,系统的规模越大,实时性的保证难度也就越大。要化解矛盾,需要在包括B+tree、Log-based两类模型建设的基础上做到弱化需求、发掘局部性、组合模型。
在谈到分布式时,林仕鼎表示其实分布式的目标很简单,只有两个:扩容和容错。要实现这些目标需要采用Partition和Replication两种方法,而协议设计、调试是难点。
在进行系统模块设计时,所有系统都会面临一个极限值,即在给定系统资源情况下,所能提供的最大请求数,这里需要做一个特别设计,以防请求数突破极限值。如果没有作特别设计,在极端情况下,吞吐量超过一个点,那总系统将崩溃。服务架构的目标包括系统的高吞吐能力和在极限压力下的稳定输出。要实现这两个目标离不开服务架构的两类模型:属于基本类型的threadpool + queue和属于复杂类型的event-driven。为了能够更好的保证总系统的稳定性,还必须要格外注意:减小资源分配粒度并主动调度、Flow Control、负载反馈,Throttling和延迟截断这四个方面。
计算模型包含很多不同特点,通常来说分为三类:数据密集型、计算密集型、通讯密集型(即传统HPC)。林仕鼎表示,首先要分析系统的特点,找到符合的模型。
在很多情况下,在怎么做系统、服务、数据仓库等问题上,开发者面临的具体问题都千差万别。此时,要建立一些模型,或者有比较好的实践原则。作为一个架构师,首先是要非常深入地清楚自己的业务,再依据业务特点运用一些现行做法。林仁鼎总结了“架构师三板斧”,作为本次演讲总结与各位分享。架构师三板斧内容如下。
看清需求:Tradeoff、不足以满足所有需求、无须同等对待所有需求、发现根本需求、抽象、降维、了解需求随时间的变化、选择方法、把握节奏。 选择方法:测算 - 模拟 - 实现、分解 vs 迭代、设计模式。 把握节奏:目标与可达路径、定期产出。淘宝唐勇:淘宝双11经验分享
淘宝产品技术交易平台部的双11技术保障负责人唐勇带来了名为《淘宝双11经验分享》的精彩演讲。