消息队列-Kafka
文章平均质量分 92
OkidoGreen
这个作者很懒,什么都没留下…
展开
-
基于SSD的Kafka应用层缓存架构设计与实现
Kafka在美团数据平台的现状Kafka出色的I/O优化以及多处异步化设计,相比其他消息队列系统具有更高的吞吐,同时能够保证不错的延迟,十分适合应用在整个大数据生态中。目前在美团数据平台中,Kafka承担着数据缓冲和分发的角色。如下图所示,业务日志、接入层Nginx日志或线上DB数据通过数据采集层发送到Kafka,后续数据被用户的实时作业消费、计算,或经过数仓的ODS层用作数仓生产,还有一部分则会进入公司统一日志中心,帮助工程师排查线上问题。目前美团线上Kafka规模: 集群规模:节点转载 2021-01-25 10:04:29 · 364 阅读 · 0 评论 -
kafka中的ISR、AR又代表什么?ISR伸缩又是什么?
kafka中的ISR、AR又代表什么?ISR伸缩又是什么? 分区中的所有副本统称为AR(Assigned Repllicas)。所有与leader副本保持一定程度同步的副本(包括Leader)组成ISR(In-Sync Replicas),ISR集合是AR集合中的一个子集。消息会先发送到leader副本,然后follower副本才能从leader副本中拉取消息进行同步,同步期间内follower副本相对于leader副本而言会有一定程度的滞后。前面所说的“一定程度”是指可以忍受的滞后范围,这个范围可以转载 2021-01-22 17:04:28 · 958 阅读 · 0 评论 -
sendfile“零拷贝”、mmap内存映射、DMA
KAFKA推送消息用到了sendfile,落盘技术用到了mmap,DMA贯穿其中。先说说零拷贝零拷贝并不是不需要拷贝,而是减少不必要的拷贝次数。通常是说在IO读写过程中。实际上,零拷贝是有广义和狭义之分,目前我们通常听到的零拷贝,包括上面这个定义减少不必要的拷贝次数都是广义上的零拷贝。其实了解到这点就足够了。我们知道,减少不必要的拷贝次数,就是为了提高效率。那零拷贝之前,是怎样的呢...转载 2020-03-09 20:46:16 · 3462 阅读 · 0 评论 -
DMA之理解
1、DMA由来DMA(Direct Memory Access,直接存储器访问)。在DMA出现之前,CPU与外设之间的数据传送方式有程序传送方式、中断传送方式。CPU是通过系统总线与其他部件连接并进行数据传输。1.1程序传送方式程序传送方式是指直接在程序控制下进行数据的输入/输出操作。分为无条件传送方式和查询(条件传送方式)两种。1.1.1无条件传送方式微机系统中的一些简单的...转载 2020-02-15 20:45:44 · 1906 阅读 · 0 评论 -
spring kafka test 使用笔记
添加依赖testImplementation "org.springframework.kafka:spring-kafka-test"配置 KafkaTemplate@Configurationpublic class KafkaConfig { @Autowired EmbeddedKafkaBroker broker; @Bean public KafkaTemplate<String, String> template() { return new K转载 2020-11-27 14:08:49 · 1716 阅读 · 0 评论 -
彻底搞定 SpringBoot 整合 Kafka(spring-kafka深入探秘)
前言kafka是一个消息队列产品,基于Topic partitions的设计,能达到非常高的消息发送处理性能。Spring创建了一个项目Spring-kafka,封装了Apache 的Kafka-client,用于在Spring项目里快速集成kafka。除了简单的收发消息外,Spring-kafka还提供了很多高级功能,下面我们就来一一探秘这些用法。项目地址:https://github.com/spring-projects/spring-kafka简单集成引入依赖<d转载 2020-11-27 13:49:37 · 1981 阅读 · 2 评论 -
springboot集成kafka指定分区partition发送
springboot 版本为 2.0.61.配置文件 kafka: bootstrap-servers: kafka地址 producer: key-serializer: org.apache.kafka.common.serialization.StringSerializer value-serializer: org.apache.kafka.common.serialization.StringSerializer retries: 3转载 2020-11-23 14:41:33 · 6770 阅读 · 1 评论 -
【kafka原理】 消费者偏移量__consumer_offsets_相关解析
我们在kafka的log文件中发现了还有很多以__consumer_offsets_的文件夹;总共50个;由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer的位移信息保存在Kafka内部的topic中,即__consumer_offsetstopic,并且默认提供了kafka_consumer_groups.sh脚本供用户查看consumer信息。__consumer_offsets是 kafka 自行创建的,和普通的 topic 相同。它存在的目的之一...转载 2020-11-19 14:11:32 · 5461 阅读 · 2 评论 -
KAFKA OFFSET的存储问题
注意:从kafka-0.9版本及以后,kafka的消费者组和offset信息就不存zookeeper了,而是存到broker服务器上,所以,如果你为某个消费者指定了一个消费者组名称(group.id),那么,一旦这个消费者启动,这个消费者组名和它要消费的那个topic的offset信息就会被记录在broker服务器上1.概述 Kafka版本[0.10.1.1],已默认将消费的 offset 迁入到了 Kafka 一个名为 __consumer_offsets 的Topic中。其实,早在 0.8.2.转载 2020-11-19 12:52:10 · 984 阅读 · 0 评论 -
Zookeeper 在 Kafka 中的作用
leader 选举 和 follower 信息同步如上图所示,kafaka集群的 broker,和 Consumer 都需要连接 Zookeeper。Producer 直接连接 Broker。Producer 把数据上传到 Broker,Producer可以指定数据有几个分区、几个备份。上面的图中,数据有两个分区 0、1,每个分区都有自己的副本:0'、 1'。黄色的分区为 leader,白色的为 follower。leader 处理 partition 的所有读写请求,与此同时,fol转载 2020-11-17 15:36:10 · 701 阅读 · 0 评论 -
Spring KafkaTemplate 注解式实现 工厂模式
实现注解式注入kafkaTemplate生产者和消费者,简化配置文件目录消费者工厂/** * 消费者工厂 */@EnableKafka@Configurationpublic class KafkaConsumerFactory { @Autowired private ApplicationContext context; /** * 获取消费者工厂 */ public ConsumerFactory<St..转载 2020-11-04 08:44:21 · 2034 阅读 · 0 评论 -
Kafka 如何读取offset topic内容 (__consumer_offsets)
众所周知,由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer的位移信息保存在Kafka内部的topic中,即__consumer_offsets topic,并且默认提供了kafka_consumer_groups.sh脚本供用户查看consumer信息。 不过依然有很多用户希望了解__consumer_offsets topic内部到底保存了什么信息,特别是想查询某些consumer group的位移是如何在该topic中保存的。针对这些问题,本文将结合一个实转载 2020-10-29 12:31:05 · 945 阅读 · 0 评论 -
深入理解 spring-kafka 监听器创建与运行以及消息处理流程
1. 前言好久没有写博客了,正好最近在工作的时候,使用 spring-kafka 消费消息时候遇到一个关于批量消息处理的问题,通过阅读 spring-kafka 源码,才理解产生问题的原因,以及解决方法。2. 背景最近在开发一个需求中,有一个场景是需要接受第三方公司数据回调,我们系统需要提供一个接口接受和处理数据。这个接口处理的业务逻辑比较复杂,耗时比较长,为了不让调用方等待接口调用过长时间,考虑采用将数据发送到 kafka,然后异步监听消费这个数据。这样接口只负责将数据发送到kafka,然后就转载 2020-10-27 21:24:49 · 9149 阅读 · 2 评论 -
Spring Kafka(五)@KafkaListener的花式操作
待补充https://www.cnblogs.com/yanliang12138/p/12555140.html#_label3原创 2020-10-27 21:16:54 · 1475 阅读 · 0 评论 -
SpringBoot集成kafka全面实战
一、前戏1、在项目中连接kafka,因为是外网,首先要开放kafka配置文件中的如下配置(其中IP为公网IP),advertised.listeners=PLAINTEXT://112.126.74.249:90922、在开始前我们先创建两个topic:topic1、topic2,其分区和副本数都设置为2,用来测试,[root@iZ2zegzlkedbo3e64vkbefZ ~]# cd /usr/local/kafka-cluster/kafka1/bin/[root@iZ2zeg转载 2020-10-27 20:02:38 · 970 阅读 · 0 评论 -
SpringBoot中@KafkaListener原理
先上流程图:在我们的SpringBoot工程中,只需在方法中注解@KafkaListener(topics = {”demo_topic_01“})即可实现对该topic的监听我们知道,kafka的consumer端通过从broker poll消息,然后处理我们通过正向理解 + 结果反推 来分析代码最终肯定会调用KafkaConsumer的poll()方法,可以通过方法栈来确定调用来源查看poll的调用路径由调用知,KafkaMessageListenerContainer转载 2020-10-26 20:30:18 · 3118 阅读 · 1 评论 -
Springcloud Stream详解与kafka整合实例
为什么需要SpringCloud Stream消息驱动呢? 比方说我们用到了RabbitMQ和Kafka,由于这两个消息中间件的架构上的不同,像RabbitMQ有exchange,kafka有Topic,partitions分区,这些中间件的差异性导致我们实际项目开发给我们造成了一定的困扰,我们如果用了两个消息队列的其中一种,后面的业务需求,我想往另外一种消息队列进行迁移,这时候无疑就是一个灾难性的,一大堆东西都要重新推倒重新做,因为它跟我们的系统耦合了,这时候springcloud Stream给我转载 2020-10-24 13:02:59 · 2369 阅读 · 3 评论 -
kafka安装篇与启动
另一篇安装启动:https://blog.csdn.net/u011671747/article/details/105204691在Windows安装运行Kafka一、安装JAVA JDK1、下载安装包http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html注意:根据32/64位操作系统下载对应的安装包2、添加系统变量:JAVA_HOME=C:\Program Files转载 2020-10-24 12:10:19 · 661 阅读 · 0 评论 -
SpringBoot整合kafka(实现producer和consumer)
https://www.jianshu.com/p/5da86afed228在Windows环境下安装运行Kafka:https://www.jianshu.com/p/d64798e81f3b本文代码使用的是Spring Boot 2.1.1.RELEASE 版本<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-star.转载 2020-10-24 11:11:51 · 1637 阅读 · 0 评论 -
Kafka分区与消费者的关系
https://www.cnblogs.com/kaichenkai/p/11959392.htmlhttps://www.cnblogs.com/cjsblog/p/9664536.html转载 2020-07-16 09:56:46 · 908 阅读 · 0 评论 -
Kafka Consumer API样例
Kafka Consumer API样例1. 自动确认Offset说明参照:http://blog.csdn.net/xianzhen376/article/details/51167333Properties props = new Properties();/* 定义kakfa 服务的地址,不需要将所有broker指定上 */props.put("bootstrap.servers", "localhost:9092");/* 制定consumer group */props.put(转载 2020-06-23 19:03:11 · 663 阅读 · 0 评论 -
Kafka 消费者:优雅的退出消费者程序、多线程消费者以及独立消费者
1. 优雅的退出消费者程序wakeup()方法是consumer中唯一个可以在多线程中使用的方法。poll方法不会立即响应wakeup方法,并在下次poll调用时会抛出WakeupExceptionpackage com.bonc.rdpe.kafka110.consumer;import java.util.Arrays;import java.util.Properties;import org.apache.kafka.clients.consumer.ConsumerRecord转载 2020-06-23 18:44:00 · 6615 阅读 · 0 评论 -
理解 Kafka 消费者属性的 enable.auto.commit
前言理解一下Kafka的读的自动提交功能。找到了一篇专门介绍这个功能的文章,选择主要的内容进行一下翻译和做笔记。正文Understanding the ‘enable.auto.commit’ Kafka ConsumerpropertyKafka Consumers read messages from a Kafka topic, its not a hard concept to get your head around. But behind the scenes there.转载 2020-06-23 18:37:41 · 5909 阅读 · 0 评论 -
kafka如何保证数据可靠性和数据一致性
数据可靠性Kafka 作为一个商业级消息中间件,消息可靠性的重要性可想而知。本文从 Producter 往 Broker 发送消息、Topic 分区副本以及 Leader 选举几个角度介绍数据的可靠性。Producer 往 Broker 发送消息如果我们要往 Kafka 对应的主题发送消息,我们需要通过 Producer 完成。前面我们讲过 Kafka 主题对应了多个分区,每个分区下面...转载 2020-03-27 12:48:08 · 1354 阅读 · 0 评论 -
Kafka Rebalance机制分析
什么是RebalanceRebalance 本质上是一种协议,规定了一个 Consumer Group 下的所有 consumer 如何达成一致,来分配订阅 Topic 的每个分区。例如:某 Group 下有 20 个 consumer 实例,它订阅了一个具有 100 个 partition 的 Topic 。正常情况下,kafka 会为每个 Consumer 平均的分配 5 个分区。这个...转载 2020-03-27 12:46:14 · 1640 阅读 · 0 评论 -
Kafka零拷贝
Kafka除了具备消息队列MQ的特性和使用场景外,它还有一个重要用途,就是做存储层。用kafka做存储层,为什么呢?一大堆可以做数据存储的 MySQL、MongoDB、HDFS……因为kafka数据是持久化磁盘的,还速度快;还可靠、支持分布式……啥!用了磁盘,还速度快!!!没错,kafka就是速度无敌,本文将探究kafka无敌性能背后的秘密。首先要有个概念,kafka高性能...转载 2020-03-09 21:06:07 · 853 阅读 · 0 评论 -
关于Kafka 的 consumer 消费者手动提交详解
应用场景在上一篇kafka的consumer消费者,我们使用的是自动提交offset下标。但是offset下标自动提交其实在很多场景都不适用,因为自动提交是在kafka拉取到数据之后就直接提交,这样很容易丢失数据,尤其是在需要事物控制的时候。很多情况下我们需要从kafka成功拉取数据之后,对数据进行相应的处理之后再进行提交。如拉取数据之后进行写入mysql这种 , 所以这时我们就需要进行手...转载 2020-02-21 21:38:41 · 3922 阅读 · 1 评论 -
Kafka实践(二):Kafka 使用Java实现数据的生产和消费demo
Kafka的介绍Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。Kafka 有如下特性:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输。 支持Kafka Server间的消息分区,及分布式消费,同时保...转载 2020-02-21 19:44:04 · 1991 阅读 · 0 评论 -
Kafka实践(一):kafka和storm集群的环境安装
前言storm和kafka集群安装是没有必然联系的,我将这两个写在一起,是因为他们都是由zookeeper进行管理的,也都依赖于JDK的环境,为了不重复再写一遍配置,所以我将这两个写在一起。若只需一个,只需挑选自己选择的阅读即可。这两者的依赖如下:Storm集群:JDK1.8 , Zookeeper3.4,Storm1.1.1; Kafa集群: JDK1.8 ,Zookeeper3...转载 2020-02-21 19:36:26 · 684 阅读 · 0 评论 -
Kafka Producer配置
java生产者配置:NAME DESCRIPTION TYPE DEFAULT VALID VALUES IMPORTANCE bootstrap.servers host/port列表,用于初始化建立和Kafka集群的连接。列表格式为host1:port1,host2:port2,....,无需添加所有的集群地址,kafka会根据提供的地址发现其他的地...转载 2020-02-13 10:29:51 · 686 阅读 · 0 评论 -
Kafka Consumer配置
新消费者配置:(注意,右面是可拖动的)NAME DESCRIPTION TYPE DEFAULT VALID VALUES IMPORTANCE bootstrap.servers host/port,用于和kafka集群建立初始化连接。因为这些服务器地址仅用于初始化连接,并通过现有配置的来发现全部的kafka集群成员(集群随时会变化),所以此列表不需要...转载 2020-02-13 10:28:49 · 930 阅读 · 0 评论 -
Kafka设计解析(七)- Kafka Stream
http://www.jasongj.com/kafka/kafka_stream/本文介绍了Kafka Stream的背景,如Kafka Stream是什么,什么是流式计算,以及为什么要有Kafka Stream。接着介绍了Kafka Stream的整体架构,并行模型,状态存储,以及主要的两种数据集KStream和KTable。并且分析了Kafka Stream如何解决流式系统中的关键问题,如时...转载 2018-05-16 19:15:33 · 2300 阅读 · 0 评论 -
Kafka设计解析(六)- Kafka高性能架构之道
本文从宏观架构层面和微观实现层面分析了Kafka如何实现高性能。包含Kafka如何利用Partition实现并行处理和提供水平扩展能力,如何通过ISR实现可用性和数据一致性的动态平衡,如何使用NIO和Linux的sendfile实现零拷贝以及如何通过顺序读写和数据压缩实现磁盘的高效利用。原创文章,转载请务必将下面这段话置于文章开头处。本文转发自技术世界,原文链接 http://www.ja...转载 2018-05-15 17:44:26 · 710 阅读 · 0 评论 -
kafka使用high api如何确保不丢失消息,不重复发送,消息只读取一次?
https://www.zhihu.com/question/34842764/answer/138125661kafka使用high api如何确保不丢失消息,不重复发送,消息只读取一次?虽然low api可以通过offset来实现,但是感觉好麻烦作者:雨夜偷牛的人链接:https://www.zhihu.com/question/34842764/answer/138125661来源:知乎著作...转载 2018-05-15 17:22:58 · 1295 阅读 · 0 评论 -
kafka原理和实践(一)原理:10分钟入门
http://www.cnblogs.com/dennyzhangdd/p/7759869.html目录一、kafka拓扑图二、名词解释三、生产模型四、消费模型 正文系列目录kafka原理和实践(一)原理:10分钟入门kafka原理和实践(二)spring-kafka简单实践kafka原理和实践(三)spring-kafka生产者源码kafka原理和实践(四)spring-kafka消费者源码ka...转载 2018-05-15 17:16:38 · 2876 阅读 · 0 评论 -
kafka学习笔记:知识点整理
https://blog.csdn.net/qq_24084925/article/details/78842844一、为什么需要消息系统kafka学习网址:http://orchome.com/kafka/index1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险...转载 2018-05-15 16:46:53 · 668 阅读 · 0 评论 -
Zero Copy
原文出处: http://www.ibm.com/developerworks/library/j-zerocopy/ 传统的I/O使用传统的I/O程序读取文件内容, 并写入到另一个文件(或Socket), 如下程序:File.read(fileDesc, buf, len);Socket.send(socket, buf, len);会有较大的性能开销, 主要表现在一下两方面:1. 上下文切换...转载 2018-05-15 16:12:44 · 750 阅读 · 0 评论 -
为什么Kafka那么快
网上有很多Kafka的测试文章,测试结果通常都是“吊打”其他MQ。感慨它的牛B之余我觉得必要仔细分析一下它如此快速的原因。这篇文章不同于其他介绍Kafka使用或者技术实现的文章,我会重点解释——为什么真快。(当然不是因为它用了Scala!!!!)生产者(写入数据)生产者(producer)是负责向Kafka提交数据的,我们先分析这一部分。Kafka会把收到的消息都写入到硬盘中,它绝对不会丢失数据。...转载 2018-05-15 15:30:49 · 27773 阅读 · 3 评论 -
Kafka Broker配置(0.10版)
官网:http://kafka.apache.org/documentation.html名称 描述 类型 默认值 有效值区间 重要程度 zookeeper.connect zk地址 string 高 advertised.host.name 过时的:只有当advertised.listeners或listene...转载 2018-05-15 15:23:48 · 680 阅读 · 0 评论 -
Kafka全解析
https://blog.csdn.net/vinfly_li/article/details/79397201一. ConceptsKafka is used for building real-time data pipelines and streaming apps分布式消息传递网站活跃数据跟踪日志聚合流式数据处理数据存储事件源……Kafka terminology 术语1.TopicsK...转载 2018-05-15 15:10:52 · 677 阅读 · 0 评论