网站首页 > 技术文章 正文
Kafka是非常重要的消息中间件,也是互联网应用的基石,下面我就全面来详解Kafka@mikechen
Kafka简介
Apache Kafka是分布式发布-订阅消息系统,它最初由LinkedIn公司开发,之后成为Apache顶级项目。
Kafka是一个由Scala和Java编写的企业级的消息发布和订阅系统,主要应用场景有:日志收集系统和消息系统。
Kafka的特性
1.高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒。
2.可扩展性:kafka集群支持热扩展;
3.持久性&可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失;
4.高并发:支持数千个客户端同时读写。
Kafka架构
它的架构包括以下组件:
1.话题(Topic)
消息的类别,主要用于对消息进行逻辑上的区分,每条发送到Kafka集群的消息都需要有一个指定的Topic,消费者根据Topic对指定的消息进行消费。
Kafka的数据就保存在Topic上,在每个 broker 上都可以创建多个 Topic。
2.分区 (Partition)
Topic的分区,每个 topic 可以有多个分区,分区的作用是做负载,提高 kafka 的吞吐量。
3.生产者(Producer)
Producer 即消息的生产者,负责往Kafka集群中发送消息,是消息的入口。
4.服务代理(Broker)
Kafka集群中的服务实例,也称之为节点,每个Kafka集群包含一个或者多个Broker。
简单的理解就是一台 Kafka服务器,Kafka Ccluster表示集群的意思,也被称为代理(Broker)。
5.消费者(Consumer)
消息的消费者,主动从Kafka集群中拉取消息,比如:从Broker拉数据,从而消费这些已发布的消息。
Kafka工作原理
1.消息生产
我们将消息的发布(publish)称作 producer。
2.消费消费
将消息的订阅(subscribe)表述为 consumer。
3.broker(代理)
将中间的存储阵列称作 broker(代理),这样就可以大致描绘出这样一个场面:
上图基本都是目前主流消息中间件的原型,可以很清楚的看见三者的关系。
生产者将数据生产出来,交给 broker 进行存储,如下图所示:
消费者需要消费数据了,就从broker中去拿出数据来,然后完成一系列对数据的处理操作。
备注:图上有个细节需要注意:producer 到 broker 的过程是 push也就是有数据就推送到 broker,而 consumer 到 broker 的过程是 pull是通过 consumer 主动去拉数据的。
多个 broker 协同合作,producer 和 consumer 部署在各个业务逻辑中被频繁的调用,三者通过 zookeeper管理协调请求和转发。
Kafka使用zookeeper作为其分布式协调框架,很好的将消息生产、消息存储、消息消费的过程结合在一起。
如下图所示:
这样一个高性能的分布式消息发布订阅系统就完成了。
Kafka的应用场景
1.日志收集
一个公司可以用Kafka可以收集各种服务的log。
2.消息系统
解耦和生产者和消费者,这也是目前使用比较多的场景,相当于起了一个缓存消息的作用。
3.用户活动跟踪
Kafka经常被用来记录web用户,或者app用户的各种活动,如浏览网页、搜索、点击等活动。
4.运营指标
Kafka也经常用来记录运营监控数据,包括:收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。
5.流式处理
比如spark streaming和storm等。
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
猜你喜欢
- 2024-10-25 使用自带zookeeper安装单机kafka(适合刚接触kafka的同学)
- 2024-10-25 不用 zookeeper 照样部署kafka集群
- 2024-10-25 深入了解Apache Kafka 深入了解对方的36个问题
- 2024-10-25 kafka和zookeeper在k8s集群踩的一些坑
- 2024-10-25 Kafka 2.8独立运行,不再需要ZooKeeper
- 2024-10-25 告别 ZooKeeper:Kafka 将提供自管理的元数据仲裁机制
- 2024-10-25 Kafka架构最全详解(图文全面总结)
- 2024-10-25 Zookeeper集群搭建及原理 zookeeper集群主要有哪三种角色
- 2024-10-25 Kafka架构和原理机制(图文全面详解)
- 2024-10-25 玩了分布式这么久,你不会连Kafka都不清楚吧
你 发表评论:
欢迎- 最近发表
-
- 吴谨言专访大反转!痛批耍大牌后竟翻红,六公主七连发力显真诚
- 港股2月28日物业股涨幅榜:CHINAOVSPPT涨1.72%位居首位
- 港股2月28日物业股午盘:CHINAOVSPPT涨1.72%位居首位
- 港股3月2日物业股涨幅榜:CHINAOVSPPT涨1.03%位居首位
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%
- 天赋与心痛的背后:邓鸣贺成长悲剧引发的深刻反思
- 冯小刚女儿徐朵追星范丞丞 同框合照曝光惹人羡,回应网友尽显亲民
- “资本大佬”王冉:51岁娶小17岁童瑶,并承诺余生为娇妻保驾护航
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%位居首位
- 「IT之家开箱」vivo S15 图赏:双镜云窗,盛夏风光
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)