网站首页 > 技术文章 正文
Kafka是分布式发布订阅消息系统,致力于高性能消息系统和日志收集。
本篇重点详解Kafka的原理架构与应用 @mikechen
Kafka核心架构
它的架构包括以下组件:
1、话题(Topic):是特定类型的消息流。消息是字节的有效负载(Payload),话题是消息的分类名;
2、生产者(Producer):是能够发布消息到话题的任何对象;
3、服务代理(Broker):已发布的消息保存在一组服务器中,它们被称为代理(Broker)或Kafka集群;
4、消费者(Consumer):可以订阅一个或多个话题,并从Broker拉数据,从而消费这些已发布的消息;
上图中可以看出,生产者将数据发送到Broker代理,Broker代理有多个话题topic,消费者从Broker获取数据。
Kafka原理机制
我们将消息的发布(publish)称作 producer,将消息的订阅(subscribe)表述为 consumer,将中间的存储阵列称作 broker(代理),这样就可以大致描绘出这样一个场面:
生产者将数据生产出来,交给 broker 进行存储,消费者需要消费数据了,就从broker中去拿出数据来,然后完成一系列对数据的处理操作。
多个 broker 协同合作,producer 和 consumer 部署在各个业务逻辑中被频繁的调用,三者通过 zookeeper管理协调请求和转发,这样一个高性能的分布式消息发布订阅系统就完成了。
图上有个细节需要注意,producer 到 broker 的过程是 push,也就是有数据就推送到 broker,而 consumer 到 broker 的过程是 pull,是通过 consumer 主动去拉数据的。
Zookeeper在kafka的作用
(1)无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。
(2)Kafka使用zookeeper作为其分布式协调框架,很好的将消息生产、消息存储、消息消费的过程结合在一起。
(3)同时借助zookeeper,kafka能够生产者、消费者和broker在内的所以组件在无状态的情况下,建立起生产者和消费者的订阅关系,并实现生产者与消费者的负载均衡。
Kafka的特性
1.高吞吐量、低延迟
kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。
2.可扩展性
kafka集群支持热扩展
3.持久性、可靠性
消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
4.容错性
允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)
5.高并发
支持数千个客户端同时读写
Kafka的应用场景
1.日志收集
一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。
2.消息系统
解耦和生产者和消费者、缓存消息等。
3.用户活动跟踪
Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
4.运营指标
Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。
5.流式处理
比如spark streaming和storm
以上!
阅读更多架构技术合集
作者:陈睿|mikechen mikechen的互联网架构作者
本文由 @mikechen 原创发布于mikechen的互联网架构,未经许可,禁止转载。
- 上一篇: Web3.0 App 的设计架构,看这一篇就够了
- 下一篇: js获取上传文件类型以及大小的方法
猜你喜欢
- 2025-06-15 Spring架构详解(1):Spring总体架构与设计理念
- 2025-06-15 Web3.0 App 的设计架构,看这一篇就够了
- 2025-06-15 嵌入式如何进行架构设计?(嵌入式实现)
- 2025-06-15 前端高手成长课:从业务深挖到代码架构设计方案落地|果fx
- 2025-06-15 门户网站Web服务器架构设计(门户网站web服务器架构设计实验报告)
- 2025-06-15 架构师之路:究竟什么是架构设计?(架构是干嘛的)
- 2025-06-15 万字详解高可用架构设计(高可用服务器架构)
- 2024-10-04 互联网架构设计:高性能的前端 互联网架构设计:高性能的前端是什么
- 2024-10-04 听说过后端架构师,但是你知道还有前端架构师这一说吗?
- 2024-10-04 《前端架构:从入门到微前端》目录
你 发表评论:
欢迎- 523℃Oracle分析函数之Lag和Lead()使用
- 520℃几个Oracle空值处理函数 oracle处理null值的函数
- 518℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 505℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 502℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 493℃【数据统计分析】详解Oracle分组函数之CUBE
- 473℃Oracle有哪些常见的函数? oracle中常用的函数
- 472℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (61)
- 前端数组 (73)
- 前端排序 (47)
- 前端定时器 (47)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)