iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >kafka该如何入门
  • 311
分享到

kafka该如何入门

2023-06-19 11:06:12 311人浏览 独家记忆
摘要

kafka该如何入门,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。背景:当今社会各种应用系统诸如商业、社交、搜索、浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我

kafka该如何入门,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

背景:

当今社会各种应用系统诸如商业、社交、搜索、浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战:

  1. 如何收集这些巨大的信息

  2. 如何分析它

  3. 如何及时做到如上两点

以上几个挑战形成了一个业务需求模型,即生产者生产(produce)各种信息,消费者消费(consume)(处理分析)这些信息,而在生产者与消费者之间,需要一个沟通两者的桥梁-消息系统。

从一个微观层面来说,这种需求也可理解为不同的系统之间如何传递消息。

Kafka诞生:由 linked-in 开源

kafka-即是解决这类问题的一个框架,它实现了生产者和消费者之间的无缝连接。

kafka-高产出的分布式消息系统(A high-throughput distributed messaging system)

Kafka特性:它形容自己的设计是独一无二的,先看一下它有如何过人之处:

  • 快:单个kafka服务每秒可处理数以千计客户端发来的几百MB数据。

  • 可扩展性:一个单一集群可作为一个大数据处理中枢,集中处理各种类型业务

  • 持久化:消息被持久化到磁盘(可处理TB数据级别数据但仍保持极高数据处理效率),并且有备份容错机制

  • 分布式:着眼于大数据领域,支持分布式,集群可处理每秒百万级别消息

  • 实时性:生产出的消息可立即被消费者消费

kafka该如何入门

Kafka的组件:

  • topic:消息存放的目录即主题

  • Producer:生产消息到topic的一方

  • Consumer:订阅topic消费消息的一方

  • Broker:Kafka的服务实例就是一个broker

如下图所示,Producer生产的消息通过网络发送给Kafka cluster,而Consumer从其中消费消息

kafka该如何入门

Topic 和Partition:

消息发送时都被发送到一个topic,其本质就是一个目录,而topic由是由一些Partition Logs(分区日志)组成,其组织结构如下图所示:

(一个主题可以包含多个分区)

kafka该如何入门

我们可以看到,每个Partition中的消息都是有序的,生产的消息被不断追加到Partition log上,其中的每一个消息都被赋予了一个唯一的offset值。

Kafka集群会保存所有的消息,不管消息有没有被消费;我们可以设定消息的过期时间,只有过期的数据才会被自动清除以释放磁盘空间。比如我们设置消息过期时间为2天,那么这2天内的所有消息都会被保存到集群中,数据只有超过了两天才会被清除。

Kafka需要维持的元数据只有一个--消费消息在Partition中的offset值,Consumer每消费一个消息,offset就会加1。其实消息的状态完全是由Consumer控制的,Consumer可以跟踪和重设这个offset值,这样的话Consumer就可以读取任意位置的消息。

把消息日志以Partition的形式存放有多重考虑,第一,方便在集群中扩展,每个Partition可以通过调整以适应它所在的机器,而一个topic又可以有多个Partition组成,因此整个集群就可以适应任意大小的数据了;第二就是可以提高并发,因为可以以Partition为单位读写了。

分布式:

(主从集群)

这些Partitions分布在集群的每一台server上,而每一个Partition在集群中都可以有多个备份,这个备份数量是可配置的。

每个Partition都有一个leader server,而其他备份的server都称为followers,只有leader服务器才会处理这个Partition上所有的读写请求,而其它followers则被动的复制leader上的数据。如果一个leader挂掉了,followers中的一个服务器则会自动升级为leader。因此,其实集群中的每个服务器都扮演着一个Partition的leader服务器,和其它Partition的follower服务器。

Producers:

Producer可以根据自己的选择发布消息到一个主题,Producer也可以自己决定把消息发布到这个主题的哪个Partition,当然我们可以选择api提供的简单的分区选择算法,也可以自己去实现一个分区选择算法。

Consumers:

消息传递通常由两种模式,queuing(队列)和publish-subscribe (发布-订阅)

  • queuing:每个Consumer从消息队列中取走一个消息

  • pub-scrib:消息被广播到每个Consumer

Kafka通过提供了一个对Consumer的抽象来同时实现这两种模式-ConsumerGroup。Consumer实例需要给自己指定一个ConsumerGroup的名字,如果所有的实例都用同一个ConsumerGroup名字,那么这些Consumer就会以queuing的模式工作;如果所有的实例分别用的不同的ConsumerGroup名字,那么它们就以public-subscribe模式工作。

(group的概念只针对于客户端,如果有多个客户端定义了多个组时,broker会以pub-scrib的形式将消息发送到每一个group上)

如下图所示:含两台server的集群一共有p0~p3四个Partition,两个Consumer Group,在Group内部是以queuing的模式消费Partition,在Group之间是以pub-scrib模式消费。

kafka该如何入门

消息顺序性:

Kafka是如何确保消息消费的顺序性的呢?前面讲到过Partition,消息在一个Partition中的顺序是有序的,但是Kafka只保证消息在一个Partition中有序,如果要想使整个topic中的消息有序,那么一个topic仅设置一个Partition即可。

关于kafka该如何入门问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: kafka该如何入门

本文链接: https://www.lsjlt.com/news/295710.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • kafka该如何入门
    kafka该如何入门,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。背景:当今社会各种应用系统诸如商业、社交、搜索、浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我...
    99+
    2023-06-19
  • Linux deploy该如何入门
    今天就跟大家聊聊有关Linux deploy该如何入门,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。作为一名程序员,不管是前端还是后端,自然是离不开和服务器打交道的。比如我就一直想有...
    99+
    2023-06-28
  • SAP PI该如何入门
    今天给大家介绍一下SAP PI该如何入门。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。SAP PI入门SAP ERP是什么对于任何业务——无论是大的还是小的—...
    99+
    2023-06-05
  • Git和Github的该如何入门
    今天就跟大家聊聊有关Git和Github的该如何入门,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。本篇文章给大家带来了Git和Github详细入门教程,Git是目前世界上最先进的分布...
    99+
    2023-06-22
  • Zookeeper该怎样入门
    Zookeeper该怎样入门,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Zookeeper是什么官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache ...
    99+
    2023-06-05
  • K8s该快速入门
    这篇文章将为大家详细讲解有关K8s该快速入门,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。通过一个业务发展的故事,分享 K8s 出现的原因以及它的运作方式。...
    99+
    2024-04-02
  • Log4j该怎么入门
    本篇文章为大家展示了Log4j该怎么入门,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Log4j实在是很熟悉,几乎所有的Java项目都用它啊。但是我确一直没有搞明白。终于有一天我受不了了,定下心去看...
    99+
    2023-06-03
  • Tensors该怎么入门
    本篇文章为大家展示了Tensors该怎么入门,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、入门Tensors(张量)Tensors(张量)类似于NumPy中的ndarray,另外它还可以使用GP...
    99+
    2023-06-04
  • 10 Kafka基础入门与实践
    作者:禅与计算机程序设计艺术 1.简介 Kafka是一个开源分布式流处理平台,它最初由LinkedIn公司开发,2011年才被捐献给Apache基金会,并成为Apache项目之一。它的主要功能是在分...
    99+
    2023-10-23
    大数据 人工智能 语言模型 Java Python 架构设计
  • Linux实时日志监控:Python新手应该如何入门?
    在Linux系统中,日志是一个非常重要的组成部分,它记录了系统的运行状态、错误信息以及用户的操作记录等等。实时监控日志可以及时发现系统运行中的问题,避免出现严重的故障。本文将介绍如何使用Python实现Linux实时日志监控。 一、日志文...
    99+
    2023-08-28
    实时 日志 linux
  • 前端框架vue该怎么入门
    本篇文章给大家分享的是有关前端框架vue该怎么入门,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。vue是现在很火的一个前端MVVM框架,它以数...
    99+
    2024-04-02
  • 如何入门MongoDB
    今天就跟大家聊聊有关如何入门MongoDB,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。NoSQL 非关系型数据库MongoDB 是一个基于分布式文...
    99+
    2024-04-02
  • 入门Linux到底该学什么好
    这篇文章将为大家详细讲解有关入门Linux到底该学什么好,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。我们常常听到很多人说要学学Linux或者被人告知说应该学学Linux,那么学Linux到...
    99+
    2023-06-15
  • 如何入门AngularJS
    今天就跟大家聊聊有关如何入门AngularJS,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。介绍首先需要指出什么是angular js,其实说白了a...
    99+
    2024-04-02
  • JavaScript入门应该看的书有哪些
    这篇文章主要介绍了JavaScript入门应该看的书有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   入门书籍   看完之后基本...
    99+
    2024-04-02
  • SQL注入该如何理解
    SQL注入该如何理解,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。SQL是什么?结构化查询语⾔(Structured Query Langua...
    99+
    2024-04-02
  • Python入门难吗?如何顺利入门Python学习?
    很多人想要抓住人工智能的红利,转行Python,首要的问题就是:Python入门难吗在回答这个问题之前,我们需要了解一下Python是什么Python是一种计算机程序设计语言。你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常...
    99+
    2023-06-02
  • Kafka中如何将数据导入到Elasticsearch
    本篇文章为大家展示了Kafka中如何将数据导入到Elasticsearch,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Elasticsearch作为当前主流的全文检索引擎,除了强大的全文检索能力和...
    99+
    2023-06-02
  • 如何实现HTML入门
    如何实现HTML入门,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。您需要什么在 w3school,您不需要任何工具就可以学习 HTML。您不需要任何 HTML ...
    99+
    2023-06-03
  • 如何实现J2SE入门
    这期内容当中小编将会给大家带来有关如何实现J2SE入门,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。J2SE入门:1. 预备知识2. 存储方式和操作控制3. 面向对象技术4. 常用数据结构5. 异常处理机...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作