龙空技术网

用小白都能看懂的大白话告诉你:什么是分布式计算系统?

石杉的架构笔记 748

前言:

今天兄弟们对“分布式计算基础”大致比较讲究,我们都想要知道一些“分布式计算基础”的相关内容。那么小编在网摘上收集了一些有关“分布式计算基础””的相关资讯,希望我们能喜欢,我们快快来学习一下吧!

欢迎关注头条号:石杉的架构笔记

周一至周五早八点半!精品技术文章准时送上!!!

精品学习资料获取通道,参见文末

目录

1、从一个新闻门户网站案例引入

2、推算一下你需要分析多少条数据?

3、黄金搭档:分布式存储+分布式计算

这篇文章聊一个话题:什么是分布式计算系统?

(1)从一个新闻门户网站案例引入

现在很多同学经常会看到一些名词,比如分布式服务框架,分布式系统,分布式存储系统,分布式消息系统。

但是有些经验尚浅的同学,可能都很容易被这些名词给搞晕。所以这篇文章就对“分布式计算系统”这个概念做一个科普类的分析。

如果你要理解啥是分布式计算,就必须先得理解啥是分布式存储,现在我们从一个小例子来引入。

比如说现在你有一个网站,咱们假设是一个新闻门户网站好了。每天是不是会有可能上千万用户会涌入进来看你的新闻?

好的,那么他们会怎么看新闻呢?

其实很简单,首先他们会点击一些板块,比如“体育板块”,“娱乐板块”。

然后,点击一些新闻标题,比如“20年来最刺激的一场比赛即将拉开帷幕”,接着还可能会发表一些评论,或者点击对某个好的新闻进行收藏。

那么你的这些用户干的这些事儿有一个专业的名词,叫做“用户行为”。

因为在你的网站或者APP上,用户一定会进行各种操作,点击各种按钮,发表一些信息,这些都是各种行为,统称为“用户行为”。

好了,现在假如说新闻门户网站的boss说想要做一个功能,在网站里每天做一个排行榜,统计出来每天每个版块被点击的次数,包括最热门的一些新闻。

然后呢,在网站后台系统里需要有一些报表,要让他看到不同的编辑产出的文章的点击量汇总,做一个编辑的绩效排名,还有很多类似的事情。

这些事情叫什么呢?你可以认为是基于用户行为数据进行分析和统计,产出各种各样的数据统计分析报表和结果,供网站的用户、管理人员来查看。

这也有一个专业的名词,叫做“用户行为分析”。

(2)推算一下你需要分析多少条数据?

好,咱么继续。如果你要对用户行为进行分析,那你是不是首先需要收集这些用户行为的数据?

比如说有个哥儿们现在点了一下“体育”板块,你需要在网页前端或者是APP上立马发送一条日志到后台,记录清楚“id为117的用户点击了一下id位003的板块”。

同样,这个东西也有一个专业的名词,叫做“用户行为日志”。

那你可以来计算一下,这些用户行为如果采用日志的方式收集,每天大概会产生多少条数据?

假设每天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、内存等计算资源来进行计算。

这种分布式计算的方式,对于超大数据集的计算可以提升几十倍甚至几百倍的效率,其实这个理论和概念,也是大数据技术的基础。

比如现在最流行的大数据技术栈里,Hadoop HDFS就是用做分布式存储的,他可以把一个超大文件拆分为很多小的数据块放在很多机器上。

而像Spark就是分布式计算系统,他可以把计算任务分发到各个机器上,对各个数据块进行并行计算。

以上就是用大白话+画图,给小白同学们科普了一下分布式计算系统的相关知识,相信大家看了之后,对分布式计算系统,应该有一个初步的认识了。

END

私信头条号,发送:“资料”,获取更多“秘制” 精品学习资料

如有收获,请帮忙转发,您的鼓励是作者最大的动力,谢谢!

一大波微服务、分布式、高并发、高可用的原创系列文章正在路上,

欢迎关注头条号:石杉的架构笔记

周一至周五早八点半!精品技术文章准时送上!!!

十余年BAT架构经验倾囊相授

推荐阅读

1、拜托!面试请不要再问我Spring Cloud底层原理!

2、微服务注册中心如何承载大型系统的千万级访问?

3、「性能优化之道」每秒上万并发下的Spring Cloud参数优化实战

4、「“剁手党”狂欢的背后」微服务架构如何保障99.99%的高可用?

5、兄弟,用大白话告诉你小白都能看懂的Hadoop架构原理

6、大规模集群下Hadoop NameNode如何承载每秒上千次的高并发访问

7、「性能优化的秘密」Hadoop如何将TB级大文件的上传性能优化上百倍

