2月18日,CSDN(微博)在北京举行了TUP第19期活动:大数据系列研讨会——从12306谈起。本次研讨会汇集了来自百度、豆瓣(微博)网、搜狗、淘宝、土豆、凡客诚品(微博)、新浪微博、IBM等公司的众多业内技术高管,就大数据及海量并发用户网络的需求分析、架构设计、产品研发、系统运维等话题和与会者进行了深度探讨。与会者包括来自互联网/IT公司技术高管、研发精英、运维管理、对高并发网站解决方案有研究的技术人员,共计三百人参与了此次研讨会。本次研讨会分为上下午两部分,上午为高端讨论,下午为集中讲座。
针对网站在突发高负载和高增长的情况下,如何承载巨大访问量,来自百度(移动·云)的首席架构师林仕鼎带来了名为《架构设计的一些思考》的精彩演讲。
图:百度(移动·云)首席架构师 林仕鼎
存储和分布式
林仕鼎首先从存储、分布式、服务架构、计算模型的例子开始谈起。他认为程序组织非常重要,对于存储这部分来说,它需要考虑包括结构、数据特点、访问模式、接口性质四大方面的问题。林仕鼎对这四大方面的问题作了详细阐述,指出每一个问题都面临若干选择,比如结构问题就有:File、Object、Table的选择,然后在同样一个结构中,还要面临是实时读写、批量写实时读之类的访问模式的选择,接下来不同访问模式对系统带来的影响,数据大小的分布、布局等。林仕鼎表示,正是因为有这么多因素的影响,导致开发者在设计系统时,必需要考虑很多方面。只有在全面掌握这些信息的情况下,才能设计出符合实际要求的系统。
存储带来的一些矛盾包括:延迟与吞吐、随机与顺序、规模与实时性。一般来说,系统的规模越大,实时性的保证难度也就越大。要化解矛盾,需要在包括B+tree、Log-based两类模型建设的基础上做到弱化需求、发掘局部性、组合模型。
图:存储的两类模型
图:为弱化存储带给系统的矛盾而采用的组合模型
在谈到分布式时,林仕鼎表示其实分布式的目标很简单,只有两个:扩容和容错。要实现这些目标需要采用Partition和Replication两种方法,而协议设计、调试是难点。
服务架构和计算模型
在进行系统设计时,所有系统都会面临一个极限值,即在给定系统资源情况下,所能提供的最大请求数,这里需要做一个特别设计,以防请求数突破极限值。如果没有作特别设计,在极端情况下,吞吐量超过一个点,那整个系统将崩溃。
图:服务架构
服务架构的目标包括系统的高吞吐能力和在极限压力下的稳定输出。要实现这两个目标离不开服务架构的两类模型:属于基本类型的threadpool + queue和属于复杂类型的event-driven。为了保证整个系统的稳定性,还需要注意:减小资源分配粒度并主动调度、Flow Control、负载反馈,Throttling和延迟截断这四个方面。
计算模型包含很多不同特点,一般来讲分为三类:数据密集型、计算密集型、通讯密集型(即传统HPC)。林仕鼎表示,首先要分析系统的特点,找到适合的模型。
在很多情况下,在怎么做系统、服务、数据仓库等问题上,开发者面临的具体问题都千差万别。此时,需要建立一些模型,或者有比较好的实践原则。作为一个架构师,首先是要非常深入地了解自己的业务,再根据业务特点运用一些现行做法。林仁鼎总结了“架构师三板斧”,作为本次演讲总结与各位分享。架构师三板斧内容如下。
看清需求:Tradeoff、无法满足所有需求、无须同等对待所有需求、发现根本需求、抽象、降维、了解需求随时间的变化、选择方法、把握节奏。选择方法:测算 -> 模拟 -> 实现、分解 vs 迭代、设计模式。把握节奏:目标与可达路径、定期产出。
• 中国角型毛巾架行业运营态势与投资潜力研究报告(2018-2023)
• 中国直接挡轴市场深度研究及投资前景分析报告(2021-2023)
• 2018-2023年KTV专用触摸屏市场调研及发展前景分析报告
• 中国回流式高细度粉碎机市场深度调研与发展趋势预测报告(2018-2023)
• 2018-2023年中国原色瓦楞纸行业市场深度研究及发展策略预测报告
• 中国雪白深效精华液市场深度调研及战略研究报告(2018-2023)