Kafka精华问答 | 为什么要用Message Queue?

640?wx_fmt=png

Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。今天就让我们一起来看看关于Kafka 的精华问答吧。


640?wx_fmt=gif1

Q:Kafka的主要功能是什么?

A :根据官网的介绍,ApacheKafka®是一个分布式流媒体平台,它主要有3种功能:

1:It lets you publish and subscribe to streams of records.发布和订阅消息流,这个功能类似于消息队列,这也是kafka归类为消息队列框架的原因

2:It lets you store streams of records in a fault-tolerant way.以容错的方式记录消息流,kafka以文件的方式来存储消息流

3:It lets you process streams of records as they occur.可以再消息发布的时候进行处理。

640?wx_fmt=gif2

Q:Kafka的使用场景有什么?

A:1:Building real-time streaming data pipelines that reliably get data between systems or applications.在系统或应用程序之间构建可靠的用于传输实时数据的管道,消息队列功能

2:Building real-time streaming applications that transform or react to the streams of data。构建实时的流数据处理程序来变换或处理数据流,数据处理功能。


640?wx_fmt=gif3

Q:Kafka的设计思想是什么?

A:可持久化Message 

持久化本地文件系统,设置有效期

支持高流量处理 

面向特定的使用场景而不是通用功能

消费状态保存在消费端而不是服务端 

减轻服务器负担和交互

支持分布式 

生产者/消费者透明异步

依赖磁盘文件系统做消息缓存 

不消耗内存

高效的磁盘存取 

复杂度为O(1)

强调减少数据的序列化和拷贝开销 

批量存储和发送、zero-copy

支持数据并行加载到Hadoop 

集成Hadoop


640?wx_fmt=gif4

Q:为什么要用Message Queue

A:

  • 解耦 
    在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。消息队列在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束

  • 冗余 
    有时在处理数据的时候处理过程会失败。除非数据被持久化,否则将永远丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失 风险。在被许多消息队列所采用的”插入-获取-删除”范式中,在把一个消息从队列中删除之前,需要你的处理过程明确的指出该消息已经被处理完毕,确保你的 数据被安全的保存直到你使用完毕。

  • 扩展性 
    因为消息队列解耦了你的处理过程,所以增大消息入队和处理的频率是很容易的;只要另外增加处理过程即可。不需要改变代码、不需要调节参数。扩展就像调大电力按钮一样简单。

  • 灵活性 & 峰值处理能力 
    在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见;如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住增长的访问压力,而不是因为超出负荷的请求而完全崩溃。

  • 可恢复性 
    当体系的一部分组件失效,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。而这种允许重试或者延后处理请求的能力通常是造就一个略感不便的用户和一个沮丧透顶的用户之间的区别。

  • 送达保证 
    消息队列提供的冗余机制保证了消息能被实际的处理,只要一个进程读取了该队列即可。在此基础上,IronMQ提供了一个”只送达一次”保证。无论有多少进 程在从队列中领取数据,每一个消息只能被处理一次。这之所以成为可能,是因为获取一个消息只是”预定”了这个消息,暂时把它移出了队列。除非客户端明确的 表示已经处理完了这个消息,否则这个消息会被放回队列中去,在一段可配置的时间之后可再次被处理。

  • 顺序保证 
    在许多情况下,数据处理的顺序都很重要。消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。IronMO保证消息浆糊通过FIFO(先进先出)的顺序来处理,因此消息在队列中的位置就是从队列中检索他们的位置。

  • 缓冲 
    在任何重要的系统中,都会有需要不同的处理时间的元素。例如,加载一张图片比应用过滤器花费更少的时间。消息队列通过一个缓冲层来帮助任务最高效率的执行—写入队列的处理会尽可能的快速,而不受从队列读的预备处理的约束。该缓冲有助于控制和优化数据流经过系统的速度。

  • 理解数据流 
    在一个分布式系统里,要得到一个关于用户操作会用多长时间及其原因的总体印象,是个巨大的挑战。消息系列通过消息被处理的频率,来方便的辅助确定那些表现不佳的处理过程或领域,这些地方的数据流都不够优化。

  • 异步通信 
    很多时候,你不想也不需要立即处理消息。消息队列提供了异步处理机制,允许你把一个消息放入队列,但并不立即处理它。你想向队列中放入多少消息就放多少,然后在你乐意的时候再去处理它们。


