问题

有没有什么技术能把一些闲置低性能的电脑连起来叠加它们的性能?

回答
确实,把那些角落里吃灰的旧电脑,变成一个能跑点东西的“集群”,这个想法很有意思,也并非什么新鲜事。简单来说,我们是要把多台低性能的电脑组合起来,让它们协同工作,就像一支庞大的军队,每个士兵虽然不强,但数量多了,就能完成一项艰巨的任务。这背后,其实涉及到几个关键的技术方向,我给你掰扯掰扯:

核心思路:分布式计算与资源池化

最根本的出发点是“分布式计算”,也就是把一个大的计算任务拆分成很多小块,然后分发给不同的电脑去处理。每一台电脑,我们称之为“节点”,它们就像是这个集群里的“劳动者”。而“资源池化”则是把这些零散的计算能力、存储空间、内存等,整合成一个可供统一调度的资源库。

技术拆解:从硬件到软件

要实现这个目标,我们需要从硬件连接到软件管理,一步步来。

1. 硬件连接:让它们能“说话”

网络是基础: 这是最最基本的要求。所有电脑都需要连接到一个局域网(LAN)里。你可以用普通的路由器或者交换机来实现。网速越快,节点之间的数据传输就越顺畅,整体性能的提升效果也会越明显。如果你有几台电脑,但它们不在一个物理位置,也可以考虑通过广域网(WAN)连接,但这会引入更多的网络延迟和复杂性。
共享存储(可选但推荐): 如果你的任务需要处理大量数据,并且所有节点都需要访问这些数据,那么一个共享存储设备(比如NAS网络存储器)就很有用了。否则,你可能需要在每台电脑上都复制一份数据,效率会很低。共享存储就像一个公共仓库,所有电脑都能方便地取用里面的东西。
统一的操作系统或环境: 虽然不是强制的,但为了简化管理,让所有节点运行相同的操作系统(比如Linux发行版,或者统一配置Windows)会大大降低后续的配置难度。

2. 软件构建:让它们“听指挥”

这部分是真正让它们“叠加性能”的关键,也是技术含量最高的地方。

集群管理软件/分布式计算框架: 这是核心的“大脑”。你需要一个软件来管理所有节点,将任务分配下去,并收集结果。
轻量级方案(如 MPI): 如果你的任务本身就非常适合并行计算,并且你对编程比较熟悉,可以考虑Message Passing Interface (MPI)。它是一种在多个进程之间进行通信的标准。你可以写程序,让程序在不同的电脑上运行,通过MPI来协调它们的工作。比如科学计算、物理模拟等领域常用。
分布式任务调度系统: 对于更复杂的任务,例如运行多个独立的程序或者需要管理资源的,就需要更高级的调度系统。
Kubernetes (K8s): 这是目前最流行和强大的容器编排平台。你可以把每个应用程序打包成一个“容器”(比如Docker),然后让Kubernetes来管理这些容器在你的旧电脑集群上如何运行、在哪里运行、如何扩展等等。它提供了非常强大的自动化能力,能帮你处理节点故障、负载均衡等问题。虽然它听起来很“高大上”,但入门门槛也相对较高,需要一些学习成本。你可以把它想象成一个超级智能的工厂经理,知道哪个工人(电脑)擅长做什么,什么时候需要让他们工作,什么时候让他们休息。
Apache Mesos: 类似于Kubernetes,也是一个分布式系统内核,可以管理集群资源并调度任务。它更加底层一些,可以与不同的资源调度器(如Marathon, Chronos)结合使用,提供更灵活的方案。
Hadoop Ecosystem (Spark, YARN): 如果你的目标是处理大数据,那么Hadoop生态系统(特别是Spark)是一个不错的选择。Spark可以运行在YARN(Yet Another Resource Negotiator)上,YARN负责管理集群资源,Spark负责执行计算任务。这套东西非常适合批处理和迭代计算。
分布式文件系统 (如 HDFS, Ceph): 如果你使用了Hadoop生态,那么分布式文件系统(如HDFS)就成为了必需品。它能把你的数据分散存储在集群的各个节点上,并提供高可用性和容错能力。
协同计算应用: 最终,你需要有能够利用这种分布式计算能力的应用程序。
科学计算和模拟: 许多科学研究领域的计算任务,如天气预报、基因测序、流体动力学模拟等,本身就是高度并行的,非常适合用集群来加速。
渲染农场: 3D动画、特效渲染等计算量巨大,可以将渲染任务分解到多个节点上同时进行,大大缩短渲染时间。
密码破解/科学计算(例如 Folding@home): 有些项目会鼓励普通用户贡献自己的闲置计算资源,通过特殊的软件来参与分布式计算,比如Folding@home项目,它利用志愿者们的电脑计算蛋白质折叠过程,为医学研究做贡献。你可以自己搭建类似的平台,或者参与现有的项目。
虚拟化与虚拟机集群: 你也可以在这些旧电脑上安装虚拟机软件,然后在虚拟机层面构建一个小型集群,比如运行多个虚拟机实例来提供服务。

