(二)kafka从入门到精通之kafka的优势

2023-07-02 11:51:34

学习传送门

(一)kafka从入门到精通之初识kafka

一、常用消息队列比较

基于发布与订阅的消息系统那么多,为什么 Kafka 会是一个更好的选择呢?

咱们先来简单的看看mq的一个对比图吧。

特性ActiveMQRabbitMQRocketMQKafka
生产者消费者模式支持支持支持支持
发布订阅模式支持支持支持支持
请求回应模式支持支持不支持不支持
Api完备性
多语言支持支持支持java支持
单机吞吐量万级万级万级十万级
消息延迟微秒级毫秒级毫秒级
可用性高(主从)高(主从)非常高(分布式)非常高(分布式)
消息丢失理论上不会丢失理论上不会丢失
文档的完备性教高
提供快速入门
社区活跃度
商业支持商业云商业云

从中可以看的出来,kafka在数据处理方面的优势还是很大的,下面咱们再来详细看看kafka都有哪些特性。

二、kafka特性

1、多个生产者

Kafka 可以无缝地支持多个生产者,不管客户端在使用单个主题还是多个主题。所以它很适合用来从多个前端系统收集数据,并以统一的格式对外提供数据,例如常见的埋点上报。

另外针对生产者模式,kafka也可以接受各种各样的数据源,最终都汇集到一个统一的消费者服务进行处理,这个在目前大数据处理场景中是至关重要的。

2、多个消费者

除了支持多个生产者外,Kafka 也支持多个消费者从一个单独的消息流上读取数据,而且消费者之间互不影响。这与其他队列系统不同,其他队列系统的消息一旦被一个客户端读取,其他客户端就无法再读取它。另外,多个消费者可以组成一个群组,它们共享一个消息流,并保证整个群组对每个给定的消息只处理一次。

不过需要额外注意的是,一般在一个消费组里面,一个topic的一个partition只能由一个消费者进行处理,也就是说不会存在群组内多个消费者同时读取一个partition的情况。这是保证一个partition内消息有序性的前提!

3、基于磁盘存储

Kafka 不仅支持多个消费者,还允许消费者非实时地读取消息,这要归功于 Kafka 的数据保留特性。消息被提交到磁盘,根据设置的保留规则进行保存。每个主题可以设置单独的保留规则,以便满足不同消费者的需求,各个主题可以保留不同数量的消息。消费者可能会因为处理速度慢或突发的流量高峰导致无法及时读取消息,而持久化数据可以保证数据不会丢失。消费者可以在进行应用程序维护时离线一小段时间,而无需担心消息丢失或堵塞在生产者端。消费者可以被关闭,但消息会继续保留在 Kafka 里。消费者可以从上次中断的地方继续处理消息。

一个topic内的消息是以partition为单位进行存储的,作为高可用架构的消息队列,一个partition也会存在多个副本进行数据备份容灾处理。磁盘存储也在一定程度上较低kafka的部署和运维成本。

还有个比较有意思的是:kafka之所以这么快完全归功于他的顺序写磁盘特性。

4、伸缩性

为了能够轻松处理大量数据,Kafka 从一开始就被设计成一个具有灵活伸缩性的系统,这在如今分布式系统中不可或缺的。用户在开发阶段可以先使用单个 broker,随着业务可以再扩展到包含 3 个 broker 的小型开发集群,然后随着数据量不断增长,部署到生产环境的集群可能包含上百个 broker。对在线集群进行扩展丝毫不影响整体系统的可用性。也就是说,一个包含多个 broker 的集群,即使个别 broker失效,仍然可以持续地为客户提供服务。

要提高集群的容错能力,那么就需要配置较高的复制系数。不过这也会影响消息写入的效率,所以在高可用和高性能之间还是要做出一定的抉择。

5、高性能

上面提到的所有特性,让 Kafka 成为了一个高性能的发布与订阅消息系统。通过横向扩展生产者、消费者和 broker,Kafka 可以轻松处理巨大的消息流。在处理大量数据的同时,它还能保证亚秒级的消息延迟。

三、总结

咱们这篇内容主要是先来简单的认识一下kafka 的特性,以及常用mq的一些简单对比。下一篇咱们来看看kafka的一些应用场景以及如何选择一个合适的消息队列。

更多推荐

Ae 效果:CC Hair

模拟/CCHairSimulation/CCHairCCHair(CC毛发)可以在源图像上模拟生成毛发、绒线等,并可调整它们的长度、方向、重量等属性,从而创建出非常独特的效果。CCHair本质上是基于Alpha通道来生成毛发,无毛发处将变为透明。比如,对于文本等矢量图层,它会基于Alpha通道的轮廓来生成毛发。◆◆◆效