640?wx_fmt=gif5

Q:Leader副本和Follower副本

A:由于KafKa副本的存在,就需要保证一个分区的多个副本之间数据的一致性,KafKa会选择该分区的一个副本作为Leader副本,而该分区其他副本作为Follower副本,只有Leader副本才负责处理客户端读/写请求,Follower副本从Leader副本同步数据。如果Leader副本失效,通过相应的选举算法将从其他Follower副本中选出新的Leader副本。


640?wx_fmt=png

小伙伴们冲鸭,后台留言区等着你!

关于kafka,今天你学到了什么?还有哪些不懂的?除此还对哪些话题感兴趣?快来留言区打卡啦!留言方式:打开第XX天,答:……

同时欢迎大家搜集更多问题,投稿给我们!风里雨里留言区里等你~


福利

1、扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!

640?wx_fmt=jpeg

2、公众号后台回复:白皮书,获取IDC最新数据白皮书整理资料!

推荐阅读:

  • IEEE 回应禁止华为系审稿人;WiFi联盟、蓝牙联盟已恢复华为成员资格;中国计算机学会:暂时中止与IEEE通信学会合作……

  • ARM 发布新一代 CPU 和 GPU,实现 20% 性能提升!

  • 前端开发 20 年变迁史

  • 北漂杭漂的程序员,是如何买到第一套房子?

  • “爱装X”开源组织:“教科书级”AI知识树究竟长什么样?

  • 500行Python代码打造刷脸考勤系统

  • 权游播完了, 你在骂烂尾, 有人却悄悄解锁了新操作……


640?wx_fmt=png真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

String类、StringBuffer类、StringBuilder类的区别

String是Java中基础且重要的类,并且String也是Immutable类的典型实现,被声明为final class,除了hash这个属性其它属性都声明为final,因为它的不可变性,所以例如拼接字符串时候会产生很多无用的中间对象,如果频繁的进行…

360深度实践:Flink与Storm协议级对比

戳蓝字“CSDN云计算”关注我们哦!文 | 张馨予 来源 | 高可用架构作者 张馨予,360 大数据计算平台负责人。北京邮电大学硕士,2015年加入360系统部,一直致力于公司大数据计算平台的易用性、稳定性和性能优化的研发工作。目前主要负…

Spring Cloud Alibaba 雪崩效应和容错解决方案

Spring Cloud Alibaba 雪崩效应和容错解决方案 文章目录1. 雪崩效应1.1. 举个例子:2. 常见的容错方案:2.1.超时:2.2. 限流:2.3. 仓壁模式:2.3.1. 现实中的仓壁模式:2.3.2. 软件中的仓壁模式:2.4…

layui获得列表json数据_golang实战开发之博客功能篇:文章列表的读取与展示和分类筛选展示处理...

前面我们介绍了文章详情页面的展示的逻辑代码实现,这一节,我们将继续讲解文章列表的读取和展示、文章根据分类进行筛选、最新文章、热门文章等的调用处理逻辑。首先,我们先编写文章列表页的前端代码。这里,我们文章采用类似WordPr…

“智企云中享“,首届SAP中国云大会召开

2019 年 6 月 5 日,上海讯— 今日,首届SAP云大会在上海盛大召开。作为SAP云计算家族在中国的首秀,大会全面呈现了SAP云业务的战略、产品、商业场景、浸入式体验。作为体验管理领域的领导者,SAP以覆盖企业运营全价值链的云服务解决…

SpringBoot入门到精通_第7篇 _必知必会总结

接上一篇:SpringBoot入门到精通_第6篇 _必知必会

java对mysql读写权限设置_Java学习笔记——MySQL开放3306接口与设置用户权限

系统Ubuntu16.04 LTS1、开放3306端口查看端口状态:netstat -an|grep 3306tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN目前只有本机可以访问输入指令:sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf如果之前配置过全局配置文件,也可输入指令:su…

容器精华问答 | 如何进行跨机器的Container做Link ?