8、拜托,面试请不要再问我TCC分布式事务的实现原理!

9、最终一致性分布式事务如何保障实际生产中99.99%高可用?

10、拜托,面试请不要再问我Redis分布式锁的实现原理

11、Hadoop底层算法如何优雅的将大规模集群性能提升10倍以上?

12、亿级流量系统架构之如何支撑百亿级数据的存储与计算

13、亿级流量系统架构之如何设计高容错分布式计算系统

14、亿级流量系统架构之如何设计承载百亿流量的高性能架构

15、亿级流量系统架构之如何设计每秒十万查询的高并发架构

16、亿级流量系统架构之如何设计全链路99.99%高可用架构

17、七张图彻底讲清楚ZooKeeper分布式锁的实现原理

18、大白话聊聊Java并发面试问题之volatile到底是什么?

19、大白话聊聊Java并发面试问题之Java 8如何优化CAS性能?

20、大白话聊聊Java并发面试问题之谈谈你对AQS的理解?

21、大白话聊聊Java并发面试问题之微服务注册中心的读写锁优化

22、互联网公司的面试官是如何360°无死角考察候选人的?(上篇)

23、互联网公司面试官是如何360°无死角考察候选人的?(下篇)

24、「Java进阶面试系列之一」你们系统架构中为何要引入消息中间件?

25、「Java进阶面试系列之二」系统架构引入消息中间件有什么缺点

26、「行走的Offer收割机」一位朋友斩获BAT技术专家Offer的面试经历

27、「Java进阶面试系列之三」消息中间件在你们项目里是如何落地的?

28、扎心!线上服务宕机时,如何保证数据100%不丢失?

29、 一次JVM FullGC的背后,竟隐藏着惊心动魄的线上生产事故!

30、「高并发优化实践」10倍请求压力来袭,你的系统会被击垮吗?

31、消息中间件集群崩溃,如何保证百万生产数据不丢失?

32、亿级流量系统架构之如何在上万并发场景下设计可扩展架构(上)?

33、亿级流量系统架构之如何在上万并发场景下设计可扩展架构(中)?

34、亿级流量系统架构之如何在上万并发场景下设计可扩展架构(下)?

35、亿级流量架构第二弹:你的系统真的无懈可击吗?

36、亿级流量系统架构之如何保证百亿流量下的数据一致性(上)

37、亿级流量系统架构之如何保证百亿流量下的数据一致性(中)?

38、亿级流量系统架构之如何保证百亿流量下的数据一致性(下)?

39、互联网面试必杀:如何保证消息中间件全链路数据100%不丢失(1)

40、互联网面试必杀:如何保证消息中间件全链路数据100%不丢失(2)

41、面试大杀器:消息中间件如何实现消费吞吐量的百倍优化?

42、兄弟,用大白话给你讲小白都能看懂的分布式系统容错架构

43、从团队自研的百万并发中间件系统的内核设计看Java并发性能优化

44、如果20万用户同时访问一个热点缓存,如何优化你的缓存架构?

45、「非广告,纯干货」英语差的程序员如何才能无障碍阅读官方文档?

46、面试最让你手足无措的一个问题:你的系统如何支撑高并发?

47、Java进阶必备:优雅的告诉面试官消息中间件该如何实现高可用架构

48、「非广告,纯干货」中小公司的Java工程师应该如何逆袭冲进BAT?

49、拜托,面试请不要再问我分布式搜索引擎的架构原理!

50、互联网大厂Java面试题:使用无界队列的线程池会导致内存飙升吗?

51、「码农打怪升级之路」行走江湖,你需要解锁哪些技能包?

52、「来自一线的血泪总结」你的系统上线时是否踩过这些坑?

53、【offer收割机必备】我简历上的Java项目都好low,怎么办?

54、【offer去哪了】我一连面试了十个Java岗,统统石沉大海!

55、支撑日活百万用户的高并发系统,应该如何设计其数据库架构?

56、高阶Java开发必备:分布式系统的唯一id生成算法你了解吗?

57、尴尬了!Spring Cloud微服务注册中心Eureka 2.x停止维护了咋办?

58、【Java高阶必备】如何优化Spring Cloud微服务注册中心架构?

59、面试官:消息中间件如何实现每秒几十万的高并发写入?

60、【非广告,纯干货】三四十岁大龄程序员,该如何保持职场竞争力?

61、面试官:请谈谈写入消息中间件的数据,如何保证不丢失?

62、【生产实践总结】支撑百万连接的系统应该如何设计其高并发架构?

63、面对BAT大厂的竞争对手时,小公司Java工程师是如何败北的?

64、【纯干货分享】小公司出身的我,是如何拿下知名独角兽公司offer

标签: #分布式计算基础