Spark :: 大画Spark(1)——Spark的Dispatcher原理

背景在Spark的网络环境中,Netty是进行RPC通讯的底层通讯模块,在Netty之上,Spark构建起了一整套的通信发送与接收处理机制,这个机制涉及到了Spark的Dispatcher,MessageLoop,Endpoint,Inbox等一系列的概念和关系,理解诸如这些概念和关系是很多Spark初学者的挡路石,为了能让初学者以及一直使用Spark的同学深入了解这些概念和内容,我准备写一个专题,叫做《大画Spark》,通过一系列相视的生活中的例子,大家都能听懂的常识,以及生动的插画(这块以后准备和插画
摘要由CSDN通过智能技术生成

背景

在Spark的网络环境中,Netty是进行RPC通讯的底层通讯模块,在Netty之上,Spark构建起了一整套的通信发送与接收处理机制,这个机制涉及到了SparkDispatcherMessageLoopEndpointInbox等一系列的概念和关系,理解诸如这些概念和关系是很多Spark初学者的挡路石,为了能让初学者以及一直使用Spark的同学深入了解这些概念和内容,我准备写一个专题,叫做《大画Spark》,通过一系列相视的生活中的例子,大家都能听懂的常识,以及生动的插画(这块以后准备和插画师姐姐一起合作)来讲清楚Spark的逻辑。

在这个过程中,无论是技术同学还是非技术同学,你们会发现,所有的复杂架构模型最终都是上升到一套管理哲学体系,而不是简单的代码的堆砌,所以,程序员→Leader→架构师→技术总监→CTO的成长之路其实也就是一个对这个世界不断认知、自我抽象了解、理解、举一反三,从而最终自我消化并创新的过程。

问题

你在阅读源代码,或者理解一个架构体系的时候一般怎么做?

搜索概念看网上大牛怎么说

这个是一般人的做法,初级程序员,打开百度,中高级程序员打开google。问题是,这些回答是正确的么?

看官方文档

进阶一点的同学会选择看官方文档,那里有真实详实的介绍,原汁原味,不会有错。问题是,很多原理可能讲的不够细致

参加培训机构

更进阶的同学,为了自己更好更快的了解技术,重金参课,这个方法会有个讨论的圈子,也会有个答疑的渠道,地区会很快的了解很多技术细节。问题是,你消化了么?

看源代码

这是一条无法回头的路,也是一条荆棘密布的路,然而,却是一条最有效的路。走这条路其实建议的是在上面三种选择都走过,或者走过前两种之后,再来走这条路。因为惟有这条路才可以让你真正理解并掌握这门技术

好处

  • 可以了解技术本质,可以更好的在使用的过程中排查问题,降本增效
  • 而在我看来,随着阅历的增长,你会发现,所有好的架构体系下的源代码都是一门非常生动的管理哲学体系,这套体系不仅是你以后去构建技术平台的标准与参考,更是如何去管理企业的黄金标准,而且,并不难,不信?咱们可以看看

困难

在理解一门技术和源代码的时候,都会经历非常折磨且焦虑的过程,一整套架构动辄几十万上百万的代码体系,如何去看?如何去理解?对很多人来说都是一个不可能完成的任务,对我来讲,刚毕业的时候让我去想想写出几十万行代码来完成一个小的系统那简直就是天方夜谭,那个时候的我对于技术其实是有抵触情绪的,但随着工作年限的增加,对于技术的理解和兴趣却在与日俱增,原因就是,这些技术中的原理都是在讲述一个个生动鲜活的故事,而你的不理解仅仅是没有去get到其中的精髓而已,我们可以一起往下看

读不懂

作为不说英文的人群,我们对源代码的理解是一大困难。很多初级程序员的代码中最大一个特带你就是会充斥着汉语拼音,其实,这是我们所有人的诉求,我们渴望从代码中快速理解每一个变量每一个方法每一个类的含义,面向对象OOP所有人都知道,而真正理解的又有几成呢?对象是什么呢?这些对象映射到现实世界又是什么呢?为什么要有面向对象呢?好处在哪里?

举个例子,我们实际工作当中,如果是后端开发的同学,很多都是在ControllerService中写面向过程的批处理,过程无外乎CRUD+缓存,测试的时候解决变量传错的各种低级bug,日复一日年复一年,如果持续做这个过程,为什么不去做嵌入式开发呢?直接把c代码烧到硬件中,效率高提升快,数据结构的理解还会更加深刻

一些基础的英文需要理解到它的本质含义,如Master,Manager,Worker,Executor,Client,Server等等等等,这些基础到不能再基础的词汇恰恰很清晰描述出了层次关系职级体系

跳出定式思维

所以,先要跳出一个老的框架性的思维方式,试着先去理解OOP,理解抽象的概念。

《未来简史》这本书非常推荐,你会发现,我们习以为常的很多东西其实都是想像出来的,国家,社会,公司,期指等等,这些想像出来的东西在我们社会中却又好像是完全存在的。比如一个公司,你就会觉得你每天的办公室,你每天的写字楼就是你的公司,然而,这个写字楼中每个房间只是一个物理客观存在的屋子,挂上了公司的logo就是公司?有个前台就是公司?大家聚集到一起为一个同样的目标每天工作就是一个公司么?你有想过这些事情本质到底是什么么?当有一天公司倒闭了,牌子撤下了,家产变卖了,公司就不复存在了,这个时候在你看来这个公司好像就没有出现过一样,而公司存在的时候为什么又是存在呢?

答案很简单,客观存在的物理现象和事物之上,人类其实抽象和想像出了很多的概念和虚拟的实体,这些实体按照一系列的规则在人类社会中组织着我们的生活,让人们“认为”它们就是客观存在的实体,其实,按照尤瓦尔·赫拉利的说法,那都是人类的想象,其实也是一种抽象。

联想一下

上面跳出定式思维的例子,我们可以做一个联想。

你所在公司的大厦,物理存在。我们把它想做一个巨大的内存。

你的公司,按照我说的观点,是一个想像出来的抽象概念,我们可以定义为一个Java中的Class,叫做ExcitedCorporation.java,当公司建立的时候,我们即new出了一个ExcitedCorporation.class,即在大楼中租用了一层楼,你是公司的CTO,那么ExcitedCorporation中可以有一个叫做CTO的变量,而你的办公室不能被随意闯入,所以应该定义为private,那公司内部可能还有CEO,PMO,各

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值