专栏首页简单聊聊SparkKafka系列文章第1篇之Kafka是什么

Kafka系列文章第1篇之Kafka是什么

​前言

如果有幸目睹过系统从零到一的演变过程,大家估计都会有一种感叹,就是随着业务复杂度和流量的不断上升,系统变得越来越难以维护,面对高额的维护成本,攻城师们不得不对现有架构进行改造升级,以便使得系统更适合当下业务的发展。

说到架构改造升级,那到底该怎么改造呢?从哪里入手比较合适呢?这是一个比较大的话题,一两句话没办法讲述清楚,但是有一个出发点肯定是没有错的,就是为了更好的适应业务的发展需要进行必要的改造。

假设几个场景,场景一:用户 A 刷了微博,可能对某类博主比较感兴趣,为了让用户 A 看到更多可能感兴趣的人,该怎么做呢?场景二:用户 A 修改了年龄,搜索部门为了给其推荐可能感兴趣的商品,需要实时知道用户修改年龄的动作,采用何种方式来降低用户部门和搜索部门的耦合程度呢?场景三:京东 618 当天,大佬们想要看到实时成交总额,但又不能影响业务正常运行,又该怎么做呢?从以上几个例子可以看出,为了使得消息传递实时(说一下作者对实时的理解:在用户能接受的时间范围内得到想要的结果就是实时),降低业务部门的耦合度,需要有一个“中介”从中传递从而达到目的。

各消息队列对比

主流消息队列特性对比如下

特性

Kafka

吞吐量高吞吐量,可达 10w 级别高吞吐量,可达 10w 级别1w 级别,吞吐量相交比较低1w 级别,吞吐量相交比较低

RocketMQ

时效性延迟在 ms 级延迟在 ms 级延迟在 ms 级延迟在微妙级,延迟最低

ActiveMQ

可用性天然的分布式系统,数据有副本机制,可用性非常高分布式架构,可用性非常高主从架构,可用性较高同 ActiveMQ

RabbitMQ

维护性基于 Java 和 Scala 语言 实现,社区活跃度高,维护成本较低基于 Java 语言实现,社区活跃度高,维护成本较低基于 Java 语言实现,消息队列场景功能很完备,但社区活跃度较低,维护成本较高基于 erlang 语言开发,社区活跃度一般,小团队维护成本较高

Kafka 是什么?

Kafka 是一个分布式的、高吞吐量的、可持久性的、自动负载均衡的消息队列,同时 Kafka 从一定意义上来说具有横向易扩展性,通过 Kafka 也可以降低系统间的耦合度。

Kafka 消息队列中的消息生产消费模型是什么样的,即消息从何处来,又被送往何处去

从上图可以看出,消息的产生可以是 APP 应用、DB 等等渠道,从各渠道产生的消息交给 Kafka Cluster,然后在通过计算将结果送到 DB、APP 等应用中。其实说白了就是一个典型的生产者消费者模型的具体应用。

Kafka 整体架构图

整体架构图

相关组件介绍

Producer

消息发布者;即主要作用是生产数据,并将产生的数据推送给 Kafka 集群。

Consumer

消息消费者;即主要作用是 kafka 集群中的消息,并将处理结果推送到下游或者是写入 DB 资源等。

Zookeeper Cluster

存储 Kafka 集群的元数据信息,比如记录注册的 Broker 列表,topic 元数据信息,partition 元数据信息等等。

Broker

Kafka 集群由多台服务器构成,每台服务器称之为一个 Broker 节点。

Topic

主题,表示一类消息,consumer 通过订阅 Topic 来消费消息,一个 Broker 节点可以有多个 Topic,每个 Topic 又包含 N 个 partition(分区或者分片)。

Partition

partition 是一个有序且不可变的消息序列,它是以 append log 文件形式存储的,partition 用于存放 Producer 生产的消息,然后 Consumer 消费 partition 上的消息,每个 partition 只能被一个 Consumer 消费。partition 还有副本的概念,后面文章来详细介绍。

总结

本篇文章主要介绍了 Kafka 是什么,Kafka 的整体架构及各组件组成;为了让大家更容易理解和接受,部分概念没有完全展开,在后续的文章中我们会一一来详细介绍,请大家放心;基本概念讲完了,下篇文章我们来实操搭建一个 Kafka 集群玩玩,敬请期待。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Kafka系列9:面试题是否有必要深入了解其背后的原理?我觉得应该刨根究底(上)

    在本文开始之前,作者一直有个疑惑,就是面试题是只写写问题和答案就草草了事,还是应该深入分析一下其背后发生的一些原理。和朋友探讨以后作者还是决定采用后者的方式,因...

    z小赵
  • Kafka系列9:面试题是否有必要深入了解其背后的原理?我觉得应该刨根究底(上)

    在本文开始之前,作者一直有个疑惑,就是面试题是只写写问题和答案就草草了事,还是应该深入分析一下其背后发生的一些原理。和朋友探讨以后作者还是决定采用后者的方式,因...

    z小赵
  • 重要:Kafka第3篇之一条消息如何被存储到Broker上

    经过上篇文章的简单实战之后,今天来聊聊生产者将消息从客户端发送到 Broker 上背后发生了哪些故事,看不看由你,但是我保证可以本篇文章你一定可以学到应用背后的...

    z小赵
  • Kafka的生成者、消费者、broker的基本概念

    kafka是一款基于发布与订阅的消息系统。它一般被称为“分布式提交日志”或者“分布式流平台”。文件系统或者数据库提交日志用来提供所有事物的持久化...

    chenchenchen
  • Kafka集群消息积压问题及处理策略

    通常情况下,企业中会采取轮询或者随机的方式,通过Kafka的producer向Kafka集群生产数据,来尽可能保证Kafk分区之间的数据是均匀分布的。

    大数据学习与分享
  • Apache Kafka简单入门

    为了理解Kafka是如何做到以上所说的功能,从下面开始,我们将深入探索Kafka的特性。

    王知无
  • Kafka 面试题,看这一篇就够了

    原文链接:https://url.cn/5h7oDHS

    业余草
  • 面试官为什么喜欢拿 Kafka 考验求职者

    小灰工作3年了,一直在一家初创公司做大数据架构师,最近几次大厂的面试经历都百般不顺,小灰心如死灰,想着如果一直跳槽无望,只能跟着时下最火的地摊儿大军一起去出摊儿...

    江帅帅
  • Kafka 简介

    在Kafka中,客户端和服务器之间的通信是通过一种简单的,高性能的,语言不可知的TCP协议完成的。

    小忽悠
  • 经典面试题-Kafka

    cwl_java

扫码关注云+社区

领取腾讯云代金券