云上真有无穷算力吗?

简介: 本文探讨了云计算环境下“算力无限”的误区,指出即使云上硬件资源看似无限,但由于网络延迟、算法模型限制及成本等因素,实际运算效率未必能线性扩展。文章强调了提高单机运算效率的重要性,推荐使用SPL等工具优化算法,以实现更高性能。

自从 Hadoop 兴起之后,业界好象就有了这么一种共识:不再关注单机的运算性能,全靠集群堆。大家都在比谁的集群能更大,至于单机能力是否被充分发挥了,那没人关心。Hadoop 体系的诸多技术都有这个特征,单机性能奇低,但并不妨碍 Hadoop 推广得遍地都是。

发展到云计算阶段,这个认识就变成了“云上算力无穷”,算法有多笨都没有关系了,反正算力无穷多。所谓双拳难敌四手,到了云上,似乎啥都能搞定。

真有这么回事吗?

从云上能提供的硬件数量(CPU、内存)上看,算力确实是无穷的(相对于某个用户的需求),但这个“无穷”真能有多大意义呢?。

云计算的环境也是由普通硬件搭建的,一台物理机器能装上的 CPU 和内存数量都是有限的,再多的 CPU 和内存就需要用多机来组合了,而多机虚拟出来的 CPU 和内存和单机的性能是完全不同的。访问另一台物理机器的内存需要通过网络,而网络只适合批量访问,但内存的使用常常是小量随机式的,如果继续把网络模拟出来的内存当作单机内存去使用,而不调整算法以适应集群的话,那性能下降得会非常离谱。Java 程序员都知道当内存紧张时(还够但不充裕),JVM 要用外存缓存时导致的性能下降会有多严重,常常是一两个数量级的,在集群中发生本机内存不足需要访问其它节点的内存时,也会有类似的现象发生。这意味着,达到某个阈值的时候,你可能要动用 10 倍甚至 100 倍的硬件资源才能在期望的时间内完成运算了。算力虽然“无穷”,但并不能线性地扩展。

这就会引出另一个问题。

