First: Kafka 是什么?

Kafka 是一个发布订阅系统 最初是是LinkedIn 开发 最后交给Apache 开源组织 github地址:https://github.com/apache/kafka   是用java 和Scala 去开发的~

Kafka 现在主要用于 消息队列使用

Kafka 是一个快速 可扩展 内在就是分布式的系统

分布式: Kafka 提供集群服务 Kafka cluster 可以由一个或者多个Broker 组成  每个Broker 提供对客户端的服务

分区: 每一类消息 或者叫订阅主体 topic  可以有很多分区 Partition

复制:一个topic 的分区有多个副本,按照一定的规则分布在broker集群中,副本可分为leader和follow,leader所在broker负责响应客户端的读写请求,follow周期性地同步leader数据,已防止leader故障后消息丢失

 常见的术语有哪些

Broker :

Kafka集群包含一个或多个服务器,这种服务器被称为broker。broker端不维护数据的消费状态,提升了性能。直接使用磁盘进行存储,线性读写,速度快:避免了数据在JVM内存和系统内存之间的复制,减少耗性能的创建对象和垃圾回收

Topic && Partition :

Topic  是指消息发送的服务器的类别 消费着用此类别去订阅消息   比如我订阅的是苏州日报 还是人民日报等此意思,topic 可存在于一个或者多个broker 中  消费者 不用关心 存储在那个broker 中  就像 我们网上买东西 我们不关心 这个东西存在那个物流仓库里面  反正会有快递员 给我送过来~

每个topic 会有存一个或者多个Partition 中  每个Partition 都能保证有序    Partition 物理地址中 对应的是一个文件夹 文件夹中 这个目录下有两类文件,一类是以log为后缀的文件,另一类是以index为后缀的文件 每一个log文件和一个index文件相对应,这一对文件就是一个Segment File,其中的log文件就是数据文件,里面存放的就是Message,而index文件是索引文件。Index文件记录了元数据信息,指向对应的数据文件中Message的物理偏移量。

Partition  的存在 线性的提高的kafka的吞吐效率

Topic 是一个逻辑概念 最终真正的物理实现是partition   当创建topic 的时候会指定partition的数量  数量越大 其吞吐能力越强 但是也越消耗资源

Producer:  

发布消息到Kafka Broke

Consumer && Consumer Group:

Consumer:消息的消费者,从Kafka Broker中拉取消息的客户端

每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)

每个Partition 只会被Consumer Group中的一个Consumer 顺序消费      每个Consumer Group 中的一个Consumer 会消费一个或者多个Partition

所以设置topic 中的Pattition 的数量要根据 Consumer Group 中的consumer 做参考  一般是相等   如果Consumer group 的数量大于订阅的topic 中的partition 数量多导致 其中一个consumer 没法消费数据

Offset

保存位置: 在老版本中offset保存在zk中,而在新版本中offset保存在kafka自己的一个名为consumer_offsets的topic中.

为了防止consumer在处理消息过程中,出现消息丢失的情况,也可以由consumer将offset保存到第三方库中,由consumer自己维护,比如redis,mysql中.

唯一标识 :offset以groupid,topic,partition组成的三元组来唯一区分不同的partition分区的偏移量.

Replica

副本,Kafka中同一条消息拷贝到多个地方做数据冗余,这些地方就是副本,副本分为Leader和Follower,角色不同作用不同,副本是对Partition而言的,每个分区可配置多个副本来实现高可用

Record

消息,Kafka处理的对象

Second:Kafka 有什么特点

1:持久化  消息存储在磁盘中   为什么存在磁盘中还能这么快  后面进阶慢慢去分析 得益于他的文件存储结构

2:高吞吐  由于每个topic 可以分别存储于每个partition 中  可以横向扩展 线性的提高了Kafka 的吞吐量

3:分布式  kafka 可以有一个或者多个Broker 本来就是一个分布式的架构系统   可快速的去平滑扩展

4:实时性   由于消息持久化,使kafka可以支持离线; 实时性使kafka又可以支持在线,可用于一些流计算

End: Kafka  用于哪些场景

正是由于具有实时性的特点

常见的架构组合:Flume+Kafka+Storm/Spark streaming +Hbase/Hive

(1) 用来作为实时传输数据的管道;

Flume+Kafka+Hdfs 搭建实时日志收集系统

(2) 用来构建实时处理数据流的程序或应用;

Flume+Kafka+Storm/Spark streaming :搭建流数据处理系统

下篇:

1: 消费位置offset 怎么去维护存储的

2:Kafka 文件存储机制 怎么去存储 怎么去查询

3:kafka 中zk 是怎么工作的?

问题分析:

1:Kafka全局消费的有序性

2:kafka的数据重复消费怎么处理

3:如何保证kafka中数据不丢失?