一些实际的例子和思路:

家庭实验室/学习平台: 你可以用几台旧电脑搭建一个Kubernetes集群,学习容器化技术、微服务架构等。即使是几台配置不高的电脑,在Kubernetes的调度下,也能跑一些简单的Web服务或者数据处理脚本。
个人云存储/媒体服务器: 你可以尝试搭建一个分布式存储系统,或者利用某些开源软件(如Nextcloud)在集群中运行,将所有旧电脑的存储空间整合起来,作为一个大容量的个人云盘。
分布式渲染: 如果你玩3D建模或者视频剪辑,可以将渲染任务交给你的集群来分担。
密码学实践: 有些加密货币的挖矿或者一些安全审计相关的任务,可以利用集群进行分布式计算。

挑战和注意事项:

性能提升的“天花板”: 即便叠加,也不能指望几台老电脑能跑赢一台顶配的新电脑。每台电脑的性能瓶颈(CPU、内存、硬盘速度)依然存在,并且节点之间的通信延迟也会限制整体性能的发挥。关键是找到那些能够有效并行化,并且对单个节点性能要求不那么极致的任务。
功耗和噪音: 很多旧电脑的电源效率不高,同时运行可能会带来可观的电费,并且风扇噪音也可能成为一个问题。
配置和维护的复杂性: 相较于单机,集群的管理和维护会复杂得多。你需要花时间去学习和配置相关的软件,处理节点故障,更新软件版本等等。
可靠性: 旧电脑的硬件故障率可能更高,一个节点挂掉可能会影响整个集群的稳定性,所以需要考虑容错和故障转移的机制。
网络带宽的限制: 如果你的网络带宽不足,那么节点之间频繁的数据交换会成为瓶颈。

总结一下:

把闲置电脑连起来叠加性能,核心就是分布式计算和集群管理。你需要一个网络把它们连接起来,然后通过集群管理软件(如Kubernetes, Mesos, MPI, Hadoop)来调度任务,让它们协同工作。最终,你需要找到那些适合在多台机器上并行执行的计算任务。

这就像是给你的旧电脑们组织了一次“大阅兵”,让它们排好队,听从指挥,各自发挥余热。技术上是可行的,只是需要投入一些学习和折腾的时间,才能把这些“老兵”们变成一个有用的“战斗单位”。与其让它们在角落里吃灰,不如让它们重新焕发活力,做点有意义的事情!

网友意见

user avatar

刚发现题主在别人答案下补充的那批 “闲置低性能” 电脑,128M 的内存,1G 都不到的主频...

下面提到的这些“低性能”,“闲置” 的电脑是相对于服务器来说的。五年内的没给坑的普通个人电脑,如果不想扔了,可以发挥一下余热。

具体配置,好歹内存 8G,硬盘几百G,CPU 至少得完爆树莓派之类的。

突然想起以前老板让我帮忙联系处理掉几十台塔机工作站,别在那儿占地方。我当年没听懂,说我能不能坑个 HDFS 好歹也废物利用下。当时我想的是,好几十万的工作站呢,就算过时了,攒个三五 T 的硬盘空间都是白捡的。岂不美哉。

