Datax 源码阅读
Posted on
Edited on
主要概念解释
- Reader:数据采集模块,负责数据读取,将数据发送给 Channel。
- Writer:数据写入模块,负责不断读取 Channel 的数据,并将 Channel 的数据写入到目的端。
- Channel:通过
pushX
与pullX
接口提供 Plugins 数据通道能力,同时统一统计、限速能力。 - RecordSender:基于 Channel 封装的接口,用于 Reader 将 Record 传递到框架
- RecordReceiver:基于 Channel 封装的接口,用于 Writer 从框架获取 Recrod
- Job:单个数据同步的作业,DataX接受到一个Job之后,将启动一个进程来完成整个作业同步过程。DataX Job 模块是单个作业的中枢管理节点,承担了数据清理、子任务切分(将单一作业计算转化为多个子 Task)、TaskGroup 管理等功能。
- Task:Task 是 DataX 作业的最小单元,每一个 Task 都会负责一部分数据的同步工作。Task 由 TaskGroup 进行管理。Task 会固定启动 Reader -> Channel -> Writer 的线程来进行同步工作。
- TaskGroup:管理一组 Task 的运行。
Arthas 源码阅读
Posted on
Edited on
结构
1 | ├── agent [ClassLoader/代理启动] |
Kafka 的攒批机制
Posted on
Edited on
从Producer到日志落盘
Posted on
Edited on
文章简介
- [正常]叙述 Kafka 从 Producer 发送消息到 Server 日志落盘全过程
- [提升]详解 Kafka 日志格式,并通过 Java / Rust 两类解析方式
- [深入]Rust-Kafka-Client Producer 到 Kafka Server
- 需要说明的是这篇文章的局限性
- 仅介绍两个 topic 各有两个 partition 为基础进行介绍,会调用
flush
强行将消息刷新进入 topic 内。发送消息每个 partition 各 5 条 - 不涉及鉴权部分
- 不涉及事务消息及有序消息部分
- Kafka 版本 3.1.0,如无必要不会涉及老版本的历史包袱说明
- 流程图中只记录关键路径,关键信息,部分细节信息可能需要细看代码才行,但是不妨碍原理理解
- 这其中会涉及到
Replica
跟Network
的部分知识,但是在这篇文章中只会涉及到比较浅显的部分,我们默认网络层和主副本是对我们透明的,对其中细节及设计部分我们会在另外的文章中讲解。
- 仅介绍两个 topic 各有两个 partition 为基础进行介绍,会调用
Kafka-Network-阅读
Posted on
Edited on
Netty解析-Echo的bind&connect
借助 Netty 官方 Echo 实例: Echo Demo
问题
- 如何与底层交互
- Bootstrap 与 ServerBootstreap 有什么异同
- NioSocketChannel 与 NioServerSocketChannel 有什么异同
- 为什么说 netty 是事件驱动,其事件是如何传播的
- 为什么 ServerBootstrap 需要两个 EventLoopGroup,分别有什么用
Netty中的ByteBuf-Pooled与内存管理
Demo
1 | ByteBuf buf = PooledByteBufAllocator.DEFAULT.buffer(); |
直接看 PooledByteBufAllocator.newHeapBuffer(int initialCapacity, int maxCapacity)
1 | protected ByteBuf newHeapBuffer(int initialCapacity, int maxCapacity) { |