- 博客(57)
- 收藏
- 关注
原创 Kafka 服务端:轮询处理网络请求(十一)
接收器采用 Round-Robin 也就是轮询的方式分配客户端的 SocketChannel 给多个处理器,每个处理器都会有多个 SocketChannel服务端的处理器会为 SocketChannel 创建一个 Kafka 通道,configureNewConnections() 会为 SocketChannel 注册读事件,创建 Kafka 通道,并绑定到选择键上/** * Thread that processes all requests from a single connectio
2022-11-27 14:06:08
886
原创 Kafka 服务端:接收客户端的连接(十)
Kafka 是服务端的启动类,启动类会启动 KafkaServerStartable.startup() 方法来调用 KafkaServer.startup() 启动服务KafkaServer 是 kafka 服务端的主类,涉及网络层的服务组件是 SocketServer、KafkaApis、KafkaRequestHandlerPool/** * Represents the lifecycle of a single Kafka broker. Handles all functional
2022-11-26 13:45:56
1060
原创 Kafka 生产者:旧生产者客户端代码解析(九)
早期旧版本的客户端采用 Scala 编写,功能比较简单,没有采用高性能的 Reactor 模式实现,也没有新版本中的回调功能目录一、旧版消费者使用二、同步/异步 模式三、事件处理器处理客户端发送的消息四、对消息集按照节点和分区进行整理五、生产者使用阻塞通道发送请求一、旧版消费者使用Properties props = new Properties();props.put("metadata.broker.list", "localhost:9092");props.put("seriali
2022-11-25 11:15:26
210
原创 Doris 入门:高级特性(四)
目录一、表结构变更二、Rollup三、增大内存四、修改超时时间五、Broadcast/Shuffle Join六、数据模型七、索引八、物化视图九、动态分区十、数据导出十一、Colocation Join十二、SQL 函数一、表结构变更添加列:alter table table1 add column uv bigint sum default ‘0’ after pv;删除列:alter table table1 drop column uv;查看状态:show alter table colum
2022-11-24 12:09:20
5367
原创 Doris 入门:基本操作(三)
目录一、创建用户和数据库二、建表1. 基本概念2. 创建表3. 数据导入三、代码案例一、创建用户和数据库创建用户CREATE USER ‘test’ IDENTIFIED BY ‘123456’;后续登录就可以直接使用命令登录mysql -h 192.168.1.101 -P9030 -utest -p12345创建数据库并赋予权限初始可以通过 root 或 admin 用户创建数据库create database test_db;查看数据库show databa
2022-11-23 09:41:14
2886
原创 Doris 入门:集群部署(二)
使用最新的 1.1.4 版本 Doris 进行部署 云服务器环境: 三台服务器 hybrid01、hybrid02、hybrid03,Centos7.9,2C4G,40G 硬盘 资源规划hybrid01:FE(Leader)、BE、Brokerhybrid02:FE(Follower)、BE、Brokerhybrid03:FE(Follower/Observer)、BE、Broker目录一、源码编译二、安装部署1. FE 配置2. MySQL Client3. 配置 BE4. 配
2022-11-22 10:27:42
1156
1
原创 Doris 入门:基础知识(一)
Apache Doris 是一个高性能、简单易用、支持实时的 MPP 架构分析型数据库目录一、MPP 架构二、OLTP、OLAP三、Doris 概述四、整体架构五、总结一、MPP 架构介绍全称 Massively Parallel Processor,翻译过来就是大规模并行处理在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上每台数据节点通过专用网络或者商业网络互相连接,彼此协同计算,作为整体提供数据库服务非共享数据库集
2022-11-21 09:43:27
427
原创 Reactor 模型学习笔记
Reactor 反应器,是网络服务端用来处理高并发网络 IO 请求的一种编程模型,主要处理 读、写、连接 事件,主要就是 Reactor、Acceptor、Handler 三个关键角色一、概述现有的线程模型传统阻塞的 I/O 模型Reactor 线程模型Reactor 模型根据 Reactor 的数量和处理资源线程池的数量不同又分为三种 Reactor 线程模型单 Reactor 单线程模型单 Reactor 多线程模型主从 Reactor 多线程模型核心Reac
2022-11-20 14:33:55
152
原创 Kafka 生产者:选择器处理网络请求(八)
涉及网络通信时,一般使用选择器模型,选择器使用 Java NIO 异步非阻塞方式管理连接和读写请求,好处就是单个线程就能管理多个网络连接通道,生产者只需要使用一个选择器就能同时和 Kafka 集群的多个服务端进行网络通信目录一、Java NIO 的一些概念二、客户端连接服务端并建立 Kafka 通道三、Kafka 通道和网络传输层四、Kafka 通道上的读写操作五、选择器的轮询一、Java NIO 的一些概念SocketChannel 客户端网络连接通道,底层的字节数据读写都发生在通道上,通
2022-11-19 14:57:37
536
原创 Kafka 生产者:客户端网络连接对象(七)
NetworkClient 管理了客户端和服务端之间的网络通信,包括建立、发送客户端请求、读取客户端响应在 Sender 线程中主要调用 NetworkClient 的几个方法,前两个属于准备阶段,第三个才会发送客户端请求ready():从 RecordAccumulator 获取准备完毕的节点,并连接所有准备好的节点send():为每个节点创建一个客户端请求后存储到节点对应的通道中poll():轮询动作会真正执行网络请求,包括发送请求、处理响应准备发送客户端请求ready() 首先会
2022-11-18 12:20:35
610
原创 Kafka 生产者:消息发送线程解析(六)
追加消息到 RecordAccumulator 的时候会根据对应的 topic 分区信息获取队列,然后将消息放到 batches 集合中,最后使用一个 Sender 线程迭代 batches 的每个分区Sender 发送线程的两种发送方式按照分区直接发送:有多少个分区就要发送多少次请求按照分区的目标节点发送:把属于同一个节点的所有分区放在一起发送,减少网络开销Sender 流程消息被 RecordAccumulator 按照分区追加到队列的最后一个批记录中Sender 通过 rea
2022-11-17 10:33:36
506
原创 Kafka 生产者:发送消息代码解析(五)
代码使用的是 0.10.1.0 版本的 Kafka examples Producer 代码代码在源码包的 kafka.examples.Producer 中Kafka Producer 代码public class Producer extends Thread { // 发送的数据是 K V 结构,对应上类型 private final KafkaProducer<Integer, String> producer; private final String
2022-11-16 12:56:32
525
原创 Kafka 生产者:发送消息的组件(四)
生产者和消费者客户端与服务端完成一次网络请求通信的具体步骤生产者客户端应用程序产生消息客户端连接对象将消息包装到请求中,发送给服务端服务端连接对象负责接收请求,并将消息以文件形式存储服务端返回响应结果给生产者客户端消费者客户端应用程序消费消息客户端连接对象将消息信息也包装到请求中,发送给服务端服务端从文件存储系统中取出消息服务端返回响应结果给消费者客户端客户端将响应结果还原成消息,并开始处理消息 生产者发送消息并不是直接发给服务端,而是先在客户端把消息放入队列里面,然后由一个消
2022-11-16 12:55:29
222
原创 Kafka 入门:基础概念(二)
在 0.10 版本之前,Kafka 仅仅只是一个消息系统,主要处理等问题。在 0.10 版本之后,Kafka 提供了连接器和流处理的能力,从分布式的消息系统逐渐成为一个。
2022-11-14 14:28:56
237
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