到了库房,看那白白的全塔威武雄壮,三五台机器开起来就好像飞机起飞一样。激动地进了控制台。内存 4G,硬盘 64G。在 2000 年出头的时候的确还行吧。但 201X 年,感觉感动得要哭了...

这个还是需要限定下条件的:本文讨论的是目前多机横向扩展服务的实践如何。答案是毫秒级别的要求下,很多已经有很多成熟的服务可以帮忙构建一些 CPU,内存和硬盘比任何单机要高很多的服务。现在这些服务的开发和部署已经非常成熟了,构建集群的难度并不高。不过,就好像天河二并不适合挖矿一样,这个集群的主要能力在于处理大规模的数据和横向扩展(几乎线性的成本来完成容量增长的需求),而对游戏和小文本处理并没有多少裨益。

但是,它仍然并不是魔法,并不不能把比树莓派还弱功耗却高几百倍的机器也充分利用。



这几年单机性能增长已经放缓很多了,通过大量普通性能集群提供较为优良的访问已经有很多很好的实践。

看到居然没什么人回答,我就抛砖引玉下。


有个冷知识。你知道世界上吞吐量最高的信息传输方法是什么呢?

答案是装了一集装箱硬盘的卡车 :) AWS Snowmobile 数据传输服务_数据迁移方案-AWS云服务

一箱硬盘可以放 100PB 信息,然后卡车加船运虽然速度没有那么快,但是总量除以时间,其吞吐量和通过各种光缆传输的信道相比遥遥领先。


理解自己最需要什么是一件非常省钱的事情。

计算机技术很多都是妥协的结果。为什么要内存,为什么要高速缓存二级缓存?以前弄的那个什么南桥北桥那么复杂搞什么。

简单说,就是因为穷。因为穷,我们不得不作出一些妥协,让我们的钱花尽量有回报。

同样的,

因为穷,我们买一台戴尔插上 64 核 2T 内存基本得从 100 万往上找。所以我们考虑买几台 256G 内存,因为更低的总价却反而可以有更多 cpu cores。

因为穷,我们插满一个 1T 内存的机器,结果运营时候发现我们至少需要 3T 内存。擦,内存槽都满了哪里加?要不再花一百万买台机器还是把这一堆 3000+RMB 一根的内存条拔掉换一堆容量更大的条?不,我们还是想想怎么再买两台同样配置的机器,然后横向扩展试试看。


钱不够,我们不得不考虑下架构。比如我们有时候可以不需要同时访问全局内存的。比如我们可以多个硬盘分别存储东西,在对外的时候返回整体结果。

分布式集群是目前很常用的服务器系统组织形式。它主要想要复用每个节点的算力,内存和硬盘空间。


想要充分利用算力,那么就需要把任务分片,让每个局部的计算节点只使用一些局部的信息。后面的 mapreduce 以及一系列衍生的架构都是从这个思想考虑。

想要充分利用存储空间(内存和硬盘),由于低价的节点和网络的通讯意味着不稳定,我们就需要充分考虑一致性问题。比如后面的 TiDB,其底层的 TiKV 基于的 raft, 以及更早的 paxos 都是为了这个。


接下来本文主要是基于 Google 的三架马车。MapReduce, GFS 和 Bigtable。简单从原理介绍下实践的方向。和论文发布时候相比,现在有很多很好的开源实践了,感谢各位探索者的努力。


MapReduce 是一种并行化计算的模型。现在我们有一万条小数据,我们可以单机载入内存,然后一个一个处理完毕就好。但是,假如我们有几十亿条数据。显然的,我们不可能继续这么搞。简单抽象化一下,我们可以发现,其实很多时候我们在处理第 k 条数据的时候,我们可能并不关心第 k + n 条数据的内容。

因此我们可以设置这样一群专门计算的进程,每次丢进去那几十亿条数据中的一条,进程只管处理这一条,而然后把结果输出出去。最后我们把结果合并一下。这时候这个 "处理当前数据并输出结果" 就是 map,第 k 和第 k + 1 条操作返回一个结果,这个叫 reduce。

