Kafka
文章平均质量分 91
F_Hello_World
这个作者很懒,什么都没留下…
展开
-
Kafka副本剖析
序言:副本机制是分布式系统中最常见的概念,在常见的分布式系统中,为了对外提供高可用的服务,一般都对数据和服务进行副本构建。Kafka对于Topic进行了物理上进行数据切片(Partition分区),而对于每一个分区都为了其高可用,在0.8之后采用了多副本的概念,即一个Partition对应多个副本,其中一个副本为leader, 其它的为follower,典型的主从结构,而与其它分布式系统中主从结构的不同,Kafka中只有leader对外提供服务,而follower只会同步leader数据,而不提供服务,至于原创 2020-07-26 22:13:13 · 290 阅读 · 1 评论 -
Kafka吞吐量为啥那么大
序言:Kafka是一个依赖磁盘来存储和缓存消息,一般对于磁盘的读写我们认为它的速度很慢的(实际上对于磁盘的读写速度也是根据我们的使用方式来决定它的快慢,例如如果我们进行顺序读写那么它的速度和内存相差无几,但若我们进行随机读写时),关于服务器中各存储介质的读写速度可参考以下图。从上述我们可以看出磁盘处于一个底层的位置,而缓存(内存)处于金字塔位置。那么Kafka为何不向Rabbitmq那样采用内存作为默认的存储介质,使用磁盘作为备用(使用磁盘作为消息的持久化,避免内存丢失)来以此实现高吞吐和低延.原创 2020-07-22 00:18:04 · 533 阅读 · 0 评论 -
Kafka中的选举机制
序言:Kafka作为一个分布式消息中间件(存储消息).既然是一个分布式存储系统(message是分区进行存储),那么肯定需要考虑到数据一致性算法的实现。对于现在较多的开源分布式系统基本会采用两种思路:第一基于paxos算法(衍生出来其它算法例如Fast Paxos,zookeeper的ZAB原子广播协议),第二种基于leader与follower多副本机制(对于数据的写入,同一由leader进行管理写入,follower基本与leader进行同步,例如Raft算法-Nacos实现,Bully霸道选举算法原创 2020-07-20 23:32:56 · 1724 阅读 · 0 评论 -
springboot2.x +kafka使用和源码分析九(KafkaListenerEndpointRegistry暂停启动容器)
我们在运行中如果需要暂停启动容器时可以通过此类KafkaListenerEndpointRegistry来处理。KafkaListenerEndpointRegistry源码(只解释了核心代码):public class KafkaListenerEndpointRegistry implements //当spring销毁bean时执行操作 Dispo...原创 2019-12-04 23:57:50 · 4106 阅读 · 0 评论 -
springboot2.x +kafka使用和源码分析八(自定义分区器)
1:DefaultPartitioner默认分区器如果producer没指定落地到指定partition中,Kafak通过默认的分区器对数据进行partition,默认的分区的规则是对key进行hash取值 % 分区数, 相同的key会分布到同一分区中。如果没指定key,则就按照轮询算法将消息均匀的分布在主题的可用分区上。/** * * 自定义分区器 */public class...原创 2019-12-04 23:13:05 · 1026 阅读 · 0 评论 -
springboot2.x+kafka使用和源码分析七(消费者和生产者使用拦截器)
Apache Kafka提供了一种向生产者和消费者添加拦截器的机制,此拦截器由kafka进行管理和spring无关。所以无法使用Spring依赖注入功能。但是我们可以使用拦截器提供的config()方法来手动来获取这些bean依赖。第一步:自定义拦截器:/** * 自定义生产者拦截器 * @author fangyuan */public class PersonInfoProd...原创 2019-12-03 23:15:15 · 680 阅读 · 0 评论 -
springboot2.x +kafka使用和源码分析五(消费者配置使用)
上一章描述springboot对于kafka事务的支持,本章主要叙说springboot对于consumer支持。这里通过两种方式第一种:由springboot框架来初始化基础bean,我们只需要在yml配置文件中编写配置即可。如下图所示(常规配置 具体所有配置可参考http://kafka.apache.org/documentation/的consumer):springbo...原创 2019-12-03 20:02:57 · 1144 阅读 · 0 评论 -
springboot2.x +kafka使用和源码分析四(kafka事务)
kafka对于事务的支持(0.11.0.0客户端库开始添加了对事务的支持,kafka针对于事务机制新增名为 __transaction_state topic用以保存数据): KafkaTransactionManager:与spring提供的事务机制一起使用(@Transactional,TransactionTemplate等等)。 使用KafkaMessageListene...原创 2019-12-02 22:05:34 · 2489 阅读 · 5 评论 -
springboot2.x +kafka使用和源码分析三(生产者配置)
上一章描述springboot支持对于topic进行配置管理,本章主要叙说springboot对于produce支持。这里通过两种方式第一种:由springboot框架来初始化基础bean,我们只需要在yml配置文件中编写配置即可。如下图所示(常规配置 具体所有配置可参考http://kafka.apache.org/documentation/的producer)第二种:我们自...原创 2019-12-02 13:56:31 · 988 阅读 · 0 评论 -
springboot2.x +kafka使用和源码分析二(topic配置)
上一章我们了解到KafkaAutoConfiguration自动初始化依赖Bean,如下图所示若应用中不包含kafkaAdmin对象,KafkaAutoConfiguration为我们应用创建一个,那么kafkaAdmin这个类的作用是什么呢? @Bean @ConditionalOnMissingBean public KafkaAdmin kafkaAdmin() {...原创 2019-11-30 22:36:07 · 1823 阅读 · 0 评论 -
springboot2.x +kafka使用和源码分析一(自动装配)
序言:个人感觉springboot的源码是web应用开源框架中写的最好的,观看它的源码可以学习它的编码风格,代码设计思想,如何做到给予使用者最好的使用体验,隐藏连接各应用组件的实现细节,极大降低类开发者实力的要求。查看springboot对各组件的自动装配实现,可以很详细的了解到spring对于组件核心类的初始化过程,以及核心类的作用以及之间的依赖关系。在使用springboot项目中集成...原创 2019-11-29 17:40:04 · 1545 阅读 · 0 评论 -
springboot2.x+kafka使用和源码分析六(自定义序列化器)
Apache Kafka提供了一个高级API,用于对值及其键进行序列化和反序列化。org.apache.kafka.common.serialization.Serializer<T> 序列化器 org.apache.kafka.common.serialization.Deserializer<T> 反序列化器我们可以使用Producer或Consumer配...原创 2019-11-28 12:46:24 · 640 阅读 · 0 评论 -
深入了解kafka机制
kafka选举机制当kafka集群中某分区中leader挂掉 ,我们需要followers选取新的leader保证该topic可用,但是有些follower本身可能处于落后或崩溃状态,所以为了必须要保证选举出来的新的leader是最新的有效的,kafka维护了一组实时同步leader的副本(ISR列表)。只有这组成员中才能当选leader。分区副本管理kafka会避免是单节点中保...原创 2019-11-19 23:11:27 · 396 阅读 · 0 评论 -
Kafka出现丢失数据,重复数据的解决方案
kafka出现丢失数据的情况分析:1:Kafka出现丢失数据情况可以大致分为3种情况kafka生产者原因 kafka服务器原因 kafka消费者原因1:当producer发送信息时,如何确定该条信息是否被服务器确认,kafka中有3中策略可供选择(request.required.acks属性确定:就是ack机制)。第一种(request.required.acks=0),即生...原创 2019-11-17 23:00:47 · 2084 阅读 · 0 评论 -
Docker-compose编排部署Kafka伪分布式集群(为后续实验搭建基础环境)
本实验参照官网http://kafka.apache.org/documentation/构建,为后续了解kafka应用做环境准备。搭建环境:MAC10.15 docker 19.03.4 docker-compose version 1.24.1 jdk1.8以上(对于kafka2.x以上版本已遗弃对jdk1.7的支持) zookeeper-3.4.14(这里没使用kafka...原创 2019-11-14 12:58:49 · 359 阅读 · 0 评论