kafka视频观看小结
来源:互联网 发布:苏梅岛 知乎 编辑:程序博客网 时间:2024/05/17 03:19
Apache kafka:一个高吞吐量的分布式发布订阅消息系统
小结
- 消息队列有2种:点对点和发布订阅模式,现在点对点的模式已经不多了,毕竟一个消息可能有多个消费者,所以发布订阅的模式是有需求的,kafka就是发布订阅的模式,但是如果一个消息只有一个消费者,也可以说是一种伪点对点模式,为什么是伪呢?因为即使没有消费者订阅,消息也不会消失,即使有一个消费者,消费者完成了消费,该消息也不会消失。
- 消息持久化,保证了安全,但是IO操作会损失一些性能,如何使性能的损失最小化呢,请看kafka的文件系统存储,以及使用零拷贝,内核参数配置等的设计与优化。
- kafak发现线性的访问磁盘,很多时候比随机的内存访问快得多,传统的使用内存做为磁盘的缓存,Kafka直接将数据写入到日志文件中(零拷贝),读操作不会阻塞写操作和其他操作,数据大小不对性能产生影响;没有容量限制(相对于内存来说)的硬盘空间建立消息系统;
- kafak发现线性的访问磁盘,很多时候比随机的内存访问快得多,传统的使用内存做为磁盘的缓存,Kafka直接将数据写入到日志文件中(零拷贝),读操作不会阻塞写操作和其他操作,数据大小不对性能产生影响;没有容量限制(相对于内存来说)的硬盘空间建立消息系统;
- kafka的broker是无状态的,状态由消费者在zookeeper端维护。
- kafka支持在线和离线的应用场景
- Kafka的Producer、Broker和Consumer之间采用的是一套自行设计基于TCP层的协议,根据业务需求定制,而非实现一套类似Protocol Buffer的通用协议。
- producer通常指定broker,topic,以及确认选项等
- consumer指定broker,topic,partition等
分区:
- 消息分类存储,每一类称之为Topic,topic又被划分为若干分区partition(创建topic的时候可以指定分区个数),每个分区由一组有序的消息序列组成,新生产的消息则追加至末尾。
- 每条消息有一个序列号id,称之为offset,唯一标记partition内的一条消息;
- 消费者需要维护的唯一元数据信息是其消费的offset值,理论上offset是线性增长的,但consumer可以指定offset的值,所以这些设计机制使consumer very cheap,开发者可以随意增删consumer,不会影响kafka集群或者其他消费者,broker也是无状态的;
- 分区partition存在的意义:将一个topic的消息进行切分,分开存储在不同的broker上,从而使topic能够容纳更多的数据量,不受单台服务器存储能力的限制;另外一点是:作为并行处理的基本单元:(我的理解:1、一个partition对应一个leader broker以及若干follower,生产者消费者仅和leader通信进行读写操作,只要集群内的leader均匀分布,则可保证每台服务器的负载相对均衡;2、消费者又属于某个consumer group,一条消息只能被一个group内的一个consumer消费,所以一般情况下,一个消费者消费topic的一个分区,可见分区越多,便可以有更多的消费者并发消费,所以partition是kafka并行化的基本单位)
消费者API
- 传统的消息系统有两种模型:队列queuing和发布订阅publish-subscribe。队列模型中,一条消息只能被一个消费者消费;发布订阅模型中,一条消息会广播给所有的消费者。kafka通过consumer group能同时满足这两种需求。
- 消息的顺序性保证:传统的队列保证消息在server上顺序存储,但当他将消息按照存储顺序分发给并行消费的consumer时,顺序就会被打乱,无法保障有序性。当然,可以只让一个消费者来消费,这样消息依然是顺序的,但又违背了并行处理的初衷。
- kafka通过partition很好的保证了顺序性以及消费者的负载均衡:(这是partition存在的另一个意义吧)consumer group中的一个consumer消费一个partition,所以保证了一个分区内的消息总是被顺序消费,消费者的负载也相对均衡。但是要注意:如果group内的consumer数量大于topic的partition个数,则一些消费者处于空闲状态,而且不能保证partition之间消息的顺序性,特殊场景下,可以使一个topic只有一个分区,只让一个consumer进行消费,这样便是全局有序的。
0 0
- kafka视频观看小结
- 视窗--视频观看利器
- 观看maven视频记录
- Mac在线观看视频
- 观看Tudou视频更流畅
- Java视频在线观看网址
- 多路音视频上传观看方案
- OOAD系统分析视频观看笔记
- CS231N--如何观看课程视频
- coursera无法观看视频解决方法
- coursera无法观看视频解决方法
- coursera无法观看视频解决方法
- coursera无法观看视频解决方法
- 无法观看coursera视频解决办法
- coursera无法观看视频解决方法
- 视频在线解析网站观看vip视频
- Fedora 8 下观看土豆网视频
- 欢迎观看微软MVP视频专访
- AD14 如何设置PCB板框大小及形状
- oracle 多行合一 wm_concat 函数
- Nginx日志每日切割
- 关于powerdesigner导入数据库对象有双引号问题
- iOS直播实用篇(手把手教)
- kafka视频观看小结
- C#辗转相除法求最大公约数与最小公倍数
- Hadoop学习笔记—7.计数器与自定义计数器
- 洛谷P1655 小朋友的球
- SecureCRT-vim颜色显示问题
- quartz定时任务解决service为空时的解决方案
- Echarts采坑日记之tooltip
- 实用技巧!从未见过如此简单粗暴的Hibernate教程
- MySQL中SELECT+UPDATE并发更新问题