数天前与江湖上人称铎神的师弟(参考:https://mp.weixin.qq.com/s/0gFtvoYG-B_yBb1FoAlyHA)一起聊天,问起对“云上算力无限”这个观点的看法,铎神脱口而出:“云上算力无限,但用户口袋里的钱却有限”。

这道理简单得完全无需解释。

再退一步讲,就算用户财大气粗不在乎成本,仍然有不少运算没办法用上无限算力。

比如我们常见的关联运算(SQL 中的 JOIN),如果不在算法模型层面上进行改造,那它会有个集群节点的极限。分布式 JOIN 算法会有个 Suffle 动作,要在节点之间交换数据,当节点数较多时,Suffle 造成的网络延迟会抵消多机分摊计算带来的性能提升,这时候再增加更多的节点,运算性能并不会有明显提升了。而且这个节点限制数并不大,大概也就是几十到百的规模就会到顶了。

如果不对数据存储组织做刻意的优化,这种“关联”运算就会很常见。

从这三方面看,云上的“无穷”算力对于实际要做的运算来讲,常常没有多大实质意义。

需要一架飞机的时候,并不能用十万匹马来对付。

事还没讨论完,我们还要回答一个问题:既然真正意义的无穷算力并不普遍存在,为什么 Hadoop 等对单机资源利用率很低的技术还能大行其道?

这可能是因为 Hadoop 主要采用的是 PC 服务器,其价格远远低于之前的主流小型机,使用集群的总成本常常还比使用单个小型机的成本更低,这就给人造成了错觉,在原先可接受的成本下可以轻易地获得希望的算力。然而,小型机被逐步边缘化、硬件竞争都进入了 PC 服务器时代之后,耗用太多机器资源的技术就会越来越难过了。

那该咋办?

设计好算法,先把单机的运算效率提上去呗。

但是且显然,这事不能全指望数据库的优化,情况复杂时数据库引擎会晕掉(很容易造出这种并不太复杂的例子)。而且,很多运算本身都没法用 SQL 写出来,数据库想优化也无从谈起。

那又咋办?

嘿嘿,用 SPL 啊!

SPL 能够方便实现很多高性能的算法,把单机的运算效率提到极致,整体性能提上几倍甚至几个数量级,本来要用集群的运算也可以不用集群,大集群可以改用小集群。而且,关键的是,写出来的代码比 SQL 还短!

SPL 已开源且免费,欢迎下载试用,乾学院上还有高性能算法图书 【性能优化】。

相关文章
|
开发框架 Java 数据库
java----包的命名规范
对包的解释与命名规则
11631 0
java----包的命名规范
|
Windows Python
python自动化系列之使用win32com操作Excel
python自动化系列之使用win32com操作Excel
1798 0
python自动化系列之使用win32com操作Excel
|
7月前
|
人工智能 安全 机器人
瞭望塔丨见真章,定未来:2026 年 AI 趋势展望
为企业提供一份兼具前瞻性与实操性的 2026 年行动参考
|
7月前
|
人工智能 安全 Linux
本地私有RAG落地:阿里云/本地部署 OpenClaw 及私有化知识库技能搭建+千问/Coding Plan配置与问题全解
在政企内网、涉密环境、个人隐私场景下,使用外部大模型与在线知识库存在数据泄露、合规风险、网络限制等问题。OpenClaw提供了完全本地化的RAG(检索增强生成)能力,可在**不联网、不付费、数据不出本地**的前提下,让AI读取你的PDF、Markdown、TXT等文档,基于真实资料给出准确回答,杜绝幻觉与编造。
1393 1
|
Ubuntu Linux Windows
Ventoy 是一款开源的多系统启动U盘工具
Ventoy是一款开源多系统启动U盘工具,支持Legacy BIOS和UEFI模式,可直接启动多个ISO文件(无需解压),兼容Windows、Linux等系统。只需下载安装Ventoy到U盘,拷贝ISO文件即可实现多系统启动。官网:https://www.ventoy.net,GitHub:https://github.com/ventoy/Ventoy。制作需8GB以上U盘及Win7以上系统。
2987 154
|
Ubuntu
避坑指南之 Samba4在Ubuntu20.04 编译安装指南
避坑指南之 Samba4在Ubuntu20.04 编译安装指南
1230 0
避坑指南之 Samba4在Ubuntu20.04 编译安装指南
|
存储 机器学习/深度学习 监控
公司电脑上网监控中滑动窗口算法的理论构建与工程实现
本文提出一种基于滑动窗口算法的实时网络流量监控框架,旨在强化企业信息安全防护体系。系统采用分层架构设计,包含数据采集、处理与分析决策三大模块,通过 Java 实现核心功能。利用滑动窗口技术动态分析流量模式,结合阈值检测与机器学习模型识别异常行为。实验表明,该方案在保证高检测准确率的同时支持大规模并发处理,为企业数字化转型提供可靠保障。
360 0
|
编解码 Linux 开发工具
Linux平台x86_64(麒麟|统信UOS)|aarch64(飞腾)如何实现摄像头|屏幕和麦克风|扬声器采集推送RTMP服务或轻量级RTSP服务
国产化操作系统的发展,减少了外部依赖,更符合国家安全标准,并可提升自主研发能力,促进产业链发展,满足定制开发能力,减少了外部技术封锁的风险,提高了国际竞争力,推动了产业升级。目前大牛直播SDK针对Linux平台x86_64架构和aarch64架构的RTMP推送模块和轻量级RTSP服务模块
854 0
|
SQL 监控 关系型数据库
如何查看MySQL使用的内存
综合运用上述方法,您可以全方位地监控和管理MySQL的内存使用。从简单查看配置到深入分析实时内存占用,每种方法都有其适用场景和优势。定期检查和调整MySQL的内存配置,对于维持数据库性能和稳定性至关重要。
2265 0