为了给您提供更优质的服务,请您先完善以下信息:
确认提交

扫码关注

爱数技术支持中心公众号

请选择:

请选择咨询类型

AnyShare
AnyBackUp
AnyRobot

扫码关注

爱数技术支持中心公众号

contact us

提交成功!

我们将在 24 小时之内联系你。

性能爆表
AnyShare
如何购买
我已是Anyshare 客户
AnyRobot
如何购买
购买 AnyRobot 订阅服务
我已是 AnyRobot 客户
一对一在线咨询
我是 AnyRobot 新客户
一对一在线咨询

爱数博客

全部 AnyBackup AnyShare AnyRobot AnyDATA AnyFabric

AnyRobot重要组件之Kafka——基本概念入门

2023-12-13 732 0
    Kafka 作为AnyRobot非常重要的一个组件,担当数据缓存、削峰平谷的作用,那么Kafka到底是什么、是怎么运行的,本文将一一来讲解。
      首先我们先来了解下,Kafka基本概念。

一、什么是Kafka

     Kafka 是分布式发布-订阅消息系统。它最初由 LinkedIn 公司开发,之后成为 Apache 项目的一部分,它具有以下特点:
  • 高吞吐量、低延迟:Kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition,consumer group 对 partition 进行consume操作;
  • 可扩展性:Kafka集群支持热扩展;
  • 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失;
  • 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败);
  • 高并发:支持数千个客户端同时读写;
  • 顺序性:由生产者发送到一个特定的主题分区的消息将被以他们被发送的顺序来追加。如果一个消息M1和消息M2都来自同一个生产者,M1先发,那么M1将有一个低于M2的偏移,会更早在日志中出现。消费者看到的记录排序就是记录被存储在日志中的顺序。


二、Kakfa使用场景  
  • 日志收集:收集各种服务log,通过kafka以统一接口服务的方式开放给各种consumer,例如Hadoop、Hbase、Solr等。
  • 消息系统:解耦生产者和消费者、缓存消息等。
  • 用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到Kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
  • 运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。
  • 流式处理:比如 Spark Streaming 和 Storm。
  • 事件源等。

三、Kafka基本架构
        Kafka的运行架构如下图所示,各组件之间通过TCP协议通信:
   
                        
 

1.Producers(生产者)

    生产者负责创建消息。一般情况下,生产者在把消息均衡地分布到在主题的所有分区上,而并不关心消息会被写到哪个分区。如果想要把消息写到指定的分区,可以通过自定义分区器来实现。
    生产者将消息写入主题的一个或多个分区,然后由 Kafka 集群将消息存储在该分区的消息队列中。生产者可以使用异步或同步方式向 Kafka 发送消息。异步方式意味着生产者可以同时向多个主题发送消息,而不必等待确认消息是否成功发送。同步方式意味着生产者必须等待 Kafka 确认消息已成功发送,然后才能发送下一条消息。
2. Broker(中间者): 
  Kafka 集群由多个 Broker 组成。每个 Broker 都是一个独立的服务器,它负责管理一个或多个主题的分区。Broker 接收来自生产者的消息,并将消息存储在消息队列中,同时,它还处理来自消费者的请求,并将消息发送回消费者。每个分区都会被分配到一个 Broker 上,并在该 Broker 上进行复制,以确保数据的高可用性和冗余性。
3. Topic(主题)
     Topic(主题)是一个逻辑概念,用于组织和分类消息。它是Kafka消息系统中的基本单元,用于将消息进行逻辑上的分组和归类。可以看作是一个发布-订阅模型中的主题或频道,消息的生产者将消息发布到特定的Topic中,而消息的消费者则从订阅或订阅特定的Topic来接收消息。
     每个Topic可以有一个或多个分区(Partition),每个分区可以保存不同时间段的消息序列。分区是Topic的物理存储单位,它将消息划分为多个有序的部分,并分布在Kafka集群的不同节点上。
    通过使用Topic,Kafka实现了高度可扩展和分布式的消息发布-订阅系统。它允许多个生产者并行地向一个或多个Topic发送消息,并且多个消费者可以独立地订阅不同的Topic进行消息消费。通过创建不同的Topic,可以根据需求将消息进行分类、分割和分发,以满足不同业务场景下的消息传递需求。例如,可以创建一个名为"sales"的Topic来存储订单相关的消息,创建一个名为"traces"的Topic来存储日志消息等。Topic在Kafka中是用于组织和分类消息的逻辑概念,它允许消息的生产者和消费者按照一定的规则进行消息的发布和订阅。

4.Consumer (消费者)

   消费者是消费者群组的一部分,消费者负责消费消息。消费者可以订阅一个或者多个主题,并按照消息生成的顺序来读取它们。消费者通过检查消息的偏移量 (offset) 来区分读取过的消息。偏移量是一个不断递增的数值,在创建消息时,Kafka 会把它添加到其中,在给定的分区里,每个消息的偏移量都是唯一的。消费者把每个分区最后读取的偏移量保存Zookeeper 或 Kafka 上,如果消费者关闭或者重启,它还可以重新获取该偏移量,以保证读取状态不会丢失。
    一个分区只能被同一个消费者群组里面的一个消费者读取,但可以被不同消费者群组中所组成的多个消费者共同读取。多个消费者群组中消费者共同读取同一个主题时,彼此之间互不影响。
     以上是Kafka基本概念入门,后续文章我们将继续进一步来探讨Kafka运作的内部原理。
 

请就本文对您的益处进行评级:

标签

产品技术

相关文章

热门标签

版本发布 在线教学
ai-assistant
chat
support
trial
需求助手 (内容由 AI 大模型生成,请仔细甄别)