戳蓝字“CSDN云计算”关注我们哦!云计算的发展日新月异,新技术层出不穷,尤其容器技术自2013年Docker容器问世以来一路高歌猛进红遍大江南北,与虚拟机相比,容器更显优势,有着更轻量、更快捷、占用资源更少&a…

Sublime Text3 多行合并为一行

快捷键说明CTRL J多行合并为一行ctrld双击选中关键词或者关键词部分,在输入快捷键关键字就会一个一个选中,就可以同时编辑

安卓psp模拟器哪个好_psp模拟器安卓完美版下载_psp模拟器完美版手机版下载_玩游戏网...

《psp模拟器完美版》App是专业的PSP游戏模拟器,兼容适配任何安卓机型,用户下载于此畅玩PSP游戏,还可自制游戏,能够自由设置多国语言,更改图像、声音、控制、网络等多种选项设置,想玩好游戏,玩打…

腾讯也有“神盾局”?秀出“技术肌肉”就靠TA了……

戳蓝字“CSDN云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!漫威的超级英雄世界中,“神盾局”一直凭借着不少的先进武器装备&#xff0…

Spring 集成 mybatisPlus

文章目录1. pom.xml2. 实体类3. mapper接口4. applicationContext.xml5. db.properties6. log4j.xml7. mybatis-config.xml8. 测试类9. 控制台输出10. 源码地址1. pom.xml <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://ma…

用python编excel统计表_Python实现对excel文件列表值进行统计的方法

本文实例讲述了Python实现对excel文件列表值进行统计的方法。分享给大家供大家参考。具体如下&#xff1a;#!/usr/bin/env python#codinggbk#此PY用来统计一个execl文件中的特定一列的值的分类import win32com.clientfilenameraw_input("请输入要统计文件的详细地址&#…

大话云存储,这个“对象”可能无处不在

戳蓝字“CSDN云计算”关注我们哦&#xff01;文 | pasca来源 | 蛋蛋团&#xff08;ID&#xff1a;dandan_tuan&#xff09;大纲前言1、Who&#xff1a;谁使用对象存储2、What&#xff1a;对象存储是什么3、Why&#xff1a;为什么他们会使用对象存储4、how to do:应用场景分析5、…

linux java文件 core_linux下部署.net core/java

.net core1.查看系统是否已安装net core命令&#xff1a;dotnet --info如果提示未找到命令&#xff0c;说明需要按照net core环境&#xff0c;否则跳过2&#xff0c;3两步2.查看系统版本&#xff0c;这里是CentOS 7命令&#xff1a;cat /etc/redhat-release3.根据系统版本找到安…

振奋!中国正式进入5G元年;华为5G俄罗斯签下大单;王坚进入工程院院士第二轮评审...

戳蓝字“CSDN云计算”关注我们哦&#xff01;嗨&#xff0c;大家好&#xff0c;重磅君带来的【云重磅】特别栏目&#xff0c;如期而至&#xff0c;每周五第一时间为大家带来重磅新闻。把握技术风向标&#xff0c;了解行业应用与实践&#xff0c;就交给我重磅君吧&#xff01;重…

java 对象复制 反射_利用Java反射机制实现对象相同字段的复制操作

一、如何实现不同类型对象之间的复制问题&#xff1f;1、为什么会有这个问题&#xff1f;近来在进行一个项目开发的时候&#xff0c;为了隐藏后端数据库表结构、同时也为了配合给前端一个更友好的API接口文档(swagger API文档)&#xff0c;我采用POJO来对应数据表结构&#xff…

企业实战_01_Redis下载/安装/运行/停止

文章目录一、Redis下载&#xff1a;官方&#xff1a;https://redis.io/二、Redis安装&#xff1a;2.1. 上传redis软件服务器2.2. 解压redis2.3. 进入redis目录&#xff0c;进行redis安装2.4. 执行redis安装测试&#xff1a;2.5. 安装异常处理三、redis 启动、停止3.1. 进入src目…

关于5G,你必须知道的事儿……

戳蓝字“CSDN云计算”关注我们哦&#xff01;文 | 小枣君来源 | 鲜枣课堂什么是5G 5G&#xff0c;就是5th Generation Mobile Networks&#xff08;第五代移动通信网络&#xff09;&#xff0c;也可以称为5th Generation Wireless Systems&#xff08;第五代无线通信系统&a…