文档章节

Kafka的底层实现原理

 最胖的瘦子
发布于 04/16 19:06
字数 523
阅读 25
收藏 0

Kafka的架构组建

Topic:消息存放的目录主题

Producer:生产消息到topic的一方

Consumer:订阅topic消费消息的一方

Consumergroup:各个consumer可以组成一个组,每个消息只能被组中的一个consumer消费,如果一个消息能被多个consumer消费,那么这些个consumer肯定不在同一个组中

(所以同一个groupid下的consumer是各自消费消息的,不会出现消费同一个消息的情况出现

 

 

 

Kafka性能优秀原因揭秘

  1. kafka中的message并不是保存在内存中的,而是保存在了磁盘上,唯一的区别是他运用了顺序写,而并非采用随机写,顺序写的速度在600MB/S,随机写的速度在100KB/S,这个性能的提升的效果明显的,顺序写的效率并不比内存写差,甚至合理运用效率更高(充分利用了操作系统的预读、后写机制)
  2. kafka通过sendfile命令,减少了数据拷贝,数据的拷贝基本全在内存中完成。(原先是将数据从硬盘读到内核区的pageCache,然后用户进程copy到用户区,用户区在吧数据写进socket中)现在是省掉了用户copy数据这一步,直接让内核区的数据写入socket中
  3. push-and-pull:producer批量的push数据,consumer批量的pull数据,减少了io的次数

 

 

kafka和rabbitmq区别

 

  1. rabbitmq比kafka更严谨,不易出现消息的丢失,原因是rabbit有一个ack消息确认机制,只有消息处理完毕后,consumer才会给server发送一个回执,将queue中的消息删除,否则不会被删除
  2. rabbitmq同样支持持久化,配置一个durable = true即可

 

© 著作权归作者所有

粉丝 4
博文 34
码字总数 19073
作品 0
杭州
私信 提问
加载中

评论(1)

最胖的瘦子 博主
Broker:Kafka的服务实例就是一个broker(一个kafka集群由多个broker服务器组成,作用是拿来负责持久化以及备份具体的kafka信息)
Kafka面试题全套整理:消息处理+高可用集群+生产者与消费者实例

有很多人问过我要过Kafka相关的面试题,我一直懒得整理,这几天花了点时间,结合之前面试被问过的、别人咨询过的、我会问别人的进行了相关的整理,也就几十题,大家花个几分钟看看应该都会。...

架构师springboot
04/30
131
0
Kafka最全面试题整理|划重点要考

版权声明:本文为博主原创文章,未经博主朱小厮允许不得转载。 https://blog.csdn.net/u013256816/article/details/88550812 欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《R...

朱小厮
03/14
0
0
Kafka如何实现每秒上百万的高并发写入?

这篇文章来聊一下Kafka的一些架构设计原理,这也是互联网公司面试时非常高频的技术考点。 Kafka是高吞吐低延迟的高并发、高性能的消息中间件,在大数据领域有极为广泛的运用。配置良好的Kaf...

中华石杉
06/21
0
0
2.Spark Streaming:基本工作原理

Spark Streaming简介 Spark Streaming是Spark Core API的一种扩展,它可以用于进行大规模、高吞吐量、容错的实时数据流的处理。它支持从很多种数据源中读取数据,比如Kafka、Flume、Twitter...

weixin_32265569
2017/11/14
0
0
跟我来见证:《Kafka如何实现每秒上百万的高并发写入?》

本文来聊一下Kafka的一些架构设计原理,这也是互联网公司面试时非常高频的技术考点。 Kafka是高吞吐低延迟的高并发、高性能的消息中间件,在大数据领域有极为广泛的运用。配置良好的Kafka集群...

Java干货分享
06/24
60
0

没有更多内容

加载失败,请刷新页面

加载更多

只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 比较通用的返回值格式如下:...

晓月寒丶
昨天
59
0
区块链应用到供应链上的好处和实际案例

区块链可以解决供应链中的很多问题,例如记录以及追踪产品。那么使用区块链应用到各产品供应链上到底有什么好处?猎头悬赏平台解优人才网小编给大家做个简单的分享: 使用区块链的最突出的优...

猎头悬赏平台
昨天
28
0
全世界到底有多少软件开发人员?

埃文斯数据公司(Evans Data Corporation) 2019 最新的统计数据(原文)显示,2018 年全球共有 2300 万软件开发人员,预计到 2019 年底这个数字将达到 2640万,到 2023 年达到 2770万。 而来自...

红薯
昨天
65
0
Go 语言基础—— 通道(channel)

通过通信来共享内存(Java是通过共享内存来通信的) 定义 func service() string {time.Sleep(time.Millisecond * 50)return "Done"}func AsyncService() chan string {retCh := mak......

刘一草
昨天
58
0
Apache Flink 零基础入门(一):基础概念解析

Apache Flink 的定义、架构及原理 Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速...

Vincent-Duan
昨天
60
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部