0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Kafka的四个基础概念学习

汽车玩家 来源:简书 作者:我没有三颗心脏 2020-05-03 18:20 次阅读

Kafka 创建背景

Kafka是一个消息系统,原本开发自 LinkedIn,用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。现在它已被多家不同类型的公司 作为多种类型的数据管道和消息系统使用。

活动流数据是几乎所有站点在对其网站使用情况做报表时都要用到的数据中最常规的部分。活动数据包括页面访问量(Page View)、被查看内容方面的信息以及搜索情况等内容。这种数据通常的处理方式是先把各种活动以日志的形式写入某种文件,然后周期性地对这些文件进行统计分析。运营数据指的是服务器的性能数据(CPU、IO 使用率、请求时间、服务日志等等数据)。运营数据的统计方法种类繁多。

近年来,活动和运营数据处理已经成为了网站软件产品特性中一个至关重要的组成部分,这就需要一套稍微更加复杂的基础设施对其提供支持。

Kafka 简介

Kafka 是一种分布式的,基于发布 / 订阅的消息系统。主要设计目标如下:

以时间复杂度为 O(1) 的方式提供消息持久化能力,即使对 TB 级以上数据也能保证常数时间复杂度的访问性能。

高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒 100K 条以上消息的传输。

支持 Kafka Server 间的消息分区,及分布式消费,同时保证每个 Partition 内的消息顺序传输。

同时支持离线数据处理和实时数据处理。

Scale out:支持在线水平扩展。

Kafka 基础概念

概念一:生产者与消费者

Kafka的四个基础概念学习

对于 Kafka 来说客户端有两种基本类型:生产者(Producer)和消费者(Consumer)。除此之外,还有用来做数据集成的 Kafka Connect API 和流式处理的 Kafka Streams 等高阶客户端,但这些高阶客户端底层仍然是生产者和消费者API,它们只不过是在上层做了封装。

这很容易理解,生产者(也称为发布者)创建消息,而消费者(也称为订阅者)负责消费or读取消息。

概念二:主题(Topic)与分区(Partition)

Kafka的四个基础概念学习

在 Kafka 中,消息以主题(Topic)来分类,每一个主题都对应一个「消息队列」,这有点儿类似于数据库中的表。但是如果我们把所有同类的消息都塞入到一个“中心”队列中,势必缺少可伸缩性,无论是生产者/消费者数目的增加,还是消息数量的增加,都可能耗尽系统的性能或存储。

我们使用一个生活中的例子来说明:现在 A 城市生产的某商品需要运输到 B 城市,走的是公路,那么单通道的高速公路不论是在「A 城市商品增多」还是「现在 C 城市也要往 B 城市运输东西」这样的情况下都会出现「吞吐量不足」的问题。所以我们现在引入分区(Partition)的概念,类似“允许多修几条道”的方式对我们的主题完成了水平扩展。

概念三:Broker 和集群(Cluster)

一个 Kafka 服务器也称为 Broker,它接受生产者发送的消息并存入磁盘;Broker 同时服务消费者拉取分区消息的请求,返回目前已经提交的消息。使用特定的机器硬件,一个 Broker 每秒可以处理成千上万的分区和百万量级的消息。(现在动不动就百万量级..我特地去查了一把,好像确实集群的情况下吞吐量挺高的..摁..)

若干个 Broker 组成一个集群(Cluster),其中集群内某个 Broker 会成为集群控制器(Cluster Controller),它负责管理集群,包括分配分区到 Broker、监控 Broker 故障等。在集群内,一个分区由一个 Broker 负责,这个 Broker 也称为这个分区的 Leader;当然一个分区可以被复制到多个 Broker 上来实现冗余,这样当存在 Broker 故障时可以将其分区重新分配到其他 Broker 来负责。下图是一个样例:

Kafka的四个基础概念学习

Kafka 的一个关键性质是日志保留(retention),我们可以配置主题的消息保留策略,譬如只保留一段时间的日志或者只保留特定大小的日志。当超过这些限制时,老的消息会被删除。我们也可以针对某个主题单独设置消息过期策略,这样对于不同应用可以实现个性化。

概念四:多集群

随着业务发展,我们往往需要多集群,通常处于下面几个原因:

基于数据的隔离;

基于安全的隔离;

多数据中心(容灾)

当构建多个数据中心时,往往需要实现消息互通。举个例子,假如用户修改了个人资料,那么后续的请求无论被哪个数据中心处理,这个更新需要反映出来。又或者,多个数据中心的数据需要汇总到一个总控中心来做数据分析。

上面说的分区复制冗余机制只适用于同一个 Kafka 集群内部,对于多个 Kafka 集群消息同步可以使用 Kafka 提供的 MirrorMaker 工具。本质上来说,MirrorMaker 只是一个 Kafka 消费者和生产者,并使用一个队列连接起来而已。它从一个集群中消费消息,然后往另一个集群生产消息。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • LinkedIn
    +关注

    关注

    0

    文章

    18

    浏览量

    14461
  • kafka
    +关注

    关注

    0

    文章

    50

    浏览量

    5211
