在当今的云计算时代,选择合适的云服务器配置对于确保应用程序的性能和成本效益至关重要。DigitalOcean 提供了多种 Droplet 云服务器配置,以满足不同用户的需求。本文将指导你如何根据你的工作负载需求,选择最合适的 DigitalOcean Droplet 配置。
Droplet 是什么?
DigitalOcean Droplets 是基于 Linux 的虚拟机(VM),它们运行在虚拟化的硬件之上。你创建的每个 Droplet 都是一台新服务器,可以单独使用,也可以作为更大、基于云的基础设施、集群的一部分。Droplets 提供了灵活的资源分配,包括 CPU、内存、磁盘存储和网络带宽。
Droplet 的创建非常简单,只需要在完成 DigitalOcean 账号的注册之后,进入 DigitalOcean 后台,轻松点选所需配置即可完成创建。目前 DigitalOcean 的数据中心分布在旧金山、纽约、阿姆斯特丹、新加坡、伦敦、法兰克福、多伦多、班加罗尔、悉尼,能够满足绝大多数中国出海企业的需求。
不过选择适合自己业务的 Droplet 非常关键,过大(或者说资源配置过多)的 Droplet 会浪费资源且成本更高,而过小的 Droplet 在 CPU 或内存满载时会遭受性能下降或错误。
相关阅读:
如何选择适合自己业务的云服务器?
DigitalOcean提供五种 Droplet 计划:一个共享 CPU 计划和四个独享 CPU 计划。不同的 Droplet Plan 可以配置不同数量的 vCPU,不同大小的 RAM,甚至可以配置不同容量的 SSD 存储。下表展示了不同Droplet实例的配置和应用场景。
如截图所示,你可以看到,不同的 Plan 会提供不同大小的免费流量,最低为 500GB 的免费出站流量,最高可以获取 6TB 的流量。如果流量超出了免费的流量额度,会按照 $0.01/GiB 来收费。
典型业务场景
- 中高流量的 Web 服务器:此类业务至少需要一个可以处理并发连接并且有足够内存来缓存页面和数据的配置。一个 8GB 2CPUs、16GB 4 CPUs 或者 32GB 6 CPUs 的配置都可能是合适的起始配置,具体取决于你网站的复杂性和平均并发用户数。
- 电商网站:电商网站通常需要处理大量的并发请求,同时还需要有足够的资源来运行后台服务如订单处理、支付网关集成等。考虑到电商平台可能还会涉及商品图片、用户评论等内容,建议至少使用 32GB 6 CPUs 或者 64GB 16 CPUs 的配置。
- 中型数据库:对于中型数据库,内存是关键因素之一,因为更多的内存意味着更多的数据可以被缓存,从而减少磁盘I/O操作。因此,至少需要32GB 6 CPUs 的配置来运行一个中等规模的数据库。如果数据库操作非常密集,可能需要更高配置,比如64GB 16 CPUs 或更高。
- 软件即服务 (SaaS):SaaS应用可能需要处理多个租户的需求,这意味着它们需要能够高效地管理资源并且提供稳定的服务。根据应用的具体需求,从16GB 4 CPUs 到 160GB 40CPUs 都有可能是合适的配置,具体取决于SaaS应用的功能集、用户基数和预期的增长速度。
- 视频和直播流:视频和直播流服务通常需要处理大量的实时数据传输,并且可能需要编码和转码能力。因此,至少需要8GB 4 CPUs 的配置来处理基本的直播流,而对于高质量、高分辨率或多路流媒体服务,则建议使用16GB 8 CPUs 或以上的配置。
- 游戏:游戏服务器的要求因游戏类型而异。简单的多人在线游戏可能需要较少的资源,而复杂的游戏(如MMORPG)则需要更多的CPU和内存资源来处理游戏逻辑和玩家互动。对于基础游戏服务器,可以考虑8GB 4 CPUs 的配置;而对于要求较高的游戏,则至少需要16GB 8 CPUs 或更高的配置。
- 人工智能和机器学习:AI和ML应用通常需要大量的计算能力和内存来训练模型和进行推理。对于这些任务,至少需要32GB 16 CPUs 的配置,并且如果涉及到深度学习,则可能需要更大的内存,如64GB 32 CPUs 或更高配置。如果可能的话,使用GPU加速计算也是一个不错的选择。
- 负载较重的前端Web服务器:对于负载较重的前端Web服务器,需要确保足够的内存来缓存静态文件,并且有足够的CPU资源来处理动态内容。在这种情况下,8GB 4 CPUs 或 16GB 8 CPUs 的配置可能是一个良好的起点,具体取决于网站的复杂性和预期的访问量。
- 持续集成/持续部署 (CI/CD):CI/CD管道可能涉及构建、测试和部署代码,这需要一定的CPU和内存资源。对于简单的CI/CD流程,4GB 2CPUs 可能已经足够,但对于更复杂的流水线,则可能需要8GB 4 CPUs 或更高的配置。如果涉及到并行构建或大型项目的CI/CD,则需要16GB 8 CPUs 或更高配置。
- 高性能SQL或NoSQL数据库:SQL和NoSQL数据库通常需要大量的内存来缓存数据和索引,从而提高读写性能。对于较小规模的数据库应用,16 GB 2 CPUs 和 50 GB NVMe SSDs 的配置可能已经足够。然而,对于更大规模的数据库应用,建议使用至少64 GB 8 CPUs 和200 GB NVMe SSDs 的配置,以便处理更多的并发请求和存储更多的数据页。
- 网络规模的内存缓存和索引:如果需要在网络级别上提供缓存服务,如Redis或Memcached,那么内存容量至关重要。对于这类应用,至少需要32 GB 4 CPUs 和100 GB NVMe SSDs 的配置。对于大规模的缓存和索引应用,128 GB 16 CPUs 和400 GB NVMe SSDs 或更高的配置将是更好的选择。
- 实时大数据处理:实时大数据处理通常涉及大量的数据读取、写入和处理,如流式处理框架(Apache Kafka, Apache Flink等)。这类应用需要较大的内存来存储中间结果和快速处理数据。因此,至少需要64 GB 8 CPUs 和200 GB NVMe SSDs 的配置。对于更复杂的大数据处理场景,192 GB 24 CPUs 和600 GB NVMe SSDs 或更高的配置将更为合适。
- 资源密集型或关键业务应用程序,特别是那些对JVM要求较高的应用程序:对于资源密集型的应用程序,特别是那些依赖Java虚拟机(JVM)的应用程序,如Spring Boot应用或Elasticsearch集群,内存大小非常重要,因为这些应用程序需要大量的内存来运行垃圾回收和保持对象的存活。对于这类应用,建议至少使用64 GB 8 CPUs 和200 GB NVMe SSDs 的配置。对于更复杂的系统,256 GB 32 CPUs 和800 GB NVMe SSDs 的配置将是最佳选择。
- 大型、高性能的NoSQL数据库,如MongoDB、Elasticsearch和TimeScaleDB:这些数据库通常需要大量的存储空间来存放数据,并且需要较快的读写速度来保证性能。对于相对较小的数据库应用,16 GB 2 CPUs 和 300 GB NVMe SSDs 的配置可能已经足够。然而,对于更大规模的数据库应用,建议使用至少64 GB 8 CPUs 和1.17TB NVMe SSDs 的配置。对于非常大的数据集和高并发访问需求,建议使用192 GB 24 CPUs 和3.52TB NVMe SSDs 或更高的配置。
- 监控和分析软件,如Prometheus和Grafana:监控和分析软件通常需要大量的存储空间来保存指标数据,并且需要快速读取这些数据来进行实时分析。对于较小规模的监控系统,32 GB 4 CPUs 和600 GB NVMe SSDs 的配置可能已经足够。然而,对于需要处理大量数据的监控系统,建议使用至少128 GB 16 CPUs 和2.34TB NVMe SSDs 的配置。
- 其他类型的数据仓库:数据仓库需要存储大量的历史数据,并且需要支持复杂的数据查询。这类应用通常需要较大的存储空间和较快的存储访问速度。对于较为简单的数据仓库应用,64 GB 8 CPUs 和1.17TB NVMe SSDs 的配置可能已经足够。然而,对于需要处理大规模数据集和复杂查询的数据仓库,建议使用至少192 GB 24 CPUs 和3.52TB NVMe SSDs 的配置。对于最大规模的数据仓库,256 GB 32 CPUs 和4.69TB NVMe SSDs 的配置将是最佳选择。
DigitalOcean为每台主机配备了500GiB至11TB的免费出网流量,这些主机可以共同组成流量池,帮助用户节省成本。查看DigitalOcean的免费流量池是什么,流量如何计算。
根据测试结果判断采用哪种 Droplet
在确定特定类型的 Droplet 之前,我们建议你对目前的业务进行基准测试和负载测试,看看它在模拟负载下的表现如何。对于突发性应用程序或批处理作业,查看负载达到预期峰值时的资源使用情况,特别是当使用共享 CPU 基础 Droplet 时。如果你注意到你的应用程序的性能变化太大,无法满足你的生产需求,请考虑选择具有专用 vCPU 的 Droplet 类型。当然也可以根据以往使用其它云服务的经验来进行判断。
在使用 DIgitalOcean Droplet 的过程中,你也可以通过 DIgitalOcean Droplet Graph 提供的服务器监控数据来判断是否要更改 Droplet Plan。
例如:
- 你在 Graph 种看到 Droplet 大部分时间 CPU 使用率很高,并且也有显著的内存使用,那你可以考虑同时扩展 vCPU 和内存,并使用通用型 Droplet。
- 如果你的 Droplet 大部分时间 CPU 使用率很高但内存使用非常低,你可能会通过使用 CPU 优化型 Droplet 来节省资金。
- 如果你的 Droplet 大部分时间内存使用很高(可能达到最大值并交换到磁盘)但 CPU 使用率低或中等,那么可以考虑扩展内存并使用内存优化型 Droplet。
- 如果你的 Droplet 大部分时间 CPU 或内存使用率处于中等水平,但有时突然上升并触及资源极限值,那么可以考虑使用共享 CPU 的基础型 Droplet,并相应地扩展限制资源。
使用 DigitalOcean 监控,你可以创建警报策略,通过电子邮件或 Slack 在你的 Droplet 达到资源限制时通知你。例如,你可以设置一个警报策略,如果你的一个 Droplet 超过 90% 内存使用超过 30 分钟,通过 Slack 通知你,这表明你的工作负载可能接近最大内存,并可能抛出内存不足错误。
附加存储
所有的 DigitalOcean Droplets 都包含了不同容量的 SSD 存储资源。如果你需要额外的存储,你可以在选择 Droplet Plan 的时候选择添加一个 SSD(如下图)。或者添加 DIgitalOcean 块存储,并将其附加到你的 Droplet 上,或者使用DigitalOcean Spaces 对象存储来存储非结构数据,并关联至你的 Droplet 上。
以上就是关于 DIgitalOcean Droplet 的选型策略。如果你需要更进一步地托管、维护服务器集群,欢迎了解 DigitalOcean Kubernetes 托管服务。