企业怎么优化固定资产管理

在优化固定资产管理的过程中,不仅要关注硬件设备和设施的维护,还要重视软件系统和数据管理。一些可能的方法:需要建立一套完整的资产管理系统。这个系统应该包括资产的采购、登记、使用、维修、报废等各个环节的管理流程。通过这个系统,可以实时了解每个资产的状态,及时发现并解决潜在的问题。应该对固定资产进行定期的盘点和维护。这不仅可

操作系统权限提升(二十六)之数据库提权-MySQL UDF提权

MySQLUDF提权MySQL介绍MySQL是最流行的开放源码SQL数据库管理系统,相对于Oracle,DB2等大型数据库系统,MySQL由于其开源性、易用性、稳定性等特点,受到个人使用者、中小型企业甚至一些大型企业的广泛欢迎,MySQL具有以下特点:1、MySQL是一种关联数据库管理系统,具有灵活性。2、MySQL软

mysql的判断语句

ifif用于做条件判断,具体的语法结构如下,在if条件判断的结构中,ELSEIF结构可以有多个,也可以没有。ELSE结构可以有,也可以没有。IF条件1THEN.....ELSEIF条件2THEN--可选.....ELSE--可选.....ENDIF;案例createprocedurep3()begindeclaresc

Linux(Centos)查看硬盘大小

Linux查看硬盘大小使用df命令:df命令可以用来显示文件系统的磁盘使用情况,包括每个挂载点的磁盘空间大小和使用情况。要查看硬盘大小,可以运行以下命令:df-h这将以人类可读的方式显示文件系统的磁盘大小,以GB或MB为单位。下面是df-h命令输出的参数说明:Filesystem:文件系统的名称或挂载点。这是磁盘空间的

Delft3D水动力与泥沙运动模拟实践应用

水体中泥沙运动是关系到防洪,调水等方面的重要问题,也是水利和水环境领域科研热点之一。水利数值模型,在环境影响评价、防洪规划等方面也有着广泛的应用。荷兰Delft研究所开发的Delft3D模型是世界上最先进的水动力之一,能够运用于河网、浅水湖泊、深水水库以及近岸海洋等多种水体的水动力和泥沙问题的研究中;同时,Delft3

MYSQL数据库基础

这里写目录标题MYSQL数据库基础一.数据库原理1.数据的时代2.数据库的发展史1)文件管理系统的缺点2)数据库系统发展阶段3)DBMS数据库管理系统4)数据库管理系统的优点5)数据库管理系统的基本功能6)数据库系统的架构7)各种数据库管理系统8)关系型数据库理论二.MYSQL历史关系型数据库和非关系型数据库三.mys

【Vue】路由与Node.js下载安装及环境配置教程

🎉🎉欢迎来到我的CSDN主页!🎉🎉🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚🌟推荐给大家我的专栏《Vue快速入门》。🎯🎯👉点击这里,就可以查看我的主页啦!👇👇Java方文山的个人主页🎁如果感觉还不错的话请给我点赞吧!🎁🎁💖期待你的加入,一起学习,一起进步!💖💖目录前言

访问学者申请一定要会说英语吗?

访问学者申请一定要会说英语吗?显然,出国做访问学者,外语是出国的关键,这是毋庸置疑,而且必须严格对待的。下面就随知识人网小编一起来深入探讨一下。首先,我们需要明确的是,访问学者申请通常要求申请者具备一定的英语能力。这是因为访问学者在国外学术机构或大学进行研究工作时,需要与导师、同事以及学生进行有效的沟通,而英语通常是国

go工具类的封装——(一)配置文件工具类封装

使用方式在后端开发中,我们经常会使用配置文件,所以我想封装出一个工具类出来,能够提供简洁的接口,让我们很方便地读取配置文件并从配置文件中提取信息。我封装了一个工具类ConfigManager,主要有以下功能:根据配置文件的路径和文件名读取配置信息通过一系列Get函数,可以根据key查询配置项的值自动将配置项写入缓存,提

Python Subprocess介绍:基础和示例

PythonSubprocess介绍:基础和示例探索PythonSubprocess模块的逐步指南,包括示例。目录什么是PythonSubprocess何时使用PythonSubprocessPythonSubprocess示例PythonSubprocess管道结论PythonSubprocess常见问题什么是Pyt

热文推荐