Kafka学习-系列一
来源:互联网 发布:中国流行音乐发展知乎 编辑:程序博客网 时间:2024/06/06 11:03
本文章只是记录我在学习kafka中的一些心得。文章转载自http://www.infoq.com/cn/articles/kafka-analysis-part-1
一.分布式消息系统,由Linkedin开发,可扩展性大,吞吐率高。与Spark集成。
二、应用背景:网站活动流数据(PV,UV)等成为网站报表分析中重要的部分。活动流数据的处理方式是,将操作日志记录在某些文件中,然后周期性的对文件进行处理。运营数据是指分析服务器的各种性能指标数据:如CPU,IO使用率、服务器日志
Kafka为活动、运营数据处理提供了基础层的支持
三、kafka简介:分布式的、基于发布/订阅的消息系统,
目标:高吞吐率,普通机器也能保证单机每秒100k以上的消息传输;以时间复杂度的o(1)方式保证性能,对TB以上的数据也能保证常数时间复杂度的性能;支持离线数据、实时数据处理;支持kafka server的消息分区
四、使用消息系统的好处:
关键词:
解耦:两边各加入一个基于数据的隐藏的接口,功能添加时只要遵循同一个接口约束就行
冗余:数据的可持久化,数据被处理之前都是可持久化的
可扩展性:需要添加新的处理进程时,不需要对之前的逻辑进行改动
峰值处理能力以及灵活性:
可恢复性:一个处理消息的进程挂掉,系统恢复之后该消息仍能够被处理
缓冲:缓冲机制,提高效率
顺序保证:partition的有序性
异步通讯:消息的异步处理机制
五、消息队列(MQ)
ActiveMQ && Kafka :Apache 下的一个子项目,
ZeroMQ:最快的消息系统,但是不支持数据持久化,一旦宕机,出现数据丢失
RabbitMQ:重量级,适合用于企业级的应用。出队效率远低于Redis
六、Kafka架构
Terminology:名词解释
broker:kafka集群中的服务器
producer:发布消息到broker
consumer:从broker读取消息的客户端
topic:每一个消息都有一个topic,不同的topic的存储位置不同
partition:物理上的概念,分区
1.topic && partition
topic 相当于 queue,可以有多个partition,即文件夹
消息被顺序写入磁盘文件,保证了高效性。
磁盘索引,offset,每个partition又被分为多个segment。
broker是无序的,不记录哪个信息被消费了。因为Consumer Group会记录当前消费信息的offset 。也可以重置offset来重新消费消息。对于消费过的消息kafka会保留,可以在配置文件中选取某种旧消息清除方式
q:consumer group的消息存储在哪? broker内的磁盘文件吗?
每一个topic partition中会有相应Consumer Group的信息?
2.Producer消息路由
producer发送消息给broker(Producer.send()),用户可自定义Partition机制,继承Partitioner接口,重写partition函数
Partition的值从0开始
3.Consumer Group
不同的Consumer Group可以接受相同的消息,但是一个Group只有一个consumer处理消息
Storm实时消息流处理,Hadoop支持离线消息处理
4.Pull vs Push
push:消息传输速率由Broker决定,目标是使用最大传输速率,但是Consumer可能来不及处理消息,出现拒绝服务或者网络拥塞的情况
pull模式:Consumer可自主控制消费速率与消费模式,
delivery guarantee
at most once :只传输一次,可能会丢失(先commit再处理,若consumer crash ,未处理的则不会再被处理)
at least once:默认。可能传输多次,保证不会丢失。(先处理再commit,若发生crash,则已处理的会被再次处理)
Exactly once :只传输一次,只处理一次,保证不会丢失。利用kafka的offset设置,两阶段提交。在low level API中将offset存入HDFS(Hadoop distribute file system,Hadoop分布式文件系统)
- Kafka学习-系列一
- kafka入门系列一
- Kafka总结系列(一)
- Apache Kafka系列(一)----简介
- Kafka学习一
- kafka学习(一)
- kafka学习一:入门
- kafka学习一:简介
- Kafka学习(一)
- kafka学习(一)
- Kafka入门学习《一》
- Kafka 学习笔记(一)
- Kafka学习笔记(一)
- Kafka 学习应用笔记(一)
- Kafka学习笔记一:基本概念
- Kafka系列(一)安装和配置说明
- kafka系列-kafka教程
- kafka系列-kafka配置
- Boost 学习之算法篇 is_sorted
- XMLHttpRequest 对象解析
- DateTime操作;
- maven仓库--私服(Nexus的配置使用)
- Codeforces Round #338 (Div. 2):(615A)
- Kafka学习-系列一
- 代码分析工具 findBugs
- 【划分型DP】数的划分
- unsigned和signed
- jsp 百度地图加载
- 微信远程控制 arduino+ESP8266wifi模块+Fuhome+继电器模块,安卓远程控制,网页远程控制也可
- Android Navigation Drawer
- android studio 2.0 preview看不到源码终极解决方案
- 选择按钮