架构师成长之路:如何做资源评估?

架构师成长之路:如何做资源评估?,第1张

所谓资源估算是指:对软件系统上线运行时,为了完成预定的目标,而需要的服务器资源、存储资源、CPU、内存、网络带宽等资源进行预估。

一般要预估正常使用情况、高峰使用情况、未来发展使用的情况等。

通常需要估算1-3年的情况,要求高一些的会预估到5年的情况。

资源估算本身就是部署架构设计过程中重要的一环,是必须要做的事情。

你要做出部署方案,肯定要知道需要多少服务器,多少资源,每台服务器上部署哪些服务、哪些组件或模块,或者是哪些第三方应用(比如:Redis、Kafka等)。

部署方案需要对系统的高性能、高可用等提供支撑。

那么反过来讲,部署方案就会对系统的架构设计产生重大影响。

比如:按照现在的架构设计,要满足系统的性能要求,预估下来,可能需要10台服务器。

然而,现在只有5台服务器,那么,根据这个资源情况,反过来估算,就要求系统的架构设计做出改变,性能至少要提升一倍以上,否则是无法达成目标的。

也有可能去优化现有业务逻辑的处理算法,比如业务原来大概要1秒处理完,经过优化算法后,能够在500毫秒处理完,那么整体的性能相当于提升了一倍,也能满足要求。

又比如说经过估算,某个表的数据可能很快会非常多,那从架构上,就需要对它进行分库分表,相应的业务实现也需要调整,以支持这样的变化等等的,这都体现了资源估算对架构设计的影响。

比如:正常情况下,每日使用系统的人数、并发数、访问页面的数量、产生数据量的多少,产生数据量的大小、每次访问带来的网络访问次数、每次访问产生的网络传输数据量等等。

首先我们要去确定这些目标的数据,不同的系统可能需要不同的目标及其数据,这里只是举个例子而已。

除了这些目标之外,还有很多性能指标,比如:系统要求能支撑在线人数、并发数,响应时间等。这些都是咱们要确定的系统目标。

另外,我们还要确定,在系统使用高峰期时,上述数据的量。

还有未来发展一定时期内,上述数据的量,通常是1-3年。

对于互联网应用,发展比较快,通常都要按照3-5年来预估,否则系统上线没多久,就要不断调整部署架构了。

当然部署架构考虑3-5年的量,并不是一下就按照这个量来部署,是先把架构做好,根据需要不断向上添置服务器等资源,然后修改配置就可以了。

这里讲两个推算资源的经验法则

Design:设计 20倍的容量

Implement:实施 3倍的容量

Deploy:部署 1.5倍的容量

注意这些都是一些经验数据,不同应用会有不同的调整,还是要具体应用具体分析。

比如企业级的内部应用,一般就不需要按照20倍容量来设计,因为都是内部人员来使用,很难说几年内,员工数会有20倍的增长。

一般对资源的使用量不超过总资源量的70%(也有放宽到75%的)。

比如,有一台8核32G的服务器,这个配置不高吧,准备要在上面部署Tomcat,假设给每个Tomcat分配4G的内存,那是不是这台服务器就可以部署8个Tomcat呢?

答案是否定的,首先操作系统本身还需要使用一些资源;另外,不可能把资源用到100%。通常情况下,资源利用率超过70%了,运维人员就会关注这台服务器了,超过80%,运维人员就会想办法调整,如果超过90%,那就比较危险了,这台服务器随时都有可能挂掉。

因此,对于这样一台服务器,正常使用的时候,一般不建议超过70%的内存,大概也就是22G,大约可以部署4-5个Tomcat。

一个是要预留操作系统需要使用的内存,另外一个就是Tomcat虽然分配的是4G,但在高峰运行时,它使用的内存可能会超过4G的,所以得预留一点内存。

因此,这样一台服务器,如果每个Tomcat分配4G内存的话,通常也就是配置4个Tomcat,会比较合适,也比较安全,5个当然也可以,可能稍紧张一点,问题不大。再多,就比较有风险了。

有关于资源规划,我们就聊到这儿。

一般正确计算带宽的方法是:每秒钟下载文件的字节数×8/0.7 = 宽带的速率。这前提是你必须先关闭其他正在运行中的网络应用程序,不能同时下载其他网页和软件。

举例说明,如果你的站是图片网站或者论坛网站,1M带宽就相当于200人左右在线。假如说是下载的话,那么就要看并发连接数目。最后用并发数目除以每个人所占用的带宽。例如:2400人同时在线,2400人并发同时操作,每个人的页面30KB,那么合算成带宽就是:2400/(30KB*8)=10Mb

参考资料:如何估算服务器需要的带宽多大


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/397774.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存