当前位置: 首页 > news >正文

Kafka-概述

一、Kafka是什么

1.定义

Apache Kafka 是一款开源的消息引擎系统。
消息引擎系统是一组规范。企业利用这组规范在不同系统之间传递语义准确的消息,实现松耦合的异步式数据传递。

二、消息队列的使用场景

传统消息队列的应用场景包括 缓存/削峰、解耦、异步通信

1.缓存/削峰

有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。

2.解耦

允许独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。

3.异步通信

允许用户把一个消息放入队列,但并不立即处理它,然后在需要的时候再去处理它们。

三、Kafka的使用场景

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

四、消息队列的模式

1.点对点模型

也叫消息队列模型。消费者主动拉取数据,消息收到后清除消息。
在这里插入图片描述
系统 A 发送的消息只能被系统 B 接收,其他任何系统都不能读取 A 发送的消息。日常生活的例子比如电话客服就属于这种模型:同一个客户呼入电话只能被一位客服人员处理,第二个客服人员不能为该客户服务。

2.发布 / 订阅模型

  • 可以有多个topic主题(浏览、点赞、收藏、评论等)
  • 消费者消费数据之后,不删除数据
  • 每个消费者相互独立,都可以消费到数据
    在这里插入图片描述

与上面不同的是,它有一个主题(Topic)的概念,你可以理解成逻辑语义相近的消息容器。该模型也有发送方和接收方,只不过提法不同。发送方也称为发布者(Publisher),接收方称为订阅者(Subscriber)。和点对点模型不同的是,这个模型可能存在多个发布者向相同的主题发送消息,而订阅者也可能存在多个,它们都能接收到相同主题的消息。生活中的报纸订阅就是一种典型的发布 / 订阅模型。

五、Kafka基础架构

image.png
1.为方便扩展,并提高吞吐量,一个topic分为多个partition
2.配合分区的设计,提出消费者组的概念,组内每个消费者并行消费
3.为提高可用性,为每个partition增加若干副本,类似NameNode HA
4.ZK中记录谁是leader,Kafka2.8.0以后也可以配置不采用ZK

  • 消息:Record;Kafka 处理的主要对象。
  • 消息生产者:Producer;向 Kafka broker 发消息的客户端。
  • 消息消费者:Consumer;向 Kafka broker 取消息的客户端。
  • 消费者组:Consumer Group(CG);消费者组,由多个 consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不 影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
  • Broker:一台 Kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个broker 可以容纳多个 topic。
  • 主题:Topic;可以理解为一个队列,生产者和消费者面向的都是一个 topic,主题是承载消息的逻辑容器,在实际使用中多用来区分具体的业务。
  • 分区:Partition;一个有序不变的消息序列。每个主题下可以有多个分区,为了实现扩展性,一个非常大的topic 可以分布到多个broker(即服务器)上,一个 topic 可以分为多个partition,每个 partition 是一个有序的队列。
  • 副本:Replica;一个topic 的每个分区都有若干个副本,一个 Leader 和若干个Follower。
  • Leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数
    据的对象都是 Leader。
  • Follower: 每个分区多个副本中的 “ 从 ” , 实时从Leader中同步数据,保持和
    Leader 数据的同步。Leader 发生故障时,某个 Follower 会成为新的 Leader。

《Kafka 核心技术与实战》学习笔记Day1

相关文章:

  • 企业网站的建设目的有哪些/域名购买
  • 保定网站搜索排名/软件培训机构排名
  • 京东网站建设的经费预算/推广赚佣金
  • 专业的武汉网站推广/google学术搜索
  • 网站设计的就业和发展前景/如何提高搜索引擎优化
  • 网站建设网站/竞价托管服务多少钱
  • 认识涤生大数据的几个月,彻底改变了我
  • 从管理学本科水平开始的统计学进阶
  • Spark 运行架构
  • 如何提高系统稳定性?
  • UITableView内输入框(UITextView)换行
  • Swagger使用
  • 研究生如何能(较快)找出某领域(去噪)已有算法的创新点或者引入其他领域的新算法?
  • 网络编程基础——UDP编程(2)
  • C进阶:文件的基础操作
  • doGet和doPost的用法和区别
  • 【学习笔记】【Pytorch】12.损失函数与反向传播
  • 数独(Python)