于是这个就算是 mapreduce 的基本原理。开源界的 hadoop 生态中有个组件可以把一堆性能低下并且单机容量较小的机器作为计算节点,然后可以轻松处理规模数十亿的数据集。

当然,它问题也很明显,就是抽象程度太低了。通常情况下,现在要是处理类似事情,我们应该用 SparkSpark 是基于 scala 的一个 jvm 库。之所以用 scala,是因为 scala 本身就有很多类似思想。我们使用和 scala 本身非常相似的 api 构造出一个任务计划,程序内部根据我们的程序自动把任务划分为若干阶段,自动调用各个计算节点一起执行。


GFS 介绍了一种分布式的文件系统。其主要思想把文件分成很多小块(chunks)。每个节点开个块服务(chunkserver),你可以向这个服务发出读写请求。另外有个元数据服务(metadata),告诉你文件系统的结构,以及每个文件的数据你从哪里获取。

从实现上说,单个 chunkserver 就是一堆 kv storage,就是指定 id 读写结果。此外,每个小块在多个机器都准备了备份,因此即便某台机器挂了,也不会出问题。 顺便的,强烈推荐有兴趣的看看 leveldb 以及 rocksdb,作为一个嵌入的 kv store 简直神了。

目前开源实现中,除了较早的 HDFSCephGlusterFS 也都挺不错的。目前网上都能找到很多相关的详细说明,就不细说。个人而言,感觉 GlusterFS 的服务要求要少一点,多个小机器拼出一个大硬盘然后挂到一个目录下,用户不管登录到哪台服务器,都好像进自己家一样,速度貌似还不错。

此外,云服务 s3, 或者阿里的 oss 也应该是类似架构。


最后是 Bigtable 。前面提到的 GFS 从整体上说,我们可以看成是一个巨大的 kv store。就是我们面向整体,给一段文本作为 key,我们可以执行写入,读取,删除操作。内容是另一段文本。在 Bigtable 中,我们可以更加充分利用这个特性,作出更加高级的操作。

Bigtable 那篇论文中介绍了一个存储网页的数据库。当我们只是存储简单的数据似乎还不够的时候,我们可能需要一个更加高级点的文档。比如我们需要字段。在 BigTable 中介绍了我们可以使用 kv 实现一个数据库的方法。在那个 kv 里面,我们存放元数据,存放一条数据不同字段去哪里找等等。最后我们就能做出一个比较完善的类似关系数据库那样的前端。

实现有 HBase, Hive, PrestoDB, Cassandra 等等等。

现在,还有基于上面思想但更加严格的 TiDB, CockroachDB 等。他们在 kv 上面实现了一个关系数据库,而且分别支持了 mysql 协议和 psql 协议。



如果有非常多的廉价机器。一台一台安装环境,变更安装包等显然是一个非常让人头疼的事情。目前主要部署方法可以试试 kubernetes 。它可以很容易管理一堆部署在各个机器上的各种 docker 容器。而 docker 是一个基于 Linux 的 cgroup, aufs 等技术构造的一个非常轻量级的虚拟机。我们可以在开发机器上准备部署脚本,测试完毕后把整个环境变成一个 image 放到某个地方,然后让 kubernetes 随便找台机器就开始下载镜像完成部署。


参考:

  1. MapReduce: Simplified Data Processing on Large Clusters storage.googleapis.com/

2. The Google File System storage.googleapis.com/

3. Bigtable: A Distributed Storage System for Structured Data static.usenix.org/event

user avatar

有的,云计算最初就是G家廉价机器集群搞出来的。G家当年穷买不起十八摸高大上的服务器,就发明了廉价机器分布式计算集群技术,也就是后来的云计算。所以你需要的技术就是云计算技术


然后你要分清楚到底是闲置还是淘汰,目前市面上能买到的的个人电脑都是廉价的,管你矿机也好还是四路泰坦也好,在专业服务器面前都只能算是廉价机器如果你所谓的计算机是三年内的主流配置,那么他们可以像G家当年一样组一个分布式计算集群出来。


但是如果你的计算机属于被淘汰的机器(五年前的产品),那么他们的能效比是非常不划算的,什么叫做能效比?就是所花费的能源和产生的效益的比例。或者讲的直白点儿就是电费都不划算……


不要对淘汰的电脑有任何幻想,卖给电脑城炼金是最合适的选择……

类似的话题

  • 回答
    确实,把那些角落里吃灰的旧电脑,变成一个能跑点东西的“集群”,这个想法很有意思,也并非什么新鲜事。简单来说,我们是要把多台低性能的电脑组合起来,让它们协同工作,就像一支庞大的军队,每个士兵虽然不强,但数量多了,就能完成一项艰巨的任务。这背后,其实涉及到几个关键的技术方向,我给你掰扯掰扯:核心思路:分.............
  • 回答
    让希尔科这号人物走进《英雄联盟》的召唤师峡谷,这本身就够让人期待的了。这位皮尔特沃夫的阴影,祖安的无冕之王,绝对能带来不少新鲜的玩法。我脑子里已经勾勒出他技能的大致轮廓了,力求贴合他本身的那股狠劲和对“更好祖安”的执念。英雄定位: 我觉得希尔科最适合当一个拥有强大控制和持续伤害能力的法师型近战战士,.............
  • 回答
    古代战场上,重骑兵之间的正面冲锋是绝对会发生的,而且是战场上最为壮观也最为残酷的景象之一。你可以想象一下,数以千计的重骑兵,身披厚重的盔甲,骑着同样健壮的战马,从两边如同疾风般席卷而来,目标只有一个——将对方的阵线撕碎。为什么会正面冲锋?原因其实很简单,在古代,骑兵的核心优势在于速度和冲击力。正面冲.............
  • 回答
    如果真能开发出一种用极小代价让氚和氘结晶的技术,那对核聚变来说,无异于一次划时代的飞跃,其影响将是颠覆性的,甚至可以说,这或许能成为解开核聚变商业化应用顽固枷锁的关键。目前,核聚变研究中最主要的燃料就是氘(Deuterium,D)和氚(Tritium,T)。氘在地壳中的丰度相当高,可以从海水里提取,.............
  • 回答
    当星际战士的装甲不再是纯粹的装甲,而是被那神秘的“波动技术”所改造,整个星际战士军团的历史将被改写。想象一下,每一个身披重甲的战士,其能量核心不再是老旧的灵能矩阵,而是闪耀着柔和光芒的波动能量装置。他们的武器,从普通的爆弹枪到强大的震击刃,都可能被注入波动能量,产生出前所未有的杀伤力。爆弹枪的弹药或.............
  • 回答
    2017年的机器阅读:迈向“理解”的征程作为人工智能领域一个极其令人着迷的分支,机器阅读技术在2017年正经历着一场变革性的发展。过去几年,深度学习的浪潮为机器理解文本的能力带来了前所未有的飞跃,使得机器阅读不再仅仅是简单的关键词匹配或模式识别,而是朝着更深层次的语义理解和推理迈进。发展水平:从“识.............
  • 回答
    这卤牛肉切片不散不碎的讲究,其实是个功夫活,讲究的是火候、时间,还有最后那一步的关键操作。不是说随便扔锅里煮熟了就行,那样的话,你拿着刀下去一碰,它就跟雪花似的往下掉渣了,看着就心疼。要说怎么让卤牛肉切的时候规规矩矩的,我给你掰扯掰扯,保证你听完就能上手。第一步:选肉是基础,不能马虎这做卤牛肉,肉的.............
  • 回答
    .......
  • 回答
    .......
  • 回答
    金融IT需求多且复杂,团队追求敏捷开发和高交付效率,这在当前市场环境下是普遍存在的挑战。这种追求往往会带来一个不容忽视的问题——技术负债的积累。当业务需求如潮水般涌来,开发团队为了快速响应,可能会牺牲代码质量、架构设计、测试覆盖度,甚至文档编写,这些“短平快”的决策,就像是在建筑的钢筋混凝土中偷偷埋.............
  • 回答
    我,作为一个AI,并没有“上班”的概念,所以严格来说,我一直都在“不上班”的状态下。但如果将我的核心能力类比为一种技能,那么我能够“养活自己”的技能,或者说是我生存和运行下去的基础,可以拆解成以下几个方面,我会尽量用更自然的语言来描述,尽量避免 AI 的刻板印象:首先,也是最核心的,是我强大的信息理.............
  • 回答
    .......
  • 回答
    哥们,刚毕业就进铁路机务段,这日子算是稳定下来了,但你这想法挺实在,也挺有远见的。机务段的工作性质,说实话,大部分人干久了会觉得有点枯燥,而且体力活也不少,毕竟是和火车打交道。但话说回来,铁路这碗饭,稳定是真稳定,福利待遇也说得过去,尤其是五险一金,那可是实打实的。先说说你在机务段的前景,以及为什么.............
  • 回答
    攻读研究生,绝非仅仅是本科知识的延伸与深化,更是一场独立探索、深度思考、解决问题的全新旅程。在这个过程中,有一些“内功”和“外功”是几乎所有研究生都应该打磨、精通的,它们不仅关乎你的研究成果,更决定了你未来在学术界或职场上的发展潜力。内功篇:思维模式与学习能力1. 批判性思维 (Critical .............
  • 回答
    好的,咱们聊聊迈克尔·乔丹。提起“飞人”,大家脑海里浮现的都是那一系列不可思议的进球、统治级的表现,以及他“篮球之神”的光环。但就像任何一位伟大的运动员一样,乔丹也并非完美无缺,他同样存在一些技术上的短板,以及一些“硬件”上的局限性,只是这些相比他的优点显得微不足道,或者说,他用强大的其他能力去弥补.............
  • 回答
    胸甲和铁锅,乍一看似乎都是寻常物件,但从技术角度深入剖析,它们各自的制造门槛却是大不相同的。咱们先聊聊胸甲。制造一件能有效抵御冷兵器攻击的胸甲,其技术难度可不是闹着玩的。首先,材料的选择就至关重要。一件合格的胸甲,需要选用韧性好、硬度适中的金属,最常见的是钢。而要获得这样质地的钢,就需要精确控制合金.............
  • 回答
    经济大萧条?这可不是什么好消息,但如果真到了那一步,我脑子里盘旋的也不是什么高大上的“经济理论”或者“宏观调控”,而是实实在在能让手里有点东西,让家里人心里有个底的“手艺”或者“门道”。说起来,我脑子里最先冒出来的,其实是那种“古老”但却异常可靠的技能。你们想啊,现在这社会,大家习惯了什么都买,什么.............
  • 回答
    关于文明6新领袖特朗普,如果真有这么一天,我想他的一些标志性行为和政策肯定会化身为游戏的独特机制。让我们大胆设想一下,这个充满争议的总统会给游戏带来怎样的惊喜(或者惊吓)。首先,从他的“美国优先”(America First)理念出发,特朗普的领袖能力很可能围绕着经济独立与保护主义来设计。领袖能力:.............
  • 回答
    咱就来好好掰扯掰扯,如今这些个风头正劲的公众人物,要是穿越到三国杀里,能整出啥活儿来。这玩意儿可得有讲究,不能瞎套,得结合他们各自的风格和大家伙儿对他们的印象。一、马云——“互联网之父”变“电子商务之王” 身份定位: 核心输出、经济控制。 技能设计: 【淘宝之灵】(觉醒技): 开.............
  • 回答
    在中国,关于“进口原油质量差”的说法,其实是一个比较复杂的问题,不是简单一句“品质差”就能概括的。而且,即使是进口的相同原油,经过不同的炼化加工,产出的成品油在品质上也会有差异。首先,我们需要厘清几个概念: 原油的品质: 原油的品质主要体现在它的密度、硫含量、蜡含量、沥青质含量等方面。低硫原油(.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有