![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络
文章平均质量分 95
weixin_45626756
这个作者很懒,什么都没留下…
展开
-
Flink Mailbox模型
Flink在1.10版本中完成了对StreamTask的运行机制进行了重构,引入了Mailbox机制。本文对这次改动做了哪些修改,以及对比之前的实现有哪些好处进行一些简要的介绍。Flink处理模型Flink将任务代码转换为DAG后,每个节点有各自的并发度p,节点间依靠网络传输消息。每个Task的每个并发都是独立的线程,可以简单的理解为class Task implements Runnable { public void run() { while(true) {原创 2021-06-05 11:15:56 · 805 阅读 · 0 评论 -
flink的反压机制(源码剖析)
背景在前文我们对flink早期基于TCP的反压和现在基于信任值的反压机制进行了剖析 Flink反压机制剖析,本文主要从源码的角度对flink基于Credit&BackLog的反压机制从源码的角度剖析其具体实现过程。基于TCP反压的问题TaskManager之间会启动一个TCP通道进行数据交互,TaskManager的所有Task通过多路复用使用同一个TCP通道。因此,当下游因一个Task处理能力不足造成反压时,就会导致整个TCP通道阻塞。即使其他Task还有空余的Buffer也无法接受数据原创 2022-01-07 11:01:01 · 1250 阅读 · 0 评论 -
flink的内存管理
背景之前我们介绍了flink中task的运行机制,以及数据在task线程内部以及不同TaskManager之间的流转过程。其中,网络传输Buffer数据以及task接收Buffer数据都会申请对应的Segment内存段,其中涉及堆内和堆外内存。这里我们从NetworkBuffer资源管理、flink的内存模型和MemorySegment具体分析一下flink中的内存管理机制。NetworkBuffer资源管理之前我们介绍了flink中网络传输数据是通过NetworkBuffer的数据结构作为字节容器,原创 2022-01-04 17:57:25 · 2569 阅读 · 0 评论 -
flink中的网络数据传输流程
背景本文紧接上文StreamTask数据流,上文我们讲解了每个executor中的task中的数据是如何进行读取转换写出的过程。本文我们将讲解executor之间的数据传输流程,既包括flink的shuffle实现,以及StreamTask中InputChannel和ResultSubPartition的读写数据细节。...原创 2021-12-28 19:38:37 · 1735 阅读 · 0 评论 -
StreamTask数据流
背景本文紧接上篇,将介绍在Task现场启动之后,数据是如何从网络中读取转换处理的。本文主要从源码角度一步步分析StreamTask中数据流转过程,其中涉及到上下游netty的交互、数据的反压和checkpoint机制会在接下来的篇章详细讲解。StreamTask整体数据流StreamTask有多种实现,本文主要以OneInputStreamTask为例进行介绍。public abstract class StreamTask<OUT, OP extends StreamOperator<原创 2021-12-22 18:53:28 · 1013 阅读 · 0 评论 -
flink网络通信剖析(组件rpc通信)并基于akka实现rpc框架
背景最近阅读了flink 1.10版本网络通信部分的相关源码,网络部分主要有两块:组件之间的rpc调用(akka)taskManager之间的数据传输(netty实现)本文主要解析flink底层是如何使用akka封装的rpc,并模仿flink的设计方式,基于akka实现一个简单的rpc通信框架。组件RPC通信架构flink底层的rpc调用主要分为RpcEndPoint、RpcService、RpcServer、GateWay三个模块。RpcEndPoint:每个组件的基本实现,主要包含原创 2021-12-20 20:28:23 · 1467 阅读 · 1 评论 -
网络协议总结
网络分层应用层(http协议)、传输控制层(tcp、udp协议)、网络层(ip 路由器)、数据链路层(arp协议 交换机)、物理层TCP三次握手四次挥手三次握手:两端A-B通过tcp通信,A先向B端发送一个syn请求报文(第一次握手),B端收到后为这次连接分配响应的资源;然后向A端发送一个syn请求报文和一个ack响应报文(第二次握手);A端收到B端的响应后也想B发送一个ack响应报文,并分配响应的资源(第三次握手)。如此通信建立完成。四次挥手:A端要和B端断开连接,A端先向B端发送一个fin报文原创 2020-12-23 11:03:21 · 156 阅读 · 0 评论