消息中间件系列(二):Kafka的原理、基础架构、以及使用场景
一:Kafka简介
Apache Kafka是分布式发布-订阅消息系统,在 kafka官网上对 kafka 的定义:一个分布式发布-订阅消息传递系统。 它最初由LinkedIn公司开发,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。
二:Kafka基本架构
它的架构包括以下组件:
1、话题(Topic):是特定类型的消息流。消息是字节的有效负载(Payload),话题是消息的分类名或种子(Feed)名;
2、生产者(Producer):是能够发布消息到话题的任何对象;
3、服务代理(Broker):已发布的消息保存在一组服务器中,它们被称为代理(Broker)或Kafka集群;
4、消费者(Consumer):可以订阅一个或多个话题,并从Broker拉数据,从而消费这些已发布的消息;
上图中可以看出,生产者将数据发送到Broker代理,Broker代理有多个话题topic,消费者从Broker获取数据。
三:Kafka基本原理
我们将消息的发布(publish)称作 producer,将消息的订阅(subscribe)表述为 consumer,将中间的存储阵列称作 broker(代理),这样就可以大致描绘出这样一个场面:
生产者将数据生产出来,交给 broker 进行存储,消费者需要消费数据了,就从broker中去拿出数据来,然后完成一系列对数据的处理操作。
kafka 官方给出的图:
多个 broker 协同合作,producer 和 consumer 部署在各个业务逻辑中被频繁的调用,三者通过 zookeeper管理协调请求和转发。这样一个高性能的分布式消息发布订阅系统就完成了。
图上有个细节需要注意,producer 到 broker 的过程是 push,也就是有数据就推送到 broker,而 consumer 到 broker 的过程是 pull,是通过 consumer 主动去拉数据的,而不是 broker 把数据主懂发送到 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
六:ActiveMQ、Kafka、RabbitMQ消息系统的对比
你可能也喜欢:
- 消息中间件系列(七):如何从0到1设计一个消息队列中间件
- 消息中间件系列(三):主流的消息队列中间件有哪些?
- 消息中间件系列(一):消息中间件介绍、典型使用场景、以及使用原则
- 消息中间件系列(四):消息队列MQ的特点、选型、及应用场景详解
- 消息中间件系列(八):Kafka、RocketMQ、RabbitMQ等的优劣势比较
- 消息中间件系列(五):MQ消息队列的12点核心原理总结
消息中间件系列(二):Kafka的原理、基础架构、以及使用场景相关推荐
- 区块链技术系列(3)- Fabric基础架构原理
前言 对于区块链方面多技术,我还是建议大家多看英文文档,多利用Google来搜索技术文章. 怎么搭建自己专属V-P-N来访问Google,请看我之前发的文章: 新人如何快速搭建自己的个人网站以及自己专 ...
- Netty系列二、Netty原理篇
文章目录 一.Netty概述 二.Netty整体架构设计 1.Reactor模型 2.Reactor模型分类 2.1 单Reactor单线程 2.2 单Reactor多线程 2.3 多Reactor多 ...
- vue.js项目实战运用篇之抖音视频APP-第二节:项目基础架构搭建
[温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...
- 全方位解析谷歌云的基础架构在游戏场景中的独特优势
根据 Sensor Tower 商店情报平台数据显示,2021年2月中国手游发行商在全球 App Store 和 Google Play 的收入排名中,共34个中国厂商入围全球手游发行商收入榜TOP1 ...
- mac 查看端口_黑客克星养成记 系列二:MAC-Flooding原理及解决方案
MAC-flooding攻击在当前的信息安全领域是较为常见的黑客攻击手段,通过简单黑客工具的使用,黑客们可以轻松实现盗取局域网中用户访问网页输入的用户名和密码信息,这是何等的可怕呀! 下面我们从几个方 ...
- PostgreSQL源码系列二:Postgres-XL调试基础GDB Debug范例
一. 前言 接上一篇,上篇的pg_hba的配置还是有点问题的,本篇将通过Debug来解析问题根源. 二. 问题 由于postgres是超级管理账户,实际使用中不可能开放给普通用户,我们模拟下生产环境, ...
- 【异步系列二】Promise原理及执行顺序详解
前言 Promise 是 javascript 中非常重要的一环,熟悉它是必须的,而且在面试中也常常会问到相关面试题. 在了解 Promise 之前,需要了解什么是异步编程,可以参考我的一篇文章:Ja ...
- MFS详解(二)——MFS原理和架构
今天继续给大家介绍Linux运维相关知识,本文主要内容是MFS介绍. 一.MFS架构 MFS的架构如下图所示: 二.MFS组件 在上图中,可以看出,MFS有以下三大组件: 1.Master Maste ...
- SSE图像算法优化系列二十九:基础的拉普拉斯金字塔融合用于改善图像增强中易出现的过增强问题(一)...
拉普拉斯金字塔融合是多图融合相关算法里最简单和最容易实现的一种,我们在看网络上大部分的文章都是在拿那个苹果和橙子融合在一起,变成一个果橙的效果作为例子说明.在这方面确实融合的比较好.但是本文我们主要讲 ...
最新文章
- nginx+tomcat配置负载均衡集群
- 【算法笔记】哈密顿问题
- UBuntu14.04下安装和卸载Qt5.3.1
- 《敏捷企业》作者访谈录
- C# System.Windows.Forms.NumericUpDown 控件全选其中文字
- Win11右键刷新怎么恢复 Win11右键刷新恢复教程分享
- Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)
- Linux 后台开发常用命令目录(更新 ing)
- 超快的前端引擎——artTemplate-3.0
- 吴恩达机器学习笔记——线性代数知识回顾、梯度下降、多项式线性回归、正则方程
- java实现中文数字与阿拉伯数字互相转换
- 太厉害了!28岁任北大博导的她,再获科学大奖!
- 2019年北京理工大学计算机专硕上岸经验分享
- java Runable类实现多线程计数器
- ElasticSearch 索引创建
- 中国信号调理器行业市场供需与战略研究报告
- 2021年6月程序员工资统计,平均15052元
- 绩效考核软件,强势助力二、三级公立医院绩效大考
- kalman、particle filter直白理解
- deepin、UOS应用软件标题栏大额头问题解决
热门文章
- Google Maps API 简易教程(四)
- Autodesk云计算系列视频 --- 云计算与Civil 3D
- Windows Internet
- c++ 线程间通信方式
- socket api中send()和recv()函数工作原理与要点
- rds基于什么开发_java rds
- tinyxml2遍历所有节点_Python实现二叉树的遍历
- 爬虫实战学习笔记_2 网络请求urllib模块+设置请求头+Cookie+模拟登陆
- logistic模型原理与推导过程分析(2)
- 四、Web服务器——Session Cookie JSP入门 学习笔记