前言
这次继续分享基础知识,Flink的Runtime知识。也是记录笔记,方便以后自己再回头看。
一、Flink运行时架构
Akka:Akka基于Actor模型,提供了一个用于构建可扩展的(Scalable)、弹性的(Resilient)、快速响应的(Responsive)应用程序的平台。 akka典型的特点:
- 并发模型:基于actor模型,对并发进行高层次的抽象;
- 异步能力:基于actor模型进行通信,天然具有异步非阻塞的特点;
- 高容错性:通过父子actor监督机制进行容错处理,为akka分布式模型提供高容错特性;
- 轻量级: 每个actor只占300bytes左右的内存,1G内存即可容纳百万级数量的actor;
- 位置透明:akka对actor地址进行了抽象、屏蔽了本地地址和远程地址的差异,对开发者透明
- 持久化:actor状态或消息可以被持久化,在jvm宕机后actor可以恢复;
二、运行时概念总结
Jobmanager:包工头 TaskManager:农民工 进程 TaskMabager Slots:一个农民工能干多少活是看槽位的 Job:整个开发应用叫job可以划分为多个Task、subtask执行 Task&subtask: 执行线程 线程 Operator:一个Task里可以有多个operator Parallelism:设置并行度 chain:链式,链成一个task SlotSharingGroup:软性的,尽可能让共享 使task与slot不一一对应,形成“共享” CoLocationGroup:强制的 不是说共享就一定好,密集型要拆分,拆分会性能更好
1.TaskManager Slot
2.OperatorChain&Task
3.共享Slot
4.SlotSharingGroup
5.Slots&&Parallelism
三、计算slot数量的方法
四、Flink部署方式
五、Flink部署推荐方式
总结
1、不得不说设计思路真清晰 2、里面的交互、通讯、传输都是使用的一些牛逼组件 还是有那样的感觉,这么牛逼的产品也是牛逼的轮子串起来的,如果没有Akka、Netty支撑,又何谈它的优秀,所以设计没有估计的公式。下期救要开始搞机器资源玩了,明天去公司看看有没有环境,感觉应该是没有,我这边的2个交付底座支撑的产品,连开发环境都没有。。。。。
|