引言
在云计算时代,吞吐量已成为衡量云端性能的关键指标之一。对于需要处理海量数据的工作负载,吞吐量的瓶颈将直接影响业务的效率和用户体验。本文将重点探讨云端吞吐量优化的手段,特别是如何突破云硬盘最大吞吐量 350 的限制,以释放云端性能的潜力。
吞吐量瓶颈的影响
吞吐量瓶颈会带来一系列负面影响,包括:应用程序响应延迟,导致用户体验不佳。数据传输效率低下,影响数据处理和分析进程。云服务资源利用率降低,造成成本浪费。
突破云硬盘吞吐量限制的手段
突破云硬盘吞吐量限制的方法分为两类:
1. 虚拟化技术
RAID 0:通过将多个云硬盘条带化,RAID 0 可以提高数据读取和写入速度。RAID 0 的数据冗余性较低,一旦其中一个云硬盘发生故障,整个阵列的数据将丢失。RAID 1:RAID 1 将数据镜像到两个云硬盘上,提供数据冗余。它比 RAID 0 吞吐量较低,但数据安全性更高。RAID 10:RAID 10 结合了 RAID 1 和 RAID 0 的优点,既提供数据冗余,又提升吞吐量。
2. 弹性块存储(EBS)优化
优化卷类型:选择吞吐量优化的云硬盘卷类型,如 io1、io2、gp2 或 gp3,以获得更高的吞吐量。增加卷大小:云硬盘吞吐量与卷大小成正比,增加卷大小可以提高吞吐量。优化卷布局:合理规划云硬盘布局,将经常访问的数据存储在较快的卷上。使用 EBS 预热:EBS 预热功能可以提前加载云硬盘数据,减少应用程序启动时的延迟和吞吐量瓶颈。考虑本地 NVMe SSD:部分云平台提供本地 NVMe SSD 存储选项,可提供比传统云硬盘更高的吞吐量和更低的延迟。
突破云硬盘最大吞吐量 350 的案例
以下是一个真实的案例,通过结合 RAID 0 和 EBS 优化,突破了云硬盘最大吞吐量 350 的限制:场景:某企业需要处理海量视频数据,要求高吞吐量和低延迟。解决方案:采用 4 个 io2 云硬盘卷,组成 RAID 0 阵列。每个云硬盘卷大小为 2 TB,总吞吐量理论上可达 1400 MB/s。结果:实际测试结果显示,吞吐量最高可达 1350 MB/s,远高于云硬盘的默认最大吞吐量 350。
结论
通过虚拟化技术和 EBS 优化手段,可以有效突破云硬盘吞吐量限制,释放云端性能潜力。企业可根据实际业务需求选择合适的优化方案,以满足高吞吐量和低延迟的应用程序要求。突破云硬盘吞吐量限制是云端性能优化中的关键一步,有助于提高数据处理效率,提升用户体验,并最大化云服务价值。
附录
[云硬盘类型](预热](本地 NVMe SSD 存储](
有人用过华为云硬盘(EVS)吗?体验如何?
华为云硬盘从性能数据上来看还是不错的,最大IOPS、吞吐量最大350MBps、最低时延1ms,这些数据在公有云市场上是属于比较领先的服务商了;功能上该有的也都具备,备份、快照、加密、共享、在线扩容等都支持,唯一的缺点就是他们的云硬盘很少做活动的,即使做活动折扣幅度也不会很大。
云端磁盘:网络巨头如何存储数据(上)
当你和成千上万的其他人同时提交搜索时,这个快照也正在不断地随着这些变化被更新着。
与此同时,数据是由数以千计的独立服务器进程处理的,每个都各司其职,从计算出给你提供的相关联广告,到决定搜索结果的排列顺序。
支持谷歌搜索引擎的存储系统必须能够承受每天由运行于数以千计的服务器上的成千上万的独立进程所发出的数百万计的读写请求,几乎不能停机来备份或维护,还必须不断扩容以容纳由谷歌网页抓取机器人添加的日益扩大的众多页面。
总体下来,谷歌每天要处理超过20PB。
这可不是谷歌可以从一个现成的存储架构就能完成的。
而且对于运行超大规模的数据中心的其他网络和云计算巨头来说也是如此,比如亚马逊和Facebook。
虽然大多数数据中心已经通过在一个存储区网络添加更多硬盘容量来解决扩充存储的问题,更多的存储服务器,通常是更多的数据库服务器,因为云环境的性能限制,这些方法却失效了。
在云环境下,任何时候都可能有成千上万的活跃用户的数据,而且数据的读写在任何时刻都能达到数千TB。
这不仅仅是一个关于磁盘读写速度的简单问题。
以这些卷上的数据流来讲,主要的问题是存储网络的吞吐量;即使有最好的交换机和存储服务器,传统的SAN架构也能成为数据处理的性能瓶颈。
接下来就是老生常谈的扩大存储的成本问题。
超大规模网络公司增加容量的频率(举个例子,亚马逊现在每天为其数据中心增加的容量相当于整个公司在2001年全年的容量,根据亚马逊副总裁杰姆斯·汉密尔顿的说法),用大多数数据中心的同样做法来摆平所需的存储,依照所需的管理,硬件和软件成本,花费将是巨大的。
这种花费在关系数据库被添加到混合数据库时甚至更高,这取决于一个组织对它们的分割和复制如何处理。
对于这种不断扩展和持久存储的需求,驱使互联网巨头——谷歌,亚马逊,Facebook,微软等等——采取一种不同的存储解决方案:基于对象存储的分布式文件系统。
这些系统至少都部分受到其他分布式集群文件系统的启发,如Red Hat的全局文件系统和IBM的通用并行文件系统。
这些云巨头的分布式文件系统的架构把元数据(关于内容的数据)从它存储的数据中分开。
这能通过多个副本对数据进行大量并行读写操作,并且抛掉了像“文件锁定”这样的概念。
这些分布式文件系统的影响远远超出了它们为超大规模数据中心而创建的范畴——它们会直接影响那些使用公共云服务的公司(比如亚马逊的EC2,谷歌的AppEngine和微软的Azure)如何开发和部署程序。
公司,大学和政府机构寻找一种快速存储和提供大量数据访问的方法正日益变成受云巨头们启发的数据存储系统的新阶段。
因此有必要了解一下它们的发展史和过程中所做的工程折衷方案。
谷歌文件系统 谷歌是最早面对存储容量问题的主流网络公司中的一家。
在2003年,谷歌工程师们找到了问题的答案,就是建立一个可为谷歌数据中心战略定制的分布式文件系统——谷歌文件系统(GFS)。
谷歌文件系统几乎是所有公司云服务的基础。
它能够处理数据存储,包括公司的BigTable数据库和为谷歌的AppEngine“平台即服务”的数 据储存,并且为谷歌搜索引擎和其他程序提供数据。
谷歌创建谷歌文件系统的设计决定推动了大量云架构下的软件工程技术,反之亦然。
谷歌往往把程序数据储存在 大量的文件里,并把文件作为“生产者-消费者队列”使用,数以百计的机器收集的数据可能被写入同一个文件。
这个文件可能会由另一个合并或分析数据的应用程 序处理——或许甚至是在数据正被写入的时候。
“这当中的某些服务器一定会出错——因此谷歌文件系统被设计为能够容忍这种错误,不会丢失(太多)数据”。
谷歌为自己保留了大量技术细节,原因很明显。
但是由谷歌研究员Sanjay Ghemawat,首席工程师Howard Gobioff和高级工程师Shun-Tak Leung在2003首次发表的报告中提到,谷歌文件系统在设计上是带有一些非常具体的优先考虑的:谷歌想把大量便宜的服务器和硬盘驱动器变成一个可以储 存数百TB数据的能够在出错时自行管理可靠的数据存储。
并且它需要被设计成按谷歌的方式收集和读取数据,允许多个应用程序同时把大批量数据添加到系统上, 且能以高速访问。
就像是一个RAID 5存储阵列通过多磁盘放置数据进行出错保护,谷歌文件系统把文件分成固定大小的块,复制到整个服务器集群。
因为它们是用着廉价硬盘的电脑,其中一些服务器肯定会出错——因此谷歌文件系统被设计为能够容忍这种错误,不会丢失(太多)数据。
但是RAID和GFS的相同点就到此为止了,因为那些服务器可以分布于网络——既可以在第一个单独的物理数据中心也可以分散于不同的数据中心,取决 于数据的用途。
GFS设计主要用于批量处理大量数据。
重点是高速读取数据,而不是到文件中某个部分的访问速度,也不是数据写入到文件系统的速度。
GFS提 供如此高输出是以牺牲更高密度的读写和更快速度的数据写入为代价的。
正如Ghemawat和公司在文件中所说,“在文件中任意位置的小的写入是支持的,但 不一定非要高效。
” 这种分布式的性质,随着GFS处理数据量的庞大——数百万的文件,当中很多都超过100MB而且通常都会变成GB——需要一些取舍,以便让GFS和 你通常安装在一台服务器上的文件系统有很大的不同。
因为成百上千的独立进程可能同时对一个文件进行写入和读取,GFS需要支持“原子性”数据——在不影响 其他程序的情况下回滚出错的写入。
而且它需要以非常低的同步开销保持数据的完整性以避免拖垮性能。
GFS由三层组成:GFS客户端,处理程序数据请求;管理服务器,用内存中的索引追踪数据文件名和所在区块的位置;还有数据存储服务器本身。
最初, 为简单起见,GFS为每个集群使用一个单独的管理服务器,因此系统被设计成让管理服务器尽可能避开数据访问。
谷歌已经发开出了一个分布式管理服务器系统, 可以控制数百台管理服务器,每一台都能处理大约1亿个文件。
当GFS客户端收到一个特定数据文件的请求,它需要从管理服务器请求数据的位置。
管理服务器提供其中一个副本的位置,之后客户端就可以直接与存储服务器进行沟通,用来读写剩下的其他部分。
管理服务器就不再参与其中了,除非有错误发生。
为确保数据是高度可用的,GFS舍弃了其他一些东西——比如各副本间的一致性。
GFS确实坚持数据的原子性——如果写入失败,它将返回一个错误,然 后将写入回滚到元数据,并产生一个旧数据的副本。
但是管理服务器在数据写入上的介入缺失意味着当数据写入到系统时,它不能立刻让副本遍布整个GFS集群。
在处理对数据同时访问和网络限制的必要性之外,该系统遵循谷歌所谓的“宽松一致性模型”。
这意味着GFS对于在必要时从旧的副本提供陈旧的数据完全不在乎——只要数据最终得以更新。
管理服务器的追踪变化,或“突变”,当变化发生时,区块中的数据会用版本号来指示。
由于一些副本被留下了(或变“旧了”),GFS管理服务器会确保这些区块在更新前不会送至客户端。
但这并不一定发生在已经连接到那些区块的部分。
元数据的变更在管理服务器处理这些变更,并将它们反映在元数据前是不可见的。
元数据也需要在多个位置 生成副本,以防管理服务器出错——那样的话整个文件系统就丢失了。
而且如果在写入过程中管理服务器有错误发生,变更同样会消失。
由于谷歌处理数据的方式, 这并不是一个大问题:程序使用的大部分的数据很少变化,而且当变化发生时,数据通常是扩充的而不是原地修改的。
当GFS在为2003年运行的谷歌应用设计出来时,离谷歌开始遭遇扩展性问题并不远。
甚至是在公司收购YouTube之前,GFS开始碰壁——很大 原因是谷歌新添加的应用在64M文件大小下工作的不是很好。
为了绕过它,谷歌转向了Bigtable,一种基于表格的数据存储,那依稀类似于数据库,位于 GFS之上。
Bigtable大多是一次写入,因此变更被作为对表的扩展进行存储的——谷歌将其用于如对Google Docs进行版本控制的类似应用上。
如果你不是在谷歌工作,那上述内容太过于学术性了(虽然它可以帮助AppEngine,谷歌云存储和谷歌其他服务的用户更好地了解台面下是怎么事 儿)。
虽然谷歌云存储通过一个网络接口提供了一个公开方式来储存和访问位于GFS上的文件,但是操控GFS的真正接口和工具并不是公开的。
但报告称GFS 引领了更广泛使用的分布式文件系统的发展,如:Hadoop分布式文件系统。
Hadoop分布式文件系统(HDFS) Hadoop是用Java开发的,作为Apache基金会的一个开源项目,它在网络公司和其他有“大数据”问题的公司间已经有了如下的口碑,它被称 之为“二十一世界的瑞士军刀”。
所有这些宣传意味着,你很可能会发现你迟早要以某种形式用Hadoop处理问题而不是用其他的分布式文件系统——特别是当 微软开始将其列入Windows Server的扩展中的时候。
Hadoop是由开发者Doug Cutting在他儿子给一只玩具大象起名后用它命名的,“灵感”来自于GFS和谷歌的MapReduce分布式计算环境。
在2004年,Cutting 和其他工作于Apache Nutch搜索引擎项目的人试图寻求一种可以将抓取器和索引带向“网络规模”的方式,Cutting阅读了谷歌关于GFS和MapReduce的论文并开 始动手开发自己的项目。
虽然对于Hadoop的大多数热情来自于它由MapReduce启发的分布式处理管理衍生出的分布式数据处理能力,但使用 Hadoop分布式文件系统还是因为它能对大量数据进行处理。
Hadoop是在Apache许可证下开发的,有许多商业和自由发行版可用。
我用的版本来自Cloudera公司(Doug Cutting现在的东家)——Cloudera发行版包括了Apache Hadoop(CDH),Cloudera企业平台的开源版本,和Cloudera服务和配置特别版,它可免费支持50个节点。
HortonWorks,该公司与微软合作帮助后者把Hadoop移植到Azure和Windows Server,有其自己的基于Hadoop和HortonWorks数据平台,是一个受限的“技术预览版”。
同样还有Apache Core的Debian包,和许多其他开源的或商业的基于Hadoop的某种形式的产品。
HDFS可被用于支持在大量廉价硬件和大数据下广泛的应用。
但由于其架构,它不完全适合于通用数据存储,并且放弃了一定的灵活性。
HDFS必须废除 某些经常与文件系统有关的事情,以确保它能更好地处理在分布着数百甚至数千台物理机器上的大量数据——如对数据交互访问这种事情。
虽然Hadoop运行于Java上,但是除了它的Java API之外还有许多种方式和HDFS进行交互。
有一种C语言版本的API,通过Hadoop的命令行界面,文件可以通过HTTP请求浏览。
还有 MountableHDFS,一个基于FUSE的扩展,允许HDFS被大多数操作系统作为一个文件系统挂载。
开发者们正在制作一个WebDAV接口,让系 统可以进行基于网络的数据写入。
HDFS严格遵循了由谷歌的GFS奠定的架构路线,延续了它的三层,单管理服务器模型。
每个Hadoop集群有一个叫做“名字节点”的管理服务器, 它来追踪关于位置和每个64M存储“块”副本的状态的元数据。
数据通过集群中的“数据节点”复制——从属系统处理数据的读写。
默认情况下每个块都会被复制 三次,而且复制的次数还可以通过改变集群设置来增加。
像GFS一样,HDFS让管理服务器尽可能快地避开读写循环,避免产生性能瓶颈。
当从HDFS上访问数据的请求产生时,名字节点发回与这个请求最近 的数据节点上的块的位置信息。
名字节点还可以通过一个“心跳”协议追踪每个数据节点的健康度并停止向不响应的数据节点发送请求,把它们标记为“死的”。
在切换后,名字节点就不处理任何更进一步的交互。
对数据节点上数据的编辑被报告回名字节点并记录在日志里,之后用变动的数据副本对其他数据节点进行 复制。
同GFS一样,这导致了一致性上相应的懒散形式,而且虽然名字节点将为最近修改的数据块发送新的请求,正在进行的工作仍然会碰到它们被分配到的数据 节点上的陈旧数据。
那不应该是经常发生的,然而,因为HDFS数据应该被“写入一次”——变动通常是扩充数据,而不是改动现有数据,为了更简单的一致性。
而且由于Hadoop应用的性质,数据往往会大批量地写入HDFS。
当一个客户端发送要写入HDFS的数据时,它首先被客户端程序安置在一个临时的本地文件中,直到写入的数据达到了数据块的大小——默认64MB。
之 后客户端联系名字节点并获得一个数据节点和要写入数据的块位置。
这一过程对每个块的数据重复进行,一次一个块。
这减少了产生网络阻塞的数量,但也减慢了写 入过程。
但是HDFS是用于读取的,而不是写入。
HDFS可以减少网络写入流量的另一个办法是在于它处理复制的方式。
通过激活一个叫做“机架感知”的HDFS特性来管理分布的副本,管理员可以为每 个节点指定一个机架序号,通过网络配置脚本中的一个变量指定它的物理位置。
默认情况下,所有的节点都在同一个“机架”中。
但是当机架感知被配置以 后,HDFS把每个块上的一个副本放置于同一个数据中心机架的另一个节点上,另一个则在不同的机架上,来减少网络中数据写入量——基于如下理由,就是一整 个机架出错的几率比一个单一节点出错的几率要小。
理论上,它整体改善了HDFS的写入性能而没有牺牲掉可靠性。
与GFS早期版本一样,对于一个要成为高度可用的分布式系统,HDFS的名字节点创建一个单一的故障点。
如果名字节点中的元数据丢失了,整个 HDFS环境就变成不可读了——就像一个缺少了文件分配表的硬盘。
HDFS支持使用“备份节点”,它能与内存中的名字节点的元数据保持版本同步,并储存前 一系统状态的快照,以便能够在需要时回滚。
快照也可以被分开储存在叫做“检查节点”的地方。
2024年便宜好用的云服务器推荐[汇总]
根据场景选择云服务器、轻量应用服务器简单的场景就有简单的服务器,复杂的场景就用高性能服务器避免资源浪费,和小马拉大车两种情况;云服务器常见场景,服务器选择如下:1、普通网站应用场景/小型app对CPU、内存、硬盘空间和带宽无特殊要求,对安全性、可靠性要求高,服务一般只需要部署在一台或少量的服务器上,一次投入成本少,后期维护成本低的场景。
例如网站开发测试环境、小型数据库应用。
推荐使用通用/标准型弹性云服务器,推荐机型有:腾讯云轻量应用服务器,腾讯云SNe3,阿里云共享型S6,华为云通用型S3/S6,HECS云服务器,如果是轻量应用服务器(建议2核4G6M带宽起步)。
以上机型都具有均衡的计算、内存和网络资源,适用于业务负载压力适中的应用场景,满足个人普通业务搬迁上云需求。
2、企业电商/中大型app对内存要求高、数据量大并且数据访问量大、要求快速的数据交换和处理的场景。
例如广告精准营销、电商、移动APP。
推荐使用内存优化型弹性云服务器,推荐:腾讯云轻量应用服务器高配置(4核8G10M带宽),阿里云服务器G6/G7,华为云增强型C3云服务器,主要提供高内存实例,同时可以配置超高IO的云硬盘和合适的带宽。
追求内存的同时兼顾计算性能可选择腾讯云服务器S5/S6。
3、图形渲染对图像视频质量要求高、大内存,大量数据处理,I/O并发能力。
可以完成快速的数据处理交换以及大量的GPU计算能力的场景。
例如图形渲染、工程制图。
推荐使用GPU图形加速型弹性云服务器,推荐GPU服务器,G1型弹性云服务器基于NVIDIA Tesla M60硬件虚拟化技术,提供较为经济的图形加速能力。
能够支持DirectX、OpenGL,可以提供最大显存1GiB、分辩率为4096×2160的图形图像处理能力。
4、数据分析处理大容量数据,需要高I/O能力和快速的数据交换处理能力的场景。
例如MapReduce 、Hadoop计算密集型等。
推荐使用磁盘增强型弹性云服务器,阿里云服务器C6/C7,腾讯云服务器S5/S6,华为云服务器C6,阿里云服务器d1,主要适用于需要对本地存储上的极大型数据集进行高性能顺序读写访问的工作负载,例如:Hadoop分布式计算,大规模的并行数据处理和日志处理应用。
主要的数据存储是基于HDD的存储实例,默认配置最高10GE网络能力,提供较高的PPS性能和网络低延迟。
最大可支持24个本地磁盘、48个vCPU和384GiB内存。
5、高性能计算高计算能力、高吞吐量的场景。
例如科学计算、基因工程、游戏动画、生物制药计算和存储系统。
推荐使用高性能计算型弹性云服务器,比如腾讯云SA2/S5/S6,阿里云C6/C7,华为云增强型C6,C3,密集型M6,主要使用在受计算限制的高性能处理器的应用程序上,适合要求提供海量并行计算资源、高性能的基础设施服务,需要达到高性能计算和海量存储,对渲染的效率有一定保障的场景。
有没有哪些云服务器便宜好用的?很多小伙伴还不知道云厂商都有什么优势,咱们简单说说:阿里云市场占有率中国第一,世界第三,最早布局云计算。
飞天架构非常强。
阿里云稳定性好,云产品生态体系丰富,只是官网活动机型较少,续费方面要贵一些,大企业不差钱,中小企业还可选择腾讯云,华为云,官网活动:腾讯云不断推出“XX计划”,用资源,扶持,来吸引第三方Saas化厂商,基于腾讯云做底层研发的平台,也确实扶持了一大批Saas化企业。
腾讯云在文娱例如音视频、游戏等领域、阿里云在电商、政务等领域都各有所长。
两家的产品体系跟国外的AWS、Azure较为相似。
腾讯云性能比较均衡,配置高,价格低;轻量应用服务器是非常不错的选择,搭建环境非常方便。
例如现在腾讯云的采购活动,云服务器2核4G5M带宽 每月流量1000G,4核8G12M带宽 每月流量2000G,续费划算,优惠力度更大,这两种机型都在活动机中,尤其是三年款。
官网活动:华为云是硬件出身的,技术也是相对出色,它是唯一 一家提供端到端服务能力的云计算平台。
从基本硬件设备到高级虚拟化部署,华为都有独立开发的产品(软硬件),这项技术得到了广泛认可。
而且华为云服务器安全性能更强,从底层物理架构到软件基础服务,全栈式自研架构,容灾、灾备性能更强、更安全。
这也是很多政府机构、金融公司选择与华为云合作的原因。
华为云秒杀活动中价格便宜,安全性好,提出了“上不碰应用,下不碰数据”,值得信赖,缺点是云生态系统较少,好在快速增长中。
官网活动:硅云中国香港服务器,是比较受欢迎的主机厂商,CN2+BGP网络可以有效覆盖全球,速度较快。
直连香港,延迟低,适合外贸建站,免备案业务场景。
外贸网站是初衷就是能为企业带来境外订单,这要求外贸网站必须在境外具备良好的访问速度,尤其是目标客户占比较大的地区要访问速度快、稳定,如果使用内地虚拟主机肯定是无法胜任,只能选择境外虚拟主机。
大厂的香港服务器往往非常昂贵(这里边的品牌溢价是比较高的,平时做活动也很少有香港服务器,而太小的作坊(个人商家)的香港服务器的价格虽然便宜但是大家普遍不放心,那么不妨选小众专家品牌硅云,官网活动:云厂商没有百分百完美,从总体上来说,上述几家,品牌,价格,性能,服务都是比较不错的。
毕竟服务器性能和平台稳定性、售后服务才是最重要的。
这里分享下内地各大云厂商官网活动:一些提醒珍惜新用户首购身份。
云厂商中一个身份信息认证 只能注册1个新用户账号,优惠力度大的活动只针对新用户,购买价格最低。
所以老用户想要参加新用户活动,最好是借用家人或者朋友的身份注册新账号购买,能参加优惠力度大的活动更多,购买好服务器后再迁移到自己名下。
如果是部署轻量型应用,建议选华为云秒杀机或 腾讯轻量应用服务器(建议2核4G6M配置起,4核8G12M带)。
推荐阅读:1. 2024年,阿里云、腾讯云、华为云、Ucloud、硅云 服务器如何选?[价格表已更新]2. 如何选择云服务器配置?3. 阿里云、腾讯云、华为云、优刻得活动爆款服务器机型性能测评(CPU、内存、磁盘)?4. 腾讯云和阿里云服务器常用机型性能对比,哪家好?5. 轻量应用服务器和云服务器到底有什么区别?如何选?6. 腾讯云和阿里云轻量应用服务器到底哪家好?(新手指南)