一、前言

在这个系列博客中,小编将向大家介绍一下一款吞吐超级大的消息中间件——kafka。
说到消息中间件MQ,小编也在前面的博客中介绍过 rocketMq,activeMq等等。

至于为什么叫kafka呢?是因为创作它的程序员叫做jay krep,他非常喜欢 弗兰兹·卡夫卡,觉的kafka这个名字很酷,所以就起了这个名字。名字没有什么特别的意思。

二、什么是kafka?能干点什么?

Kafka是由Apache软件基金会开发的一个开源流平台,由Scala和Java编写。Kafka的Apache官网是这样介绍Kafka的。

流平台?干什么的?

From apache kafka官网

  1. To publish (write) and subscribe to (read) streams of events, including continuous import/export of your data from other systems.
  2. To store streams of events durably and reliably for as long as you want.
  3. To process streams of events as they occur or retrospectively.

翻译过来就是:

  1. 发布和订阅流数据流,包括从其他系统持续导入/导出数据。
  2. 持久化数据流,数据落地
  3. 处理数据流,数据流回放

三、kafka的架构图

首先kafka其他mq一样,都是有 服务端和客户端组成,客户端我们一般分成 生产者和消费者。

  • 生产者

  • 服务端,一个节点叫做broker,多个broker组成我们的集群。其中通过 zookeeper来管理集群,比如集群配置,leader的选举,负载均衡等。

  • 消费者

这里还有一些概念要介绍:

  • topic
    队列,生产者会发送消息到topic,消费者从topic消费消息。

  • partition
    分区,目的是提高并发,一个topic可以有多个partition,每个patition内的消息是保证顺序的,是有序队列。

  • segment
    每个patition又由多个segment file组成。文件存储二进制格式数据
    segment = xxx.index + xxxx.timeindex + xxxx.log
    xxxx.log是数据文件,xxx.index 和 xxx.timeindex 是索引文件。

log文件大小默认是1G,超出限制会新建立一个文件。可以通过log.segment.byte参数来配置每个segment大小。

命名规则:partition的第一个segment从0开始,后续每个segment文件名为上一个segment文件最后一条消息的offset + 1



  • replica
    副本,kafka为了保证消息的高可用性,为每个日志文件都做了备份,被称作副本,目的就是为了防止数据丢失,这样就拆成了两类:leader 和 follower。如果其中一台broker 宕机,Kafka 会从剩余的 replica 中选举出新的 leader 继续提供服务。

  • leader
    主副本,其中的数据会给到消费者。

  • follower
    从副本,备胎,个别broker宕机的时候,可以重新选举为主副本。从副本中的数据,不会给到消费者。从副本主动从主副本拉取,不同从副本的拉取同步速度也是不一样的。

  • offset
    消费者消费的位置信息,当消费者挂掉或重新恢复的时候可以,从消费位置重新继续消费。

  • consumer group
    消费者组,消费者组内所有的消费者,分别消费不同分区数据,消费互斥。

  • ISR
    in sync replica,基本保持同步的Replica列表,是从副本与主副本保持同步的列表,默认是30s数据,如果从副本保持同步,那么重新选举leader的时候,会被选择;如果与主副本同步差距较大,会被移除,选举leader,将不会被考虑。

  • OSR
    out of sync replica,同步有延迟的follower列表。

  • LEO (logEndOffset)
    表示每个partition的log最后一条message的位置。

  • HW(高水位 HighWatermark)
    每个partition的副本数据间同步且一致的offset位置,即表示所有副本都已经commit的位置
    高水位之前的数据才是Commit后的,对消费者才可见

四、小结

了解kafka的架构,就是要了解设计理念,阿里的rocketmq也是根据kafka的这个架构来设计的,好的架构可以拓展出更多的中间件。了解透了,你就会有收获。

【MQ】kafka(一)——什么是kafka?在系统中干什么用?相关推荐

  1. 《吃透 MQ 系列》之扒开 Kafka 的神秘面纱

    大家好,我是武哥.这是<吃透 MQ 系列>的第二弹,有些珊珊来迟,后台被好几个读者催更了,实属抱歉! 这篇文章拖更了好几周,起初的想法是:围绕每一个具体的消息中间件,不仅要写透,而且要控制 ...

  2. kafka 脚本发送_NWPC消息平台:在ecFlow系统中发送产品事件消息

    本文属于介绍 NWPC 消息平台 系列文章. 本文介绍如何在基于 ecFlow 构建的数值预报业务系统中发送 NWPC 消息平台的 产品事件消息. 介绍 数值预报业务系统产品制作一般分为三个步骤: 监 ...

  3. kafka 基础知识梳理-kafka是一种高吞吐量的分布式发布订阅消息系统

    一.kafka 简介 今社会各种应用系统诸如商业.社交.搜索.浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它 如何及时做到如上两点 ...

  4. Kafka深度解析(如何在producer中指定partition)(转)

    原文链接:Kafka深度解析 背景介绍 Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统.主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能 ...

  5. kafka(一)-为什么使用kafka

    我们知道kafka是消息队列的一种,我们要先知道为什么我们需要消息队列,什么场景下我们选择kafka. 1.为什么要用消息队列 解耦 在项目启动之初来预测将来项目会碰到什么需求,是极其困难的.消息系统 ...

  6. kafka之六:为什么Kafka那么快

    转自:  http://mp.weixin.qq.com/s?__biz=MzIxMjAzMDA1MQ==&mid=2648945468&idx=1&sn=b622788361 ...

  7. Kafka详解(包括kafka集群搭建)

    目录 一.Kafka简介 Kafka是什么 消息系统简介 点对点消息传递模式 发布-订阅消息传递模式 kafka简单理解 Kafka的优点特点 学Kafka的意义何在 二.常用Message Queu ...

  8. 学习笔记Kafka(一)—— Kafka简介

    一.什么是消息系统 消息系统负责将数据从一个应用程序传输到另一个应用程序,因此应用程序可以专注于数据,但不担心如何共享它. 分布式消息传递基于可靠消息队列的概念. 消息在客户端应用程序和消息传递系统之 ...

  9. kafka创建topic_一网打尽Kafka常用命令、脚本及配置,宜收藏!

    前言 通过前面 7 篇文章的介绍,小伙伴们应该对 Kafka 运行工作原理有一个相对比较清晰的认识了. Kafka是什么?一起来看看吧! Kafka 安装及简单命令使用 Kafka中消息如何被存储到B ...

最新文章

  1. Android源码分析--MediaServer源码分析(二)
  2. 新一代开源Android渠道包生成工具Walle
  3. Database----Cursor
  4. 3位高二女生用大数据成功预测地铁出站人数 | 00后正在抛弃你
  5. jdbcType和javaType
  6. JAVA 调用Web Service的方法(转)
  7. 三层实例--加入信息
  8. ROS kinetic自定义路径规划算法
  9. 【盘点】2017美国人工智能专业最好的20所大学(附地理位置)Ⅱ
  10. 学生学籍查询窗体知识点
  11. Dreamweaver CS6破解教程[序列号+破解补丁]
  12. 数据库原理 | 第1章 概述
  13. 【树莓派不吃灰】基础篇⑮ SSH远程访问安全,涉及/etc/hosts.allow白名单 和 /etc/hosts.deny黑名单、ufw防火墙、密钥登录
  14. 作业2021-03-12
  15. ubuntu安装与配置ngnix静态代理与反向代理的流程
  16. 成都信息工程大学计算机分数线,成都信息工程大学2020年录取分数线(附2017-2020年分数线)...
  17. egret 发布微端项目
  18. 公众号如何跳转到页面php,图文详解微信公众号开发自定义菜单跳转页面并获取用户信息实例...
  19. 利用Python定时让微信发送信息
  20. 附加驱动管理软件 ubuntu_智邦国际生产进度管理软件:是一场深刻且十分必要的革命...

热门文章

  1. Image\Video matting论文调研
  2. layui穿梭框和layui表格数据交互
  3. 如何将excel中的日期和数字转换成文本
  4. javascript实用小技巧—实现分栏显示
  5. 大数据服务平台架构方案(ppt)
  6. 完结 数据分析路线(带图)
  7. qiun-data-charts组件使用
  8. 湘潭学计算机专业的学校,湘潭计算机职业技术学校(王牌专业)计算机专业
  9. vue路由实现原理总结
  10. 广东高中生多少人_18岁中国小伙单场70分,号称广东最强高中生