1、kafka是什么?

kafka是什么?借用官网的一幅图,一段话,身为技术的舔狗,我们舔舔他的魅力。kafka,一个用来构建实时数据管道流应用程序。它具有水平伸缩性,容错性,飞快运行,并且已经运行在上千家公司的产品中。wow。so cool,用它。

首先,他是一个分布式流数据处理平台。从这个角度来说,一个流平台需要具备三个关键能力:

发布订阅消息流,消息队列,或者消息发布系统。

高容错,持久化存储消息流。

当消息流到达时,高速处理。

毫无疑问,kafka是具备这些能力的。正如官网所说,

kafka适合用来构建几个系统之间稳定可靠获取数据的实时数据流通。

kafka适合用来构建实时数据处理的应用。

以上内容来自官网,有英语35级的小白搬运。

2、kafka的使用场景?

企业的系统运转,总是会时时刻刻地产生数据,我们都是数据马车上的工程师,企业能走得有多远,要看马车,马车很多,作用各不相同,有些内有乾坤,存住海量数据,有些思维智能,分析海量数据,相互协作,为公司红尘滚滚,策马奔腾。

一家牛逼的公司,总是会出动许许多多的马车,不,是像始皇帝那样的战车,一剑指,万马冲。那么,大家跑着跑着,数据源源不断产生,总是会成为信息孤岛,数据得流通呀。怎么获取数据,分析数据呢?

一匹战马一天产生一个亿的数据,十匹,10亿,百匹,百亿。我们的kafka这时候就闪亮登场,数据源源不断地产生,源源不断地发送给kafka,kafka就是数据流里的那座跨海大桥,把一座座孤岛串联起来。拓展疆土的战马通过kafa流转数据,提供给智能战马分析数据,创造价值,指明方向。

3、kafka处理速度有多快?

数据那么多,能处理过来才怪,想想挑剔又可爱的架构师们,头发能日渐残花,还不是为了做个快男吗?系统必须要快,快,快,快到看不见。那么kafka能满足要求么?基于上文我们可以知道kafka是要持久化存储到磁盘的。

kafka每次写入数据都写入磁盘,那么很明显速度肯定无法保证。我们总是用吞吐量来描述性能有多快,一秒钟能处理多少数据是检验的一个标准。而kafka单机可以支持每秒几十万消息写入,这样的性能怪兽,舔他。

那么为什么kafka的性能为什么这么快呢?高吞吐的实现,必须要依赖于低延迟,而kafka是基于磁盘存储的,这明显会使得kafka不可能这么快,那么就要提到kafka的极其牛逼的架构设计。

1.kafka自己不管理缓存,每次写入磁盘,首先写入到操作系统的page cache。

首先我们普及一下什么是操作系统的page cache。当我们的业务系统或者应用想要  读取磁盘文件的时候,操作系统会先分配一些内存,将数据先加载到这些内存  中,然后再由系统读取。当我们的系统要将数据写入到磁盘,也会由操作系统先分配内存,数据会先写入内存,再有操作系统写入磁盘。

而kafka就是基于这样的设计。所以说,其实每次kafka的写入并没有直接发生磁盘IO,写入的大部分数据都是停留在操作系统的page cache里面。

相应的,当需要读取数据的时候,page cache里面的数据缓存的愈多,读取的速度也会相应提升。这里说明一下,优秀的框架都会相似之处,ES也采用了类似的设计。

2.磁盘的写入是顺序写入,而不是随机写入。

kafka写磁盘文件的时候是追加写入到文件末尾,磁盘顺序写入,这样子的性能是很高的,比磁盘随机写入高了好几个level。

3.利用sendfile机制,实现零拷贝技术,优化了Kafka进程和操作系统的上下文切换的次数,减少了数据拷贝的次数。

我们这里来思考一下,当我们业务系统要从kafka中读取数据的时候,是怎么个流程?

首先Kafka进程肯定先是从page cache中去读,没有读到就会从磁盘读取,当读到数据之后就会缓存到操作系统的一个page cache里面。

上下文切换到Kafka进程,将操作系统的page cache中的缓存数据拷贝到业务系统内存中,比如jvm内存中。

上下文切换到操作系统,将Kafka进程中的内存数据拷贝到socket cache中。

最终数据拷贝到网卡的buffer,通过网卡发送给消费端业务系统。

这其中我们可以看到有多次上下文切换和内存数据拷贝的过程,内核空间和用户空间频繁进行数据拷贝,这样子来说是很浪费性能的。

第2步和第3步要是能省略,将page cache里面的数据直接发送到网卡的buffer,这样子性能能提升好多。而这个就是零拷贝的一种实现,性能相当高。

可以看到kafka本质上就是希望通过数据读写都尽可能在操作系统的内存中完成,而不是频繁进行用户态和系统内核态之间的拷贝。这样子大大提升读写的性能。

