当前位置: 首页 > 科技观察

说说系统设计预估的一些方法

时间:2023-03-21 17:16:09 科技观察

在日常工作中,我们经常会遇到一些大促的场景,需要评估系统资源是否足够,是否需要增加资源,增加多少。在系统设计面试中,有时候会遇到需要做一些估算的问题:如果需要承载100wQPS,需要多少台机器……要做到“准确”估算,需要对数字有一定的感觉。第二章主要讲一些常用的数字。文末也会附上笔者积累的一些数字。Powerof2Powerof2英文中常用1Million和1Billion,分别表示百万和十亿。正如您所看到的,3个0逐渐形成一个组。千百万亿级的Latency数字,每个程序员都必须要了解的这里有一张表,反映了一些电脑典型的耗时操作,还有一个可视化的网站与之相匹配,其实看到的比较多。Latencynumbertables图形化网页可选择年份,数据更准确。latencynumbergraph从中可以得出一些明显的结论:内存比磁盘快。避免磁盘寻道。数据中心往往位于不同的地区,在它们之间传输数据非常耗时。从磁盘顺序读取数据比从网络顺序读取数据慢。可用性数字在工作中,我们经常用几个9来描述一个系统的可用性。100%意味着系统永远不会挂掉,大多数实际系统可用性指标都在99%到100%之间。像一些云厂商,比如亚马逊、微软、谷歌,承诺的可用性是三个九,也就是99.9%以上,描述的是可用时间。可用性我的一些号码累积。一个支付服务的支付峰值是60w。QPSGoGC需要10-30us打开写屏障。在内网,一个网络请求的耗时是ms级别的10G网卡,1.25GB/s满4C8G内置10w连接到20w没有问题。由于机械硬盘的机械结构,随机I/O和顺序I/O的性能可能相差数百倍。固态硬盘只是十几倍到几十倍之间。Twitter工程师认为,体验好的网站平均响应时间应该在500ms左右,理想时间是200-300msAverageQPS:日均用户请求除以4w。每日平均用户请求,一般来自产品评价。PeakQPS:实践中平均QPS的2~4倍本章最后有一个实际的例子:评估twitter的QPS和存储容量。先给出一些预设:3亿月活跃用户50%的用户每天使用推特平均用户每天发布2条推文10%的推文包含多媒体,多媒体数据存储5年以下是估算过程:初步估算QPS:DAU(DailyActiveUsers)为:3亿(用户总数)*50%=1.5亿发推平均QPS:1.5亿*2/24小时/3600秒=~3500峰值QPS一般认为是平均QPS的两倍:2*3500=7000QPS然后估算存储容量:假设多媒体的平均大小为1MB,那么每天的存储容量为:1.5亿*2*10%*1MB=30TB。5年的存储容量为30TB*365*5=55PB。后两者的估算过程是这样的:3亿*10%*1MB,1MB其实就是6个零,相当于百万进化2次:百万->亿->万亿,即从M->G->T,所以结果等于300T*10%=30T。30TB*365*5=30TB*1825=30TB*10^3*1.825,TB演化一次PB,所以等于30*1.825PB=55PB。一些建议估计题的本质在于过程,解决问题的过程比得到正确的结果更重要。粗略计算。面试过程中,能不能得到一个准确的结果意义不大,没有那么多时间,也没有必要。例如99987/9.1可以简化为100,000/10。写下您一路上所做的假设,以便以后参考。写下单位。例如,5MB,稍后将在估算会话中使用。常被问到的Estimation:QPS、peakQPS、存储容量、服务器数量……estimation的点评能力还是很重要的,在日常工作中也可以用到。比如新增一个redis,评估需要多少机器资源……如果遇到这样的场景,就应该抓住机会去锻炼。本章给出的2的幂表非常有用,应妥善保存,使用时方便随时查阅。