Kafka是一款基于发布和订阅的消息系统。一般被称为分布式提交日志或分布式流平台。

Kafka系统是按照一定的顺序持久化保存的,可以按需读取。

Kafka的数据单元被称为消息。类似于数据库中表的一行记录,消息由字节组成,所以没有特别的格式和含义。

消息有一个可选的元数据,就是键,键也是一个字节数组。当消息以一种可控的方式写入分区时,会用到键,最简单的方式就是为键生成一个散列值,然后使用散列值对主题的分区属进行取模。这样可以保证具有相同键的消息总是会写到相同的分区。

批次时一组消息,这些消息属于同一个主题和分区,将消息分批次传输可以减少网络开销。

消息模式有很多选项,比如json,xml,但Kafka的开发者喜欢使用Apache Avro。

Kafka的消息通过主题进行分类,主题就好比数据库中的表。或者文件系统中的文件夹。

主题还可以分成若干个分区,消息以追加方式写入分区,按照先入先出的顺序被消费,因此无法在整个主题范围内保持顺序,但可以保证在单个分区内的顺序。

Kafka通过分区实现数据冗余和伸缩性,分区可分布在不同的服务器上,以此来提供比单个服务器更强大的性能。

通常使用流来描述Kafka的数据,流是一组从生产者到消费者的数据。Kafka以实时的方式处理数据,这叫流失处理,通常与批量处理(Hadoop)做区别。

Kafka的客户端就是Kafka的用户,他们被分为两种:生产者和消费者。除此之外还有其他高级客户端API——用于数据集成的Kafka Connect API和用于流失处理的Kafka streams.这些高级客户端API使用生产者和消费者作为内部组件,提供了更高级的功能。

生产者创建消息,一般一个消息会被发布到一个特定的主题上,生产者默认会把消息均衡地分布到主题的所有分区,这通常是由消息键和分区器来实现。

消费者读取消息,消费者订阅一个或多个主题,并按照消息生成的顺序消费它们。消费者通过检查消息的偏移量来区分已经读过的消息。偏移量是另一种元数据,它是一个不断递增的整数值。在创建消息时,Kafka会把它添加到消息里,在给定分区里,每个消息的偏移量都是唯一的。

消费者把每个分区最后读取的偏移量保存到zookeeper或Kafka上,如果消费者关闭或者重启,它的读取状态不好丢失。

消费者是消费者群组的一部分,一般会有多个消费者共同读取一个主题,群组保证每个分区只被一个消费者使用。

一个独立的Kafka服务器称为一个broker,broker接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。broker为消费者提供服务,对读取分区的请求作出响应,返回提交到磁盘上的消息。

broker是集群的组成部分,每个集群都会有一个broker充当集群控制器角色(自动选举),控制器负责管理工作。在集群中,一个分区从属于一个broker,该broker被称为分区的首领,一个分区可以复制到多个broker,这种复制机制为分区提供了消息冗余。

保留消息时Kafka的一个重要特性,默认的保留策略时这样的:要么保留一段时间,要么保留一定的字节数。在任一时刻,达到其中一个标准,消息就会被删除。

Kafka可以无缝支持多个生产者,也可以支持多个消费者。

Kafka有五个使用场景:

1.跟踪用户的活动。

2.传递消息。

3.度量指标和日志记录。

4.提交日志。

5.流处理。

kafka笔记1的更多相关文章

  1. Kafka笔记整理(三):消费形式验证与性能测试

    Kafka消费形式验证 前面的<Kafka笔记整理(一)>中有提到消费者的消费形式,说明如下: .每个consumer属于一个consumer group,可以指定组id.group.id ...

  2. Kafka笔记整理(一)

    Kafka简介 消息队列(Message Queue) 消息 Message 网络中的两台计算机或者两个通讯设备之间传递的数据.例如说:文本.音乐.视频等内容. 队列 Queue 一种特殊的线性表(数 ...

  3. Kafka笔记—可靠性、幂等性和事务

    这几天很忙,但是我现在给我的要求是一周至少要出一篇文章,所以先拿这篇笔记来做开胃菜,源码分析估计明后两天应该能写一篇.给自己加油~,即使没什么人看. 可靠性 如何保证消息不丢失 Kafka只对&quo ...

  4. Kafka笔记

    最近做的一个项目需要跟Kafka打交道,学习了很多相关知识,就到这里来汇总一下. kafka是一个传递消息的系统,原本是用来快速记录海量log的,现在也经常用作消息队列.它主要由三个部分组成,prod ...

  5. kafka笔记-Kafka在zookeeper中的存储结构【转】

    参考链接:apache kafka系列之在zookeeper中存储结构  http://blog.csdn.net/lizhitao/article/details/23744675 1.topic注 ...

  6. Kafka笔记--指定消息的partition规则

    参数的设定:参考资料 不错的资料:http://blog.csdn.net/honglei915/article/details/37697655 http://developer.51cto.com ...

  7. Kafka笔记--监控系统KafkaOffsetMonitor

    KafkaOffsetMonitor下载链接: http://download.csdn.net/detail/changong28/7930337github官方:https://github.co ...

  8. Kafka笔记--使用ubuntu为bocker(服务器)windows做producer和comsumer(客户端)

    原文连接:http://www.cnblogs.com/davidwang456/p/4201875.html 程序仍然使用之前的一篇博文中的例子 :http://www.cnblogs.com/gn ...

  9. Kafka笔记--参数说明及Demo

    参考资料:http://blog.csdn.net/honglei915/article/details/37563647参数说明:http://ju.outofmemory.cn/entry/119 ...

  10. Kafka笔记--分布式环境搭建

    部署: http://www.cnblogs.com/likehua/p/3999538.html http://blog.csdn.net/kimmking/article/details/8263 ...

随机推荐

  1. C#中的Lambda总结

    Lambda的前世今生 早在C# 1.0 时,C#中就引入了委托(delegate)类型的概念.通过使用这个类型,我们可以将函数作为参数进行传递.在某种意义上,委托可理解为一种托管的强类型的函数指针. ...

  2. c语言学习笔记(8)——函数

    学完c语言的函数可以理解面向过程的语言 函数是c语言的重点 一.为什么需要函数? 1.避免了重复性操作 2.有利于程序的模块化(每一个功能可以用不同函数去实现) 二.什么叫做函数? 逻辑上:能够完成特 ...

  3. 张正友相机标定Opencv实现以及标定流程&&标定结果评价&&图像矫正流程解析(附标定程序和棋盘图)

    使用Opencv实现张正友法相机标定之前,有几个问题事先要确认一下,那就是相机为什么需要标定,标定需要的输入和输出分别是哪些? 相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的 ...

  4. 嵌入式OS入门注意事项-同RTX案件:九.关于优先-翻转,继承和天花板

    嵌入式OS入门注意事项-同RTX案件:九.关于优先-翻转,继承和天花板 涉及当调度优先级,会有很多问题,本文中,优先调度和一些战略的主要问题,以应付. 有几个概念如下:(priority invers ...

  5. CCNP路由实验之七 动态路由之BGP

     CCNP路由实验之七 动态路由之BGP 动态路由协议能够自己主动的发现远程网络,仅仅要网络拓扑结构发生了变化,路由器就会相互交换路由信息,不仅能够自己主动获知新添加的网络,还能够在当前网络连接失 ...

  6. Asp.NET的目的是学习

    一.概观 二.具体介绍 1.Request对象 Request对象是用来获取client在请求一个页面或传送一个Form时提供的全部信息.这包含可以标识浏览器和用户的HTTP变量.存储在client的 ...

  7. WPF特效-绘制实时2D激光雷达图

    原文:WPF特效-绘制实时2D激光雷达图 接前两篇: https://blog.csdn.net/u013224722/article/details/80738619 https://blog.cs ...

  8. 将自定义控件加载到RichTextbox并进行交互

    先前遇到一个问题,将自定义控件加载到RichTextbox后,无法触发自定义控件的各种事件,最终找到解决办法:设置RichTextbox的IsDocumentEnabled="True&qu ...

  9. HTTP协议-请求报文

  10. 【C#】wpf自定义calendar日期选择控件的样式

    原文:[C#]wpf自定义calendar日期选择控件的样式 首先上图看下样式 原理 总览 ItemsControl内容的生成 实现 界面的实现 后台ViewModel的实现 首先上图,看下样式 原理 ...