【MQ】kafka(一)——什么是kafka?在系统中干什么用?
一、前言
在这个系列博客中,小编将向大家介绍一下一款吞吐超级大的消息中间件——kafka。
说到消息中间件MQ,小编也在前面的博客中介绍过 rocketMq,activeMq等等。
至于为什么叫kafka呢?是因为创作它的程序员叫做jay krep,他非常喜欢 弗兰兹·卡夫卡,觉的kafka这个名字很酷,所以就起了这个名字。名字没有什么特别的意思。
二、什么是kafka?能干点什么?
Kafka是由Apache软件基金会开发的一个开源流平台,由Scala和Java编写。Kafka的Apache官网是这样介绍Kafka的。
流平台?干什么的?
From apache kafka官网
- To publish (write) and subscribe to (read) streams of events, including continuous import/export of your data from other systems.
- To store streams of events durably and reliably for as long as you want.
- To process streams of events as they occur or retrospectively.
翻译过来就是:
- 发布和订阅流数据流,包括从其他系统持续导入/导出数据。
- 持久化数据流,数据落地
- 处理数据流,数据流回放
三、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?在系统中干什么用?相关推荐
- 《吃透 MQ 系列》之扒开 Kafka 的神秘面纱
大家好,我是武哥.这是<吃透 MQ 系列>的第二弹,有些珊珊来迟,后台被好几个读者催更了,实属抱歉! 这篇文章拖更了好几周,起初的想法是:围绕每一个具体的消息中间件,不仅要写透,而且要控制 ...
- kafka 脚本发送_NWPC消息平台:在ecFlow系统中发送产品事件消息
本文属于介绍 NWPC 消息平台 系列文章. 本文介绍如何在基于 ecFlow 构建的数值预报业务系统中发送 NWPC 消息平台的 产品事件消息. 介绍 数值预报业务系统产品制作一般分为三个步骤: 监 ...
- kafka 基础知识梳理-kafka是一种高吞吐量的分布式发布订阅消息系统
一.kafka 简介 今社会各种应用系统诸如商业.社交.搜索.浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它 如何及时做到如上两点 ...
- Kafka深度解析(如何在producer中指定partition)(转)
原文链接:Kafka深度解析 背景介绍 Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统.主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能 ...
- kafka(一)-为什么使用kafka
我们知道kafka是消息队列的一种,我们要先知道为什么我们需要消息队列,什么场景下我们选择kafka. 1.为什么要用消息队列 解耦 在项目启动之初来预测将来项目会碰到什么需求,是极其困难的.消息系统 ...
- kafka之六:为什么Kafka那么快
转自: http://mp.weixin.qq.com/s?__biz=MzIxMjAzMDA1MQ==&mid=2648945468&idx=1&sn=b622788361 ...
- Kafka详解(包括kafka集群搭建)
目录 一.Kafka简介 Kafka是什么 消息系统简介 点对点消息传递模式 发布-订阅消息传递模式 kafka简单理解 Kafka的优点特点 学Kafka的意义何在 二.常用Message Queu ...
- 学习笔记Kafka(一)—— Kafka简介
一.什么是消息系统 消息系统负责将数据从一个应用程序传输到另一个应用程序,因此应用程序可以专注于数据,但不担心如何共享它. 分布式消息传递基于可靠消息队列的概念. 消息在客户端应用程序和消息传递系统之 ...
- kafka创建topic_一网打尽Kafka常用命令、脚本及配置,宜收藏!
前言 通过前面 7 篇文章的介绍,小伙伴们应该对 Kafka 运行工作原理有一个相对比较清晰的认识了. Kafka是什么?一起来看看吧! Kafka 安装及简单命令使用 Kafka中消息如何被存储到B ...
最新文章
- Android源码分析--MediaServer源码分析(二)
- 新一代开源Android渠道包生成工具Walle
- Database----Cursor
- 3位高二女生用大数据成功预测地铁出站人数 | 00后正在抛弃你
- jdbcType和javaType
- JAVA 调用Web Service的方法(转)
- 三层实例--加入信息
- ROS kinetic自定义路径规划算法
- 【盘点】2017美国人工智能专业最好的20所大学(附地理位置)Ⅱ
- 学生学籍查询窗体知识点
- Dreamweaver CS6破解教程[序列号+破解补丁]
- 数据库原理 | 第1章 概述
- 【树莓派不吃灰】基础篇⑮ SSH远程访问安全,涉及/etc/hosts.allow白名单 和 /etc/hosts.deny黑名单、ufw防火墙、密钥登录
- 作业2021-03-12
- ubuntu安装与配置ngnix静态代理与反向代理的流程
- 成都信息工程大学计算机分数线,成都信息工程大学2020年录取分数线(附2017-2020年分数线)...
- egret 发布微端项目
- 公众号如何跳转到页面php,图文详解微信公众号开发自定义菜单跳转页面并获取用户信息实例...
- 利用Python定时让微信发送信息
- 附加驱动管理软件 ubuntu_智邦国际生产进度管理软件:是一场深刻且十分必要的革命...