4:Kafka 为什么这么快

参考:https://juejin.im/post/5cd2db8951882530b11ee976

参考文献如下:

https://www.jianshu.com/p/a64085ba336f

Kafka 的一些知识点整理【1】的更多相关文章

  1. kafka知识点整理总结

    kafka知识点整理总结 只不过是敷衍 2017-11-22 21:39:59 kafka知识点整理总结,以备不时之需. 为什么要使用消息系统: 解耦 并行 异步通信:想向队列中放入多少消息就放多少, ...

  2. 大数据 -- kafka学习笔记:知识点整理(部分转载)

    一 为什么需要消息系统 1.解耦 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多 ...

  3. ACM个人零散知识点整理

    ACM个人零散知识点整理 杂项: 1.输入输出外挂 //读入优化 int 整数 inline int read(){ int x=0,f=1; char ch=getchar(); while(ch& ...

  4. Android 零散知识点整理

    Android 零散知识点整理 为什么Android的更新试图操作必须在主线程中进行? 这是因为Android系统中的视图组件并不是线程安全的.通常应该让主线程负责创建.显示和更新UI,启动子线程,停 ...

  5. vue前端面试题知识点整理

    vue前端面试题知识点整理 1. 说一下Vue的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫 ...

  6. JSP页面开发知识点整理

    刚学JSP页面开发,把知识点整理一下. ----------------------------------------------------------------------- JSP语法htt ...

  7. JS知识点整理(二)

    前言 这是对平时的一些读书笔记和理解进行整理的第二部分,第一部分请前往:JS知识点整理(一).本文包含一些易混淆.遗漏的知识点,也会配上一些例子,也许不是很完整,也许还会有点杂,但也许会有你需要的,后 ...

  8. css入门知识点整理

    css入门知识点整理 不要嘲笑我这个蒟蒻..例子来源:w3school css其实就分为两个东西,一个是选择器,另外一个是声明.声明定义了某个对象的属性的值,这都是html的内容.重点要关注的是选择器 ...

  9. activity生命周期知识点整理

    activity生命周期知识点整理 Activity: 是一个应用组件,用户可与其提供的屏幕进行交互.窗口通常会充满屏幕,但也可以小于屏幕并浮动在其他窗口之上. 一个activity的什么周期: 启动 ...

随机推荐

  1. 学习Salesforce | 带你解锁Superbadge的真正作用

    Superbadges是对专业知识和技能的一种认可,通过解决企业在实际业务场景中遇到的复杂问题,展示你的Salesforce专业技能. 要想获得Superbadge,首先需要完成Trailhead徽章 ...

  2. Android内存优化—dumpsys meminfo详解

    原创置顶 不死鸟JGC 最后发布于2018-12-24 14:19:28 阅读数 3960 收藏展开dumpsys 介绍Dumpsys用户系统诊断,它运行在设备上,并提供系统服务状态信息 命令格式: ...

  3. 【题解】P2831 愤怒的小鸟 - 状压dp

    P2831愤怒的小鸟 题目描述 \(Kiana\) 最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于 \((0,0)\) 处,每次 \(Kiana\) 可以 ...

  4. 用pip install不能成功安装时的处理方法

    解决办法: pip install pymysql -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

  5. python-Django与Apache整合wsgi模块

    1.安装wsgi模块 yum search mod_wsgi yum install -y mod_wsgi 2.会在httpd下有配置文件 cd /etc/httpd/conf.d/wsgi.con ...

  6. linux内核第一宏 container_of

    内核第一宏 list_entry()有着内核第一宏的美称,它被设计用来通过结构体成员的指针来返回结构体的指针.现在就让我们通过一步步的分析,来揭开它的神秘面纱,感受内核第一宏设计的精妙之处. 整理分析 ...

  7. 关于vagrant环境下项目中图片缓存的问题

    之前用的是iis所以可能没有这些问题,后来换了nginx之后发现图片缓存问题很严重,本项目用的是thinkphp5框架:浏览器.runtime.session.cookie.加参数,后台,所有缓存都清 ...

  8. Python学习15之python内置六大标准类型

    1.六大标准类型:数值型,str,list,set,tuple,dic 2.数值型:int,float,bool,complex 3.区别: 1)数值型和str,tuple都是不可变类型 而list, ...

  9. js 实现对象的混合与克隆效果,带完整版解析代码[helpers.js]

    前言:         本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽.         本篇文章为您分析一下原生JS写淘宝无缝轮播图效果 对象混合 ...

  10. SpringCloud入门(十一):Sleuth 与 Zipkin分布式链路跟踪

    现今业界分布式服务跟踪的理论基础主要来自于 Google 的一篇论文<Dapper, a Large-Scale Distributed Systems Tracing Infrastructu ...