这篇文章讲一个话题:什么是分布式计算系统?1.来自一个新闻门户案例的介绍现在很多同学经常会看到一些名词,比如分布式服务框架、分布式系统、分布式存储系统、分布式消息系统等。但是有些经验不多的同学可能很容易被这些名词弄糊涂。所以本文对“分布式计算系统”的概念做一个科普分析。要想了解什么是分布式计算,首先要了解什么是分布式存储。下面我们从一个小例子来介绍一下。例如,现在您有一个网站,我们假设它是一个新闻门户网站。有没有可能每天都有几千万用户涌入看你的新闻?好的,那么他们将如何阅读新闻?其实很简单。首先,他们会点击一些版块,比如“体育版块”和“娱乐版块”。然后,点击一些新闻标题,比如“20年来最精彩的比赛即将开赛”,然后你可以发表一些评论,或者点击收藏一些好消息。那么对于你的用户所做的这些事情,有一个专业的术语,叫做“用户行为”。因为在你的网站或者APP上,用户肯定会进行各种操作,点击各种按钮,发布一些信息。这些都是各种各样的行为,统称为“用户行为”。好吧,现在假设新闻门户的老板说他要做一个功能,每天在网站上做一个排行榜,统计每个栏目每天被点击的次数,包括一些最热门的新闻。那么网站的后台系统就需要有一些报表,让他可以看到不同编辑的文章点击量汇总,做一个编辑的业绩排名,等等很多类似的事情。这些东西叫什么?你可以认为是根据用户行为数据进行分析统计,产生各种统计分析报告和结果供网站用户和管理者查看。这还有一个专业术语叫“用户行为分析”。第二,计算你需要分析多少条数据?好的,让我们继续。如果要分析用户行为,首先需要收集这些用户行为的数据吗?比如现在好友点击了“体育”版块,你需要立即在网页前端或者APP后台发送日志,记录清楚“id为117的用户点击了该版块”ID003”。同样,这个东西还有一个专业术语叫“用户行为日志”。那么你可以计算一下,如果将这些用户行为以日志的形式收集起来,每天会产生多少条数据?假设每天有1000万人访问你的新闻网站,平均每人点击、评论、收藏30次,那么就有3亿条用户行为日志。假设每条用户行为日志的大小为100字节,因为它可能包含很多字段,比如他点击的是网页还是手机APP,手机APP使用的是什么操作系统,android还是IOS,有很多字段像这样。那么你每天大约有28GB的??数据,其中总共包含3亿条记录。这3亿条数据,你可以自己写一个Java程序,从一个28GB的巨大日志文件中一条条读取日志进行统计分析计算,直到这3亿条数据计算完,你需要多少时间?认为需要吗?难以想象,按照你计算逻辑的复杂程度,可能需要几十个小时。那么你觉得这个大数据场景下的分析靠谱吗?不可靠的。3、黄金搭档:分布式存储+分布式计算那么这个时候可以先采用分布式存储的方式,将3亿条数据分散在,比如30台机器上,每台机器可以存储1000万条左右数据。一条数据,大概1GB的数据。看下图:然后就可以开始分布式计算了。你可以把统计分析数据的计算任务分成30个计算任务,每个计算任务分配到一台机器上运行。也就是说,专门针对本机本地1GB的数据,对这1000万条数据进行分析计算。这样做的好处是可以依靠30台机器的资源并行进行数据统计和分析,也就是所谓的分布式计算。每台机器的计算结果出来后,可以综合汇总,然后得出最终的分析结果。请看下图。假设你的3亿条数据都放在一个30GB的大文件里,然后你在Java程序里慢慢读取,一条一条计算,需要30个小时。所以现在把计算任务并行到30台机器上,计算速度可以提升30倍。完成计算只需要1小时吗?所以这就是所谓的分布式计算,一般是针对非常大的数据集进行计算,也就是现在很流行的大数据。首先,需要将大数据集拆分成很多数据块分散在多台机器上,然后将计算任务分配到每台机器上,利用多台机器的CPU、内存等计算资源进行计算。这种分布式计算方式对于超大数据集的计算可以提高几十倍甚至上百倍的效率。事实上,这个理论和概念也是大数据技术的基础。比如目前最流行的大数据技术栈中,HadoopHDFS用于分布式存储。它可以将一个非常大的文件拆分成许多小的数据块,并将它们放在许多机器上。而像Spark是一个分布式计算系统,可以将计算任务分发到各个机器上,对每个数据块进行并行计算。以上就是用大白话+画图的方式,给小白同学科普一下分布式计算系统的相关知识。相信看完之后,你应该对分布式计算系统有了初步的了解。