收藏 人收藏

    评论

    相关推荐

    IGBT的四个主要参数

    IGBT的四个主要参数对于选择合适的IGBT器件至关重要。本文将介绍IGBT的四个主要参数:电压等级、电流等级、开关频率和热性能。 1. 电压等级 电压等级是IGBT的一重要参数,它决定了IGBT能够承受的最大电压。电压等级的
    的头像 发表于 07-25 11:05 2557次阅读

    四个2输入异或门数据表

    电子发烧友网站提供《四个2输入异或门数据表.pdf》资料免费下载
    发表于 05-22 09:58 0次下载
    <b class='flag-5'>四个</b>2输入异或门数据表

    四个2输入正极和栅极数据表

    电子发烧友网站提供《四个2输入正极和栅极数据表.pdf》资料免费下载
    发表于 05-17 10:28 0次下载
    <b class='flag-5'>四个</b>2输入正极和栅极数据表

    四个2输入正极和栅极数据表

    电子发烧友网站提供《四个2输入正极和栅极数据表.pdf》资料免费下载
    发表于 05-16 10:22 0次下载
    <b class='flag-5'>四个</b>2输入正极和栅极数据表

    四个2输入异或门数据表

    电子发烧友网站提供《四个2输入异或门数据表.pdf》资料免费下载
    发表于 05-13 11:04 0次下载
    <b class='flag-5'>四个</b>2输入异或门数据表

    四个2输入正极和栅极数据表

    电子发烧友网站提供《四个2输入正极和栅极数据表.pdf》资料免费下载
    发表于 05-10 10:10 0次下载
    <b class='flag-5'>四个</b>2输入正极和栅极数据表

    有源晶振四个脚是如何定义的?

    有源晶振四个脚是如何定义的?有源晶振型号类型比较多,而且每一种型号的引脚定义都有所不同,接法也不是通用的。下面小扬介绍一下有源晶振常用引脚识别法,以方便大家:有点标记的为1脚,按逆时针(管脚向下)分别为2、3、4。
    的头像 发表于 04-28 15:37 1481次阅读
    有源晶振<b class='flag-5'>四个</b>脚是如何定义的?

    四个引脚无源晶振的接线方法

    无源晶振是一种常用的被动元件,用于产生稳定的时钟信号。它通常有四个引脚,分别是VCC、GND、OUT和NC。
    的头像 发表于 01-23 18:15 6127次阅读

    kafka基本原理详解

    今天浩道跟大家分享一篇关于kafka相关原理的硬核干货,可以说即使你没有接触过kafka,也可以秒懂,一起看看!
    的头像 发表于 01-03 09:57 857次阅读
    <b class='flag-5'>kafka</b>基本原理详解

    氮化镓开关管的四个电极是什么

    氮化镓开关管是一种新型的半导体器件,适用于高频高压控制信号的开关应用。它由四个电极组成,包括栅极(G,Gate)、源极(S,Source)、漏极(D,Drain)和衬底(B,Body)。 首先,我们
    的头像 发表于 12-27 14:39 1057次阅读

    SMT丝印技术的历史发展的四个阶段,你知道吗?

    SMT丝印技术的历史发展的四个阶段,你知道吗?
    的头像 发表于 12-27 10:15 855次阅读

    kafka支持哪些消息交付语义?

    在读完kafka官方文档,kafka设计里的消息交付语义一章后,给我的第一印象是内容很抽象,于是草拟和总结了给副标题,并把相关内容进行了归类;有些生涩的句子,尽量用大白话和举例进行说明,并加入了总结。
    的头像 发表于 12-22 11:27 465次阅读
    <b class='flag-5'>kafka</b>支持哪些消息交付语义?

    如何保证kafka消息不丢失

    如果在简历上写了使用过kafka消息中间件,面试官大概80%的概率会问你:"如何保证kafka消息不丢失?"反正我是屡试不爽。
    的头像 发表于 12-19 09:52 703次阅读
    如何保证<b class='flag-5'>kafka</b>消息不丢失

    四个问题帮你确定是否需要采用有源电缆(AEC)解决方案

    四个问题帮你确定是否需要采用有源电缆(AEC)解决方案
    的头像 发表于 12-05 14:38 977次阅读
    <b class='flag-5'>四个</b>问题帮你确定是否需要采用有源电缆(AEC)解决方案

    vlookup函数的四个参数含义

    VLOOKUP函数是一种用于在Excel中查找和提取数据的功能强大的函数。它的四个参数含义分别是:查找值、查找范围、返回列索引和区域或表标志。 首先,让我们来详细了解这四个参数的含义,并讨论如何正确
    的头像 发表于 12-01 09:57 6929次阅读