kafka应用场景_Kafka系列文章之Kafka是什么第1篇

580d7b119d5789cf2520780bd71d9602.gif

前言

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

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

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

各消息队列对比

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

特性KafkaRocketMQActiveMQRabbitMQ
吞吐量高吞吐量,可达 10w 级别高吞吐量,可达 10w 级别1w 级别,吞吐量相交比较低1w 级别,吞吐量相交比较低
时效性延迟在 ms 级延迟在 ms 级延迟在 ms 级延迟在微妙级,延迟最低
可用性天然的分布式系统,数据有副本机制,可用性非常高分布式架构,可用性非常高主从架构,可用性较高同 ActiveMQ
维护性基于 Java 和 Scala 语言 实现,社区活跃度高,维护成本较低基于 Java 语言实现,社区活跃度高,维护成本较低基于 Java 语言实现,消息队列场景功能很完备,但社区活跃度较低,维护成本较高基于 erlang 语言开发,社区活跃度一般,小团队维护成本较高

Kafka 是什么?

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

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

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

Kafka 整体架构图

2b069f3ac01a71d4237d01a05a12076f.png
整体架构图

相关组件介绍

  • 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 集群玩玩,敬请期待。

点击关注作者,系列文章不迷路。

db03c9155efe3308c8f1ee14e3e48d5e.png

点击关注作者,系列文章不迷路

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值