kafka
yjh314
这个作者很懒,什么都没留下…
展开
-
Apache Kafka-0.8.1.1源码编译
经过近一个月时间,终于差不多将之前在Flume 0.9.4上面编写的source、sink等插件迁移到Flume-ng 1.5.0,包括了将Flume 0.9.4上面的TailSource、TailDirSource等插件的迁移(当然,我们加入了许多新的功能,比如故障恢复、日志的断点续传、按块发送日志以及每个一定的时间轮询发送日志而不是等一个日志发送完才发送另外一个日志)。现在我们需要将Flu转载 2018-01-03 11:34:40 · 623 阅读 · 0 评论 -
Kafka文件存储机制那些事
Kafka是什么Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。1.前言一个商业化消息队列的性能好坏,其文件存储机制设计是衡量一个转载 2017-12-20 17:03:43 · 180 阅读 · 0 评论 -
从Apache Kafka 重温文件高效读写
0. Overview卡夫卡说:不要害怕文件系统。它就那么简简单单地用顺序写的普通文件,借力于Linux内核的Page Cache,不(显式)用内存,胜用内存,完全没有别家那样要同时维护内存中数据、持久化数据的烦恼——只要内存足够,生产者与消费者的速度也没有差上太多,读写便都发生在Page Cache中,完全没有同步的磁盘访问。整个IO过程,从上到下分成文件系统层(VFS+转载 2017-12-20 17:01:25 · 587 阅读 · 0 评论 -
kafka源码分析
MemoryRecordsBuilder.java原创 2017-12-20 11:53:19 · 413 阅读 · 0 评论 -
Kafka日志清理过程
总所周知,kafka将topic分成不同的partitions,每个partition的日志分成不同的segments,最后以segment为单位将陈旧的日志从文件系统删除,本文由javacoder.cn整理,转载请注明出处。假设kafka的日志目录为tmp/kafka-logs,对于名为test_perf的topic。假设两个partitions,那么我们可以在tmp/kafka-logs目转载 2017-12-11 09:30:24 · 6990 阅读 · 0 评论 -
在使用spring-kafka进行并发推送和接收数据
在进行大规模的每秒十几万的数据推送与接收稳定性出现了一定瓶颈。并发推送:运行几个小时后写入Kafka日志有出现1-3秒的延迟。订阅接收:运行几个小时后拉取kafka消息也会有1-3秒的延迟。原创 2017-11-16 09:24:50 · 2148 阅读 · 0 评论 -
Kafka参数调优
broker配置 auto.leader.rebalance.enable 默认true 设置 false background.threads 默认4 设置8 leader.imbalance.check.interval.seconds offset.metadata.max.bytes offsets.commit.require转载 2017-11-16 08:38:19 · 641 阅读 · 0 评论 -
《kafka中文手册》- 构架设计
4. DESIGN 设计4.1 Motivation 目的4.2 Persistence 存储Don’t fear the filesystem! 不要对文件系统感到恐惧Constant Time Suffices 常量耗时需求4.3 Efficiency 效率End-to-end Batch Compression 端到端的数据压缩4.4 The Produc转载 2017-12-08 17:35:35 · 1697 阅读 · 0 评论 -
Kafka消息时间戳(kafka message timestamp)
最近碰到了消息时间戳的问题,于是花了一些功夫研究了一下,特此记录一下。 Kafka消息的时间戳在消息中增加了一个时间戳字段和时间戳类型。目前支持的时间戳类型有两种: CreateTime 和 LogAppendTime 前者表示producer创建这条消息的时间;后者表示broker接收到这条消息的时间(严格来说,是leader broker将这条消息写入到log的时间)转载 2017-11-15 21:55:57 · 11264 阅读 · 1 评论 -
总结kafka的consumer消费能力很低的情况下的处理方案
简介由于项目中需要使用kafka作为消息队列,并且项目是基于spring-boot来进行构建的,所以项目采用了spring-kafka作为原生kafka的一个扩展库进行使用。先说明一下版本:spring-boot 的版本是1.4.0.RELEASEkafka 的版本是0.9.0.x 版本spring-kafka 的版本是1.0.3.RELEASE用过kafka的人都知道,对于使用ka转载 2017-11-15 19:32:35 · 2521 阅读 · 0 评论 -
kafka消费者
The Kafka consumer works by issuing "fetch" requests to the brokers leading the partitions it wants to consume. The consumer specifies its offset in the log with each request and receives back a chunk转载 2017-11-15 19:15:05 · 412 阅读 · 0 评论 -
跟踪kafka配置max.poll.records参数有否生效
kafka消费客户端使用Spring-kafka第三方库的开源jar包,引入Maven org.apache.kafka kafka_2.10 0.10.2.1 org.springframework.kafka sprin原创 2017-08-24 10:00:19 · 36745 阅读 · 1 评论 -
redis 查看的版本
linux环境下查看redis的版本:查看redis的版本有两种方式:1. redis-server --version 和 redis-server -v 得到的结果是:Redis server v=2.6.10 sha=00000000:0 malloc=jemalloc-3.2.0 bits=321. redis-cli --version 和 redis-cli -转载 2017-11-14 09:48:57 · 54837 阅读 · 1 评论 -
Kafka生产者性能优化之吞吐量VS延迟
When we are talking about performance of Kafka Producer, we are really talking about two different things:latency: how much time passes from the time KafkaProducer.send() was called until the mess转载 2017-11-13 11:39:13 · 1477 阅读 · 0 评论 -
我学Kafka源码之Broker Server
本章,我们将进入到Kafka的核心类中进行代码走读,深入分析他的存储交互和消息分发原理。首先给大家展示一张服务端交互图,因为比较复杂我就没有再画,转发别人的一张图以供参考: 大家看完这个图以后相信有了一个整体认识,那么下面我们就重点从整体到细节的逐步分解。 一、KafkaServerStartable在Kafka的main入口中startup Kaf转载 2017-12-20 19:59:49 · 339 阅读 · 0 评论 -
Kafka中的Selector网络接口详解
问题导读:1.Selector有哪些功能?2.Selector怎样保存内部状态信息?3.Selector为什么比直接使用NIO好?org.apache.kafka.common.client.Selector实现了Selectable接口,用于提供符合Kafka网络通讯特点的异步的、非阻塞的、面向多个连接的网络I/O.这些网络IO包括了连转载 2017-12-21 15:00:17 · 1701 阅读 · 0 评论 -
apache kafka系列之源码分析走读-kafkaApi详解
Kafka源码中数据交互流程图11.概述kafka启动时做很多初始化运行环境工作,具体请参考:apache kafka系列之源码分析走读-kafka内部模块分析其中SockeServer类启动时,首先初始化NIO网络环境、启动监听、创建主线程、工作线程池、设置参数等等。从上图1中可以看到整个交互过程中,kafka的所有逻辑处理和交互实际是交给转载 2017-12-21 19:55:31 · 479 阅读 · 0 评论 -
生产者消费者模型(二)-引入ArrayBlockingQueue
前言 在《生产者消费者模型你知道多少》中简单的模拟了一个生产者消费者模型。有些网友对我的实现提出了很多质疑。我在文章的结尾也对抛出了一个问题:在添加的过程中可能出现数据丢失的情况,应该怎么处理?在代码中也充斥了大量的锁,有些锁是不需要的,而且有重复制造轮子的嫌疑。在今天我将引入ArrayBlockingQueue重写这个模型,这在实际开发中可能更有意义,另外对转载 2018-01-03 11:15:30 · 284 阅读 · 0 评论 -
kafka源码分析一
package kafkaimport java.util.Propertiesimport joptsimple.OptionParserimport kafka.server.{KafkaServer, KafkaServerStartable}import kafka.utils.{CommandLineUtils, Logging}import org.apache.kafk原创 2017-12-23 14:33:59 · 2639 阅读 · 0 评论 -
Java NIO——与传统IO文件复制的效率比较(channel.transferTo、Files.copy 、channel.write)
O与NIO操作效率对比(网上的说法千篇一律,99%都是错的,没经过自己的验证,正确的解释如下)复制文件的情况: 注意:Files.copy和传统IO代码基本一样,只是它开辟的缓冲区大小较大,为8192(基本是缓冲区开的越大越快,但是也吃内存)当缓冲区(效率上:传统IO > channel.transferTo > Files.copy > NIO::channel.原创 2017-12-27 15:56:43 · 1435 阅读 · 0 评论 -
Kafka Zero-Copy 使用分析
之前有听过Zero-Copy 技术,而Kafka是典型的使用者。网上找了找,竟然没有找到合适的介绍文章。正好这段时间正在阅读Kafka的相关代码,于是有了这篇内容。这篇文章会简要介绍Zero-Copy技术在Kafka的使用情况,希望能给大家一定借鉴和学习样例。前言Kafka 我个人感觉是性能优化的典范。而且使用Scala开发,代码写的也很漂亮的。重点我觉得有四个NIOZero Copy转载 2017-12-27 15:51:43 · 373 阅读 · 0 评论 -
某互联网大厂kafka最佳实践
前言:上手kafka已有2年的时间,我们的数据处理量也从最初的300g/day发展到今天的T量级在这个过程中也踩了不少坑,在这里分享出来和大家共勉。一、硬件考量1.1、内存不建议为kafka分配超过5g的heap,因为会消耗28-30g的文件系统缓存,而是考虑为kafka的读写预留充足的buffer。Buffer大小的快速计算方法是平均磁盘写入数量的30倍。推荐使用64GB及以上内存的服务器,低于转载 2017-12-19 09:47:11 · 337 阅读 · 0 评论 -
kafka源码分析二
kafka Broker接收到数据响应的Handler处理方法/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for原创 2017-12-23 15:54:14 · 1141 阅读 · 0 评论 -
记一次Kafka消费者拉取数据不均匀问题
记一次Kafka消费者拉取多个节点的数据,其中有1-2个节点出现拉取流量比较大问题,其原因是我把consumer拉取的数据的自动提交配置设置成了false,而并没调用commit(offset)提交接口,推送导致是其原因由于没确认又重复的拉取数据了,之后修改成自动确认的问题解决了。配置如下,enable.auto.commit:默认值为 true。auto.commit.inte原创 2017-12-18 11:43:06 · 8849 阅读 · 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.s转载 2017-12-18 11:30:26 · 296 阅读 · 0 评论 -
Kafka集群Broker没起到负载均衡作用
目前Kafka集群部署了4个Broker节点,但在压测的过程中,推送消息到Kafka没有起到负载均衡,都只推送到一台Broker节点,1、查看推送程序物理机连接kafka端口6667的TCP连接,确实只有一台 [root@~]# ss -anp |grep ':6667' |grep '11314' (Linux查看方式) tcp ESTAB 0原创 2017-11-02 09:58:12 · 5192 阅读 · 1 评论 -
Kafka主要参数详解
一、相关参数配置############################ System ##############################唯一标识在集群中的ID,要求是正数。broker.id=0#服务端口,默认9092port=9092#监听地址,不设为所有地址host.name=debugo01 # 处理网络请求转载 2017-11-28 09:48:22 · 458 阅读 · 0 评论 -
kafka源码分析三
/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding cop原创 2017-12-23 15:59:21 · 1394 阅读 · 0 评论 -
kafka中处理超大消息的一些处理
Kafka设计的初衷是迅速处理短小的消息,一般10K大小的消息吞吐性能最好(可参见LinkedIn的kafka性能测试)。但有时候,我们需要处理更大的消息,比如XML文档或JSON内容,一个消息差不多有10-100M,这种情况下,Kakfa应该如何处理?针对这个问题,有以下几个建议:最好的方法是不直接传送这些大的数据。如果有共享存储,如NAS, HDFS, S3等,可以把这些大的文件存转载 2017-12-15 09:17:24 · 2485 阅读 · 0 评论 -
Kafka消息文件存储
在对消息进行存储和缓存时,Kafka依赖于文件系统。(Page Cache) 线性读取和写入是所有使用模式中最具可预计性的一种方式,因而操作系统采用预读(read-ahead)和后写(write-behind)技术对磁盘读写进行探测并优化后效果也不错。预读就是提前将一个比较大的磁盘块中内容读入内存,后写是将一些较小的逻辑写入操作合并起来组成比较大的物理写入操作。 使转载 2017-12-21 21:01:36 · 543 阅读 · 0 评论 -
kafka数据保存时间问题与kafka的性能测试
查看kafka的topic情况,bin/kafka-topics.sh --describe --zookeeper hadoop234:2182 --topic test5可以查看replicationfactor的leader,如果broker list中某个节点断掉,则会重选leaderPartition: 分区Leader : 负责读写指定分区的节点Re转载 2017-11-12 20:23:11 · 4318 阅读 · 0 评论 -
Kafka 设计与原理详解
一、Kafka简介本文综合了我之前写的kafka相关文章,可作为一个全面了解学习kafka的培训学习资料。12转载请注明出处 : 本文链接1.1 背景历史当今社会各种应用系统诸如商业、社交、搜索、浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战:如何收集这些巨大的信息如何分析它如何及时做到如上两点以上几个挑战形成了一个业务需转载 2017-11-12 20:16:47 · 196 阅读 · 0 评论 -
kafka性能参数和压力测试揭秘
Kafka在设计上是如何来保证高时效、大吞吐量的,主要的内容集中在底层原理和架构上,属于理论知识范畴。这次我们站在应用和运维的角度,聊一聊集群到位后要怎么才能最好的配置参数和进行测试性能。Kafka的配置详尽且复杂,想要进行全面的性能调优需要掌握大量信息,我也只是通过工作中的一些实战经验来筛选出对集群性能影响最大的几个要点,接下来要阐述的观点也仅限于我所描述的环境下,请大家根据自己的环境适当取舍。转载 2017-08-31 16:44:56 · 304 阅读 · 0 评论 -
漫游Kafka实战篇之客户端编程实例
新版的Producer API提供了以下功能:可以将多个消息缓存到本地队列里,然后异步的批量发送到broker,可以通过参数producer.type=async做到。缓存的大小可以通过一些参数指定:queue.time和batch.size。一个后台线程((kafka.producer.async.ProducerSendThread)从队列中取出数据并让kafka.producer.E转载 2017-08-31 16:06:22 · 267 阅读 · 0 评论 -
总结kafka的consumer消费能力很低的情况下的处理方案
简介由于项目中需要使用kafka作为消息队列,并且项目是基于spring-boot来进行构建的,所以项目采用了spring-kafka作为原生kafka的一个扩展库进行使用。先说明一下版本:spring-boot 的版本是1.4.0.RELEASEkafka 的版本是0.9.0.x 版本spring-kafka 的版本是1.0.3.RELEASE用过kafka的人都知道,对于使用k转载 2017-08-31 14:22:21 · 1621 阅读 · 0 评论 -
Kafka三款监控工具比较(转)
在之前的博客中,介绍了Kafka Web Console这 个监控工具,在生产环境中使用,运行一段时间后,发现该工具会和Kafka生产者、消费者、ZooKeeper建立大量连接,从而导致网络阻塞。并且这个 Bug也在其他使用者中出现过,看来使用开源工具要慎重!该Bug暂未得到修复,不得已,只能研究下其他同类的Kafka监控软件。通过研究,发现主流的三种kafka监控程序分别为:转载 2017-08-28 11:26:50 · 354 阅读 · 0 评论 -
Kafka Manager实现原理与填坑
Kafka Manager 简介Kafka Manager 可能是现在能找到的最好的可视化的Kafka管理工具, 感谢Yahoo-我人生中打开的一个网站-的开源;使用Kafka Manager, 基本上之前需要运行Kafka相应命令行工具的工作现在都可以可视化的完成:创建Topic, 调整消息保存时长, Partition数量等等配置;管理Topic, 包括Reassign Par转载 2017-08-29 11:41:35 · 6685 阅读 · 1 评论 -
KafkaOffsetMonitor
java -cp KafkaOffsetMonitor-assembly-0.2.0.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb --zk 172.16.1.155:2181 --port 8089 --refresh 10.seconds --retain 1.daysserving resources from: jar:file:原创 2017-08-28 17:31:54 · 346 阅读 · 0 评论 -
kafka web console监控软件的安装
1、安装kafka web console软件前先安装sbt安装:我的系统为centos7故采用官方提供的在线安装:curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rpm.reposudo mv bintray-sbt-rpm.repo /etc/yum.repos.d/sudo yum install sbt然原创 2017-08-28 15:11:33 · 5469 阅读 · 0 评论 -
彻底删除Kafka中的topic
1、删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录2、Kafka 删除topic的命令是: ./bin/kafka-topics --delete --zookeeper 【zookeeper server】 --topic 【topic name】 如转载 2017-09-13 16:34:07 · 240 阅读 · 0 评论