Kafka 被称为“分布式提交日志”或“分布式流平台”

  文件系统或数据库提交日志用来提供所有事务的持久记录,通过重放这些日志重建系统状态,同时Kafka数据是按照一定顺序持久化保存的,可以按需读取

  Kafka数据分布在整个系统里,具有数据保障和性能伸缩能力

Kafka数据单元称为消息,类似于数据库里的行,消息由字节数组组成,里边的数据没有特殊含义;消息有一个可选的元数据----键(字节数组),当消息以一种

  可控的方式写入不同分区时,会用到键,保证相同键的消息总是写到相同的分区上

为提高效率,Kafka分批次写入Kafka,批次是一组消息,这些消息属于同一个主题和分区,批次越大,单位时间内处理消息越多,单个消息处理时间越长,批次数据会

  被压缩

Kafka的消息通过主题进行分类,主题类似于数据库的表,主题可以分为若干分区,一个分区就是一个提交日志,消息以追加方式写入分区,以先入先出方式读取

注意: 一个主题有几个分区,无法保证主题范围内消息的顺序,但是可以保证分区内的消息顺序

分区可以分布在不同的服务器上,即一个主题可以横跨多个服务器,以此提供比单个服务器更强大的性能

人们通常会使用流来描述Kafka系统的数据,很多时候一个主题可以看作一个流,不管多少分区,流是从一组生产者移动到消费者的数据

Kafka的客户端就是Kafka系统的用户,他们被分为2种类型:生产者和消费者

生产者创建消息,默认情况下,生产者会把消息均衡的分布到主题的所有分区上,而并不关心消息会被写到哪个分区上

生产者可以指定消息写到特定分区,通过消息键和分区器实现;分区器为键生成一个散列值,并映射到指定分区上,这样可以保证同一个键的消息可以写到同一个分区上

消费者读取消息,消费者可以订阅一个或多个主题,按照生成顺序读取,通过检查消息的偏移量区分已经都去过的消息;偏移量是一个元数据,是不断递增的,在创建消息时,会添加到消息里,在给定分区里,每个消息的偏移量是唯一的,消费者会把每个分区最后读取的消息偏移量保存在Zookeeper或Kafka上,若果消费者关闭或重启,读取的状态不会丢失

消费者是消费者群组的一部分,多个消费者共同读取一个主题时,群组保证每个分区只能被一个消费者使用。消费者与分区之间的映射关系被称为消费者对分区的所有权关系

消费者可以消费包含大量消息的主题,如果一个消费者失效,其余的消费者可以接管失效的消费者工作

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

broker是集群的组成部分,每个集群都有一个broker被选举为集群控制器角色,控制器负责管理工作,包括将分区分配给broker和监控broker;在集群中,一个分区从属于一个broker(分区的首领);一个分区可以分配给多个broker,这时会发生分区复制,这种复制机制为分区提供了消息冗余,一个broker失效,其他broker可以接管领导权;相关的消费者和生产者都重新连接到新的首领

Kafka有一个重要特性:保留消息

默认保留策略是:保留一段时间(7天)或者保留到一定大小字节数,当达到这些条件时旧消息就会被删除

主题可以配置自己的保留策略

基于以下原因,建议使用多集群: 数据类型分离    安全需求隔离   多数据中心(灾难恢复)

Kafka提供了一个MirrorMaker工具用来实现集群间的消息复制,Mirror Maker的核心组件包含一个消费者和生产者,二者之间通过一个队列相连

消费者从一个集群读取消息,生产者把消息发送到另一个集群上

Kafka可以无缝支持多个多个生产者,适合从多个前端收集数据,以统一格式对外提供数据

Kafka支持多个消费者从单独一个消息流上读取数据,而且消费者之间互不影响

Kafka允许消费者非实时读取消息,这要归功于Kafka数据保留特性,消息提交到磁盘,根据保留规则保存,消费者可以从上次中断的地方继续处理消息

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. Android_Mars学习笔记_S01_001activity初步

    一.activity初步 1.程序启动会先读配置文件AndroidManifest.xml找activity 2.activity会在onCreate方法中读取activity_main.xml文件, ...

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

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

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

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

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

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

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

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

随机推荐

  1. 【转载】多模式串匹配之AC自动机

    原文地址:https://www.cnblogs.com/codeape/p/3845375.html 目录 [隐藏] 一.概述 二.AC算法思想 三.字典树tire的构造 四.搜索路径的确定 附录: ...

  2. Java窗体居中显示的2种方法

    第1种方法: //setSize(300, 200); pack(); // 得到显示器屏幕的宽.高 int width = Toolkit.getDefaultToolkit().getScreen ...

  3. mac:Go安装和配置+GoLand安装和使用之完整教程

    前言 作为一个go语言程序员,觉得自己有义务为go新手开一条更简单便捷的上手之路.纵使网上教程很多,但总不尽人意.go的入门门槛还是非常低的,无论是安装还是使用. go安装 go 语言支持以下系统:  ...

  4. kafka性能测试

    参考阿里中间件团队博客的博文 Kafka vs RocketMQ——多Topic对性能稳定性的影响 使用的测试工具为Jmeter

  5. Datagrip连接SQLServer Connecting DataGrip to MS SQL Server

    Connecting DataGrip to MS SQL Server Posted on June 21, 2016 by Maksim Sobolevskiy Some specific nee ...

  6. 史上最全Java面试题整理(附参考答案)

    下列面试题都是在网上收集的,本人抱着学习的态度找了下参考答案,有不足的地方还请指正,更多精彩内容可以关注我的微信公众号:Java团长 1.面向对象的特征有哪些方面? 抽象:将同类对象的共同特征提取出来 ...

  7. 【Android Studio】Gradle配置及问题解决

    Error:Failed to open zip file.Gradle's dependency cache may be corrupt (this sometimes occurs after ...

  8. java面试复习题四

    一.redis最大缓存和回收策略 二.常用的数据库Druid线程池的参数设置 三.Spring的几大特性和应用 参考 Spring的核心特性就是IOC和AOP,IOC(Inversion of Con ...

  9. Zephyr学习(四)系统时钟

    每一个支持多进程(线程)的系统都会有一个滴答时钟(系统时钟),这个时钟就好比系统的“心脏”,线程的休眠(延时)和时间片轮转调度都需要用到它. Cortex-M系列的内核都有一个systick时钟,这个 ...

  10. Docker中使用redis

    项目中频繁使用Redis,为了不用每次打开Redis目录去启动Redis想到了Docker可以作为Redis的容器 直接下载使用就行 把Docker使用Redis的过程分享下:   1.     拉取 ...