KafkaController源码分析之Broker的上线与下线|Kafka Tutorial|kafka-中间件-消息前言
本文主要聊聊某一个broker上线与下线时,集群是如何感知的
zk事件
在KafkaController#onControllerFailover方法中,会向zk注册一个brokerChangeHandler,它主要监听/brokers/ids下的子节点变化事件,我们知道该节点下就是每一个br ...
阅读更多
KafkaController源码分析之分区重分配(PartitionReassignment)与Preferred-leader副本选举|Kafka Tutorial|kafka-中间件-消息本文继续讲解Controller初始化过程,分析副本重分配过程
分区副本重分配
首先什么是分区副本重分配(PartitionReassignment),以下摘自《Apache Kafka实战》一书对其做了阐释
分区副本重分配操作通常都是由Kafka集群的管理员发起的,旨在对topic的所有分区重新 ...
阅读更多
KafkaController源码分析之副本状态机与分区状态机的启动|Kafka Tutorial|kafka-中间件-消息本文承接上篇kafka-server端源码分析之Controller初始化,继续讲解Controller初始化过程中副本状态机与分区状态机的启动
副本状态机
kafka将副本分为7个状态,下图是状态之间的流转图
副本状态用ReplicaState接口表示,需要说下validPreviousStat ...
阅读更多
KafkaController源码分析之Controller选举与初始化|Kafka Tutorial|kafka-中间件-消息本文来分析下kafka的重要模块——Controller,主要介绍Controller的选举与初始化过程
KafkaController
初始化的入口依然在KafkaServer#startup方法中
12345678// 创建BrokerInfo: {Broker{id,End ...
阅读更多
kafka-server端源码分析之Zookeeper初始化与Watcher监听事件分发|Kafka Tutorial|kafka-中间件-消息这一篇比较简单,快速带大家过一下kafka如何连接ZooKeeper,以及kafka对节点事件监听的代码设计
ZooKeeper大致介绍
kafka主要利用ZooKeeper选举Controller,这里先大致介绍下ZooKeeper的基本用法,仅用于学习Kafka
ZNode
几乎所有的ZooKe ...
阅读更多
Spring IOC容器启动之初始化上下文|Spring|Spring-源码前言
本文采用AnnotationConfigApplicationContext作为上下文,如果是web容器大部分源码可用于参考,但不能保证一致。
Spring IOC容器的源码很多,分解为多篇文章来讲解,
测试代码
测试代码很简单,我这里用了spring自带的测试类ConfigForScanni ...
阅读更多
kafka消息格式与日志存储原理分析|Kafka Tutorial|kafka-中间件-消息kafka自0.11.0.0版本之后消息体升级到了V2版本,本文从生产者消息发送,broker消息存储,消息读取等几个部分作为切入点,来分析kafka的消息流转
写入
producer通过PRODUCE请求将消息发送给broker,我们来看一下发送的内容是什么
12345678910private ...
阅读更多
kafka本地启动后不打印日志问题|Kafka Tutorial|kafka-中间件-消息
2020年的春节新冠状病毒肆虐,只能宅在家里(天赋异禀),闲来无事再次打开kafka项目阅读源码,但是从一开始就有个小问题困扰着我,
kafka本地启动后不打印日志,虽然能运行,但是心里总是很难受,今日下定决心解决之
在kafka源码环境搭建一文中,启动kafka之后,控制台如下
和我们用命令 ...
阅读更多
Effective-java读书笔记(三):类和接口|读书笔记|Java基础使类和接口的可访问性最小化
模块设计原则:对外隐藏内部数据和实现细节,把api和他的实现隔离开来,模块之间通过api通信,一个模块不需要知道其它模块的内部细节,这称之为封装。
封装有效地让各模块直接解耦,解耦之后模块可以独立的开发,测试,优化,使用及修改。
尽可能地使每个类或者成员不被外界访问
...
阅读更多
Effective java读书笔记(二):对象通用方法|读书笔记|Java基础对象通用方法
覆盖equals时的约定
当类具有特有的"逻辑相等"概念时,必须覆盖equals方法,这样也可以使这个类作为map的key,或者set中的元素
当对象非null时,equals方法满足以下四个特性:
自反性:x.equals(x)=true
对称性:x.equal ...
阅读更多