架构初探 · 快男kafka相关推荐

  1. 云原生时代, Kubernetes 多集群架构初探

    为什么我们需要多集群? 近年来,多集群架构已经成为"老生常谈".我们喜欢高可用,喜欢异地多可用区,而多集群架构天生就具备了这样的能力.另一方面我们也希望通过多集群混合云来降低成本, ...

  2. 大数据架构:flume-ng+Kafka+Storm+HDFS 实时系统组合

    个人观点:大数据我们都知道hadoop,但并不都是hadoop.我们该如何构建大数据库项目.对于离线处理,hadoop还是比较适合的,但是对于实 时性比较强的,数据量比较大的,我们可以采用Storm, ...

  3. 《数字货币交易所架构初探》— PPIO Code Talks 第二期续

    PPIO Code Talks 致力于打造一个以上海为中心,辐射全球的高质量区块链学习,分享,交友平台. 在 Code Talks 的第二期活动中,我们有幸邀请到 Trapdoor CEO Star. ...

  4. 【ORACLE】OGG-微服务架构初探2(MA配置)

    前情回顾 上一节中我们已经完成了OGG软件的安装,管理服务的创建,MAWeb管理界面也正常,接下来就开始正式进入数据同步的配置流程. 要了解上节内容:[ORACLE]OGG-微服务架构初探1(环境安装 ...

  5. 01_MIPS架构初探

    MIPS架构初探 MIPS基础 什么是MIPS? MIPS(无互锁流水线微处理器)是一种精简(RISC)指令系统结构(ISA),起源于Stanford大学John Hennessy教授的研究成果 MI ...

  6. 跟我一起学RT-Thread之ARM架构初探

    ARM架构初探 1.地址空间 1.1.ARM架构下CPU如何访问寄存器 1.2.ARM架构下CPU访问寄存器流程 1.3.ARM架构与X86架构外设区别 1.4.RICS和CISC的比较 1.4.1. ...

  7. kafka tool 查看指定group下topic的堆积数量_ELK架构下利用Kafka Group实现Logstash的高可用...

    系统运维的过程中,每一个细节都值得我们关注 下图为我们的基本日志处理架构 所有日志由Rsyslog或者Filebeat收集,然后传输给Kafka,Logstash作为Consumer消费Kafka里边 ...

  8. 在ELFK架构中加入kafka

    传统的ELFK架构中,filebeat到logstash这个过程中,由于logstash要进行日志的分析处理,而filebeat至进行日志的收集和发送,处理过程较为简单,所以当日志量非常巨大的时候,l ...

  9. Kafka(消息队列原理,kafka定义,Kafka架构原理,kafka架构的工作流程)秒懂的kafka

    目录 什么是Kafka? 消息队列原理: 为什么要用Kafka? kafka的架构 kafka工作流程详解: 什么是Kafka? kafka是一个分布式消息队列 这个定义意味深长,记住容易,理解不易. ...

  10. 乾坤 微前端_微前端架构初探以及我的前端技术盘点

    前言 最近几年微前端一直是前端界的热门议题, 它类似于微服务架构, 主要面向于浏览器端,能将一个复杂而庞大的单体应用拆分为多个功能模块清晰且独立的子应用,且共同服于务同一个主应用.各个子应用可以独立运 ...

最新文章

  1. python爬图片教程_python爬去妹子网整个图片资源教程(最详细版)
  2. 大数据集合求交集_通达信北上资金+盘面分析sp版面,智能大数据集合,筹码占比指标...
  3. 线性判别分析(Linear Discriminant Analysis)(一)
  4. 中越跨国结婚需要什么条件和手续
  5. 超级签名源码_苹果iOS超级签名源码技术解析
  6. centos6.8安装zabbix
  7. 推荐一款神器-VBAC#代码编辑管理器
  8. 素数和 mooc 翁恺
  9. 让代码看起来更舒服(1):选择适合的配色方案 (转)
  10. 新鲜出炉!腾讯大数据分析的真实面经,这几个问题把我问懵了
  11. marked转换html失败,marked-JavaScript中文网-JavaScript教程资源分享门户
  12. 获取Kubernetes容器上下文环境
  13. autotools使用总结
  14. 哈弗h2s车内时间怎么调_你想拥抱的品质生活,就让哈弗H4乐享版帮你实现吧
  15. cntext:一款 Python文本分析包
  16. win10开机自动拨号上网
  17. 常用类(API)第一节
  18. 计算机病毒为了隐藏,识别计算机病毒的方法
  19. V831基础-GPIO
  20. 看脸的世界:牙齿整齐找工作更容易

热门文章

  1. stata基础--异方差检验和处理
  2. etl全量增量抽取方式
  3. 计算机主板cpu的电源接口类型,给力:主板CPU电源的4pin和8pin有什么区别?
  4. Windows Server 无法启用 网络发现
  5. 一文读懂!最新Transformer预训练模型综述!
  6. 如何应用计算机键盘截图,键盘怎么截图快捷键_键盘上截屏是哪个键-win7之家
  7. 关于hive报错expression not in group by key ‘.....‘
  8. Excel学习笔记一关于色彩
  9. python平方和psum_python求和函数sum()详解
  10. 虚拟机如何使文件显示出后缀名?