[提前声明]
文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章
写作不易,转载请注明,谢谢!
代码案例地址: ?https://github.com/Mydreamandreality/sparkResearch


一文读懂系列:Kafka基本概念

  • 我们一般学习一个新的技能,都会经历如下这么一个阶段:
  • 这是个什么玩意啊,它能做什么啊,怎么做啊,为什么它就能做啊,哦这样啊.好厉害啊~
  • 我就按照这个顺序把kafka和spark,es给你们讲明白咯

什么是kafka?

  • Kafka准确的说是分布式消息系统
  • 要理解什么是分布式消息系统,我们要先了解它的应用场景何在

kafka的应用场景

  • 可以这么说,我们生活在一个数据大爆炸的时代,各行各业的数据大量的增长,给我们的业务带来了很大的压力,但是同时,巨大的数据也给我们带来了巨大的隐形财富

  • 那么这个时候我们就面临一个巨大的挑战

    • 如何把巨大的业务数据接入到我们的大数据分析平台,
    • 其次就是如何分析收集到的信息
  • 欸,这个时候kafka就应运而生啦

  • kafka是专为分布式高吞吐量系统设计的

  • 它的主要特性如下:

    • 应用解耦,异步消息,流量削峰,高性能,高可用,高容错,内置分区等等
  • 目前主流的分布式消息队列还有很多,比如:

    • ActiveMQ
    • RabbitMQ
    • ZeroMQ
    • 等等
    • [目前各方面综合性能最好的理论上讲是RabbitMQ]
  • 如上不同的分布式消息队列各自的适用场景都不同,它们之间详细的比较可以查看其它博主的文章


  • 我在这里举一个kafka的生产应用场景

    • 日志处理 [逻辑如下图]
    • 首先我们有一个日志采集客户端,负责采集我们服务器的日志,每天定时的写入kafka队列中
    • kafka则负责日志数据的接受,存储,转发
    • 我们的大数据分析平台负责 订阅并且消费kafka队列中的日志数据

分布式消息系统

那么我们知道kafka的应用场景后,就很好理解分布式消息系统了

  • 分布式消息系统就是把数据从一个应用传递到另一个应用中,这样我们的程序就可以专注于数据,而不用额外的关注数据是如何共享的
  • 我们的消息[也就是数据]在应用程序和消息系统之间是异步队列

消息模式

  • 在kafka中,我们有两种类型的消费模式

    • 一:点对点模式
    • 二:发布:订阅[PUB-SUB]模式

点对点模式

  • 消息生产者把消息存到队列中,然后消费者从队列中消息消息,

  • 但是此处要注意的是:

    • 消息被消费后,队列中就不再存储这条被消费的消息
  • 点对点支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费

  • 举个简单的例子:比如在淘宝的订单系统中:

    • 商家是消息生产者:它告诉消息队列还有多少个库存
    • 我们就是消息消费者,我们去购买商家的商品
    • 这个时候一个商家订单会对应到我们每个消费者
    • 我们都可以消费这条消息,但是我消费完后你就无法再重复消费了

点对点如下图所示:

发布-订阅[pub-sub]

  • 消息发布者把消息发布到主题[topic]中,同时可以有多个,订阅该主题的消费者进行消费,和点对点不同的是,发布订阅一个消息可以有多个消费者一起消费

发布-订阅如下图所示

kafka的优势

  • 如下是几个kafka的优势,[当然还不止这些]
  • 可靠性:Kafka是分布式,分区,复制和容错的
  • 高可用:Kafka使用分布式提交日志,这意味着消息会尽可能快地保留在磁盘上,因此它是持久的
  • 性能:Kafka对于发布和订阅消息都具有高吞吐量,就算我们是TB级别数据,它也保持稳定的性能,Kafka非常快,并保证零停机和零数据丢失

后续更新下kafka在java中的应用 以及和spark大数据框架整合的代码案例


一文读懂:Kafka(分布式消息队列)的基础概念,教程相关推荐

  1. 腾讯资深架构师干货总结:一文读懂大型分布式系统设计的方方面面

    1.引言 我们常常会听说,某个互联网应用的服务器端系统多么牛逼,比如QQ.微信.淘宝.那么,一个大型互联网应用的服务器端系统,到底牛逼在什么地方?为什么海量的用户访问,会让一个服务器端系统变得更复杂? ...

  2. Kafka 分布式消息队列介绍

    Kafka 分布式消息队列 类似产品有JBoss.MQ 一.由Linkedln 开源,使用scala开发,有如下几个特点: (1)高吞吐 (2)分布式 (3)支持多语言客户端 (C++.Java) 二 ...

  3. 一文读懂kafka(附加52道常见面试题)

    1.Kafka基本概念 1.什么是kafka Kafka是一个分布式消息中间件,支持分区,多副本,多订阅者,基于zookeeper协调的消息系统,它提供了类似于JMS的特性,但是在设计实现上完全不同, ...

  4. 消息队列:基础概念篇

    文章目录 前言 Who|什么是消息队列(MQ) Why|为什么用MQ 应用解耦 异步处理 流量削峰 MQ有什么优缺点 How|怎么用MQ 前言 接下来我在写一些技术类科普的文章,大致会以who(它是谁 ...

  5. 独家 | 一文读懂Corda分布式记账技术

    作者:Dan Newton 翻译:申利彬 校对:丁楠雅 本文约2600字,建议阅读10分钟. 本文为你介绍借鉴了区块链的部分特性的分布式记账技术,并分析其背后的原因. 什么是Corda? 最近我开始了 ...

  6. 一文读懂 Kafka 事务机制

    这篇文章主要讲述 Kafka 事务性相关原理,从 Kafka EOS 语义.幂等性.事务性等几个方面阐述. Kafka EOS 语义 EOS(Exactly Once Semantics,精确一次处理 ...

  7. 一文读懂 SuperEdge 分布式健康检查 (边端)

    作者:杜杨浩,腾讯云高级工程师,热衷于开源.容器和Kubernetes.目前主要从事镜像仓库.Kubernetes集群高可用&备份还原,以及边缘计算相关研发工作. 前言 SuperEdge 是 ...

  8. 分布式消息队列基础知识

    本文主要整理消息队列的一些基本概念,为后面的Rocketmq消息队列组件深入学习打下基础. 一.什么是消息队列? 维基百科介绍:消息队列(Message Queue)是一种进程间通信或同一进程的不同线 ...

  9. 即时通讯新手入门:一文读懂什么是Nginx?它能否实现IM的负载均衡?

    本文引用了"蔷薇Nina"的"Nginx 相关介绍(Nginx是什么?能干嘛?)"一文部分内容,感谢作者的无私分享. 1.引言 Nginx(及其衍生产品)是目前 ...

最新文章

  1. 来吧,用设计模式来干掉 if-else
  2. SnapKit 源码解读(五):Models
  3. c语言随机产生四位数,习题:随机产生N个四位正整数,将其中的素数选出,并升序排列之输…...
  4. 官宣预热iQOO 7强悍配置:“性能铁三角”加持 给你强悍全感
  5. OpenVZ,Xen,KVM等:虚拟化解决方案
  6. 力扣98. 验证二叉搜索树(JavaScript)
  7. springcloud 服务调用的两种方式
  8. 高数竞赛、数学建模、算法、计算机专业书籍等亲情大甩卖
  9. 评论:中国网络游戏虚拟物品交易的前景
  10. linux按目录名查找目录_如何在Linux中查找目录?
  11. 十七 SQL ALTER 与 AUTO INCREMENT
  12. 用excel对2000年-2015年游戏行业分析
  13. Google GMS认证测试几个名词
  14. MFC+opencv实现摄像头的打开与关闭
  15. 多元线性回归中的公式推导
  16. Golang-channel实现
  17. 对文本进行分类方法python_pytorch实现用CNN和LSTM对文本进行分类方式
  18. 扫雷• 规则: (1)随机产生 8*8 的雷分布图;• (2)用户“y”表示游戏,“q”退出游戏;• (3)让用户输入行列号,用键盘“m”标雷,“k”打开;• (4)打开区域为雷或者全部区
  19. @linux文件处理
  20. Mysql基础(入门)

热门文章

  1. 苹果在第二批22个国家推出iPhone 4S预订
  2. 计算机组装涉及哪些硬件,组装一台电脑需要哪些配件_电脑硬件组装一台电脑需要什么零件...
  3. “侵入”住宅的北京农夫世家餐饮管理有限公司青蛇
  4. 中科大计算机复试提交材料,中科大计算机复试经验分享(范文).docx
  5. 计算机程序设计论文2万字,计算机程序设计论文范文分享
  6. 中鑫吉鼎|13个理财小知识好懂实用,大人小孩都该知道
  7. 过去几轮熊市是怎么牛回来的?这轮熊市的出路又在那里?
  8. 批量提取、修改excel文件名称
  9. 英雄联盟日服务器修复好了吗,lol客户端bug遍地, 服务器瘫痪达一天! 官方修复后毫无补偿引不满...
  10. 企业微信pc机器人开源项目