在一次面试的架构部分,我被要求为我设计的某个系统提供硬件需求。它是一个基于微服务的系统,运行在Kubernetes、Openshift或任何其他虚拟env中。
基本上,这个问题可以重新表述为:每个微服务实例运行需要多少CPU、RAM和存储?为什么是这些数字?
当我想到这一点时,我意识到我的知识纯粹是经验性的。通常,我会部署一个具有500 M CPU、500 Gb和几Gb HDD的服务实例,看看它可以处理多少连接,并在必要时添加更多的资源或生成另一个实例。但是我不知道我需要多少CPU或RAM来处理一个HTTP请求,或者向Kafka发送一条消息,或者将一个1MB的图像上传到S3。
如何通过分析而不是经验来计算硬件需求?
发布于 2023-02-23 07:51:34
你期望太多了。
现代现实世界的软件过于复杂,无法完全预先确定资源需求(如果您查看相同的软件产品或产品系列,那么不同的主要版本甚至会有很大的差异)。
集装箱化不会改变这一点。但是,像Docker这样的工具将允许收集关于某个应用程序的资源消耗的数据。
https://softwareengineering.stackexchange.com/questions/444097
复制相似问题