学习《Kafka核心技术与实战》开篇

学习极客时间 《Kafka核心技术与实战》
作者 胡夕,Apache Kafka 的一名代码贡献者,目前在社区的 Patch 提交总数位列第 22 位,应该说算是国内比较活跃的贡献者了。

胡夕老师 赠言: 聪明人也要下死功夫

我们为什么要学习kafaka?

我们平时的学习工作过程中,你不可避免的会遇到生产者和消费者问题,无论是某毛双11,还是你自己练习的小程序,在生产者效率原高于消费者处理速度的场景,必须有一套机制或者中间件来平滑的处理生产者与消费者之间的矛盾。同时对于数据密集型应用来说,如何应对数据量激增、数据复杂度增加以及数据变化速率变快,是彰显大数据工程师、架构师功力的最有效表征。
我们欣喜地发现 Kafka 在帮助你应对这些问题方面能起到非常好的效果。就拿数据量激增来说,Kafka 能够有效隔离上下游业务,将上游突增的流量缓存起来,以平滑的方式传导到下游子系统中,避免了流量的不规则冲击。由此可见,如果你是一名大数据从业人员,熟练掌握 Kafka 是非常必要的一项技能。

kafaka、RabiitMQ、RocketMQ、IBM MQ 等都是消息引擎,其中Kafaka具有更高的吞吐量。

学习路径

在这里插入图片描述
在开篇中,胡夕老师给出了辅助学习的一张思维导图,可以帮你迅速了解相关知识结构体系是什么样的。《Kafka核心技术与实战》专栏大致从六个方面展开,包括 Kafka 入门、Kafka 的基本使用、客户端详解、Kafka 原理介绍、Kafka 运维与监控以及高级 Kafka 应用。

  • 第一部分 介绍消息引擎这类系统大致的原理和用途
  • 第二部分 则重点探讨 Kafka 如何用于生产环境
  • 第三部分 Kafka 客户端的方方面面,既有生产者的实操讲解也有消费者的原理剖析
  • 第四部分 介绍 Kafka 最核心的设计原理,包括 Controller 的设计机制、请求处理全流程解析等
  • 第五部分 Kafka 运维与监控的内容
  • 第六部分 简单介绍Kafka 流处理组件 Kafka Streams 的实战应用

消息引擎系统ABC

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

民间版解释:系统 A 发送消息给消息引擎系统,系统 B 从消息引擎系统中读取 A 发送的消息。

那么为什么系统A不能直接发送给系统B,这一点开篇已经说明,为了削峰填谷,避免下游消费者系统被上游生产者系统秒杀、压垮。

消息引擎的所做的事情:

  • 消息引擎传输的对象是消息;
    常见的消息格式: CSV、XML、JSON; Google 的 Protocol Buffer 或 Facebook 的 Thrift。
    Kafka 的选择:它使用的是纯二进制的字节序列。当然消息还是结构化的,只是在使用之前都要将其转换成二进制的字节序列。

  • 如何传输消息属于消息引擎设计机制的一部分。
    kafaka同时支持:点对点、发布/订阅模型;
    1.点对点模型:也叫消息队列模型。系统 A 发送的消息只能被系统 B 接收,其他任何系统都不能读取 A 发送的消息。
    日常生活的例子比如电话客服就属于这种模型:同一个客户呼入电话只能被一位客服人员处理,第二个客服人员不能为该客户服务。
    2.发布 / 订阅模型:与上面不同的是,它有一个主题(Topic)的概念,你可以理解成逻辑语义相近的消息容器。该模型也有发送方和接收方,只不过提法不同。发送方也称为发布者(Publisher),接收方称为订阅者(Subscriber)。
    和点对点模型不同的是,这个模型可能存在多个发布者向相同的主题发送消息,而订阅者也可能存在多个,它们都能接收到相同主题的消息。生活中的报纸订阅就是一种典型的发布 / 订阅模型。

相关术语

  • 消息:Record。Kafka 是消息引擎嘛,这里的消息就是指 Kafka 处理的主要对象。
  • 主题:Topic。主题是承载消息的逻辑容器,在实际使用中多用来区分具体的业务。
  • 分区:Partition。一个有序不变的消息序列。每个主题下可以有多个分区。
  • 消息位移:Offset。表示分区中每条消息的位置信息,是一个单调递增且不变的值。
  • 副本:Replica。Kafka 中同一条消息能够被拷贝到多个地方以提供数据冗余,这些地方就是所谓的副本。副本还分为领导者副本和追随者副本,各自有不同的角色划分。副本是在分区层级下的,即每个分区可配置多个副本实现高可用。
  • 生产者:Producer。向主题发布新消息的应用程序。
  • 消费者:Consumer。从主题订阅新消息的应用程序。
  • 消费者位移:Consumer Offset。表征消费者消费进度,每个消费者都有自己的消费者位移。
  • 消费者组:Consumer Group。多个消费者实例共同组成的一个组,同时消费多个分区以实现高吞吐。
  • 重平衡:Rebalance。消费者组内某个消费者实例挂掉后,其他消费者实例自动重新分配订阅主题分区的过程。Rebalance 是 Kafka 消费者端实现高可用的重要手段。
    在这里插入图片描述
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值