【Kafka】为什么要使用Kafka?

数据湖
• 阅读 3250

 Kafka是一种消息中间件,首先我们看看什么是消息中间件、消息中间件可以解决什么问题,然后我们对比不同的消息中间件,总结Kafka适用的场景。

什么是消息中间件呢?

 中间件位于系统软件和应用软件之间的部分,起到连接系统各部分。消息中间件是用于接收消息,并且将消息传递给需要消息的软件系统。

消息中间件可以解决什么问题?

 1. 削峰 诸如双十一零点时淘宝的数据量陡增,服务器会承担极大的压力。我们不能以在数据量最大的时候所需要的资源数来配置资源,那样除了在某一段时间或某一刻数据量非常大,其他时间数据量都很小,会浪费很多资源。

 2. 异步处理 为了实现快速响应用户,我们可以先完成必须的工作,而不必等待所有的工作做完。通常像通过邮件发送用户手册的任务可以稍后再做。

 3. 解耦 多个系统为了减少相互依赖性,避免一个系统的改动引起其他系统的改动,可以使用消息中间件来达到目的。那么为什么使用消息中间件可以起到解耦的作用呢?
  我们首先需要知道什么是耦合,耦合是指系统之间的依赖,比如A系统以来与B系统提供的接口。耦合分为7类,我们最常见的是数据耦合和标记耦合,耦合的7种种类可以参考图解7种耦合关系
  使用消息中间件作为中介之后,调用方和被调用方的依赖情况发生了一下的变化:
   a. 调用方不需要知道被调用方的接口名和参数,只需要将数据发送给消息中间件。
   b. 被调用系统参数的错误或者进程挂掉不会是调用方产生错误。
 

也就是调用方和被调用方的依赖关系装换为了调用方与消息中间件,消息中间件和被调用方的依赖关系。但是消息中间件的接口通常不会变化并且接口比较统一,所以耦合度就降低了。

不同的消息中间件之间的对比

 目前主流的消息中间件有Apache的ActiveMQ,LinkedIn开发的Kafka(现已捐赠给Apache),阿里的RocketMQ。它们都各具特点,那么我们在选择消息中间件的时候应该怎么选择呢?
 主要从两点来判断:1、是性能。2、特性。

性能部分我们可以参考阿里中间件团队的博客Kafka、RabbitMQ、RocketMQ消息中间件的对比 —— 消息发送性能

未完待续

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Kafka、RabbitMQ、RocketMQ等消息中间件的对比 —— 消息发送性能和区别
Kafka、RabbitMQ、RocketMQ等消息中间件的对比——消息发送性能和区别那么,消息中间件性能究竟哪家强?带着这个疑问,我们中间件测试组对常见的三类消息产品(Kafka、RabbitMQ、RocketMQ)做了
Stella981 Stella981
3年前
Kafka、RabbitMQ、RocketMQ消息中间件的对比 —— 消息发送性能
引言分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦。现在开源的消息中间件有很多,前段时间我们自家的产品RocketMQ(MetaQ的内核)也顺利开源,得到大家的关注。那么,消息中间件性能究竟哪家强?带着这个疑问,我们中间件测试组对常见的三类消息产品(Kafka、RabbitMQ、RocketMQ)做了性
Stella981 Stella981
3年前
Spring Boot(七):RabbitMQ 详解
一、RabbitMQ简介RabbitMQ即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。消息中间件在互联网公司的使用中越来越多,消息中间件最主要的作用是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到解耦的
Stella981 Stella981
3年前
Spring Cloud 系列之 Spring Cloud Stream
SpringCloudStream是消息中间件组件,它集成了kafka和rabbitmq。本篇文章以RabbitMQ为消息中间件系统为基础,介绍SpringCloudStream的使用。如果你没有用过消息中间件,可以到RabbitMQ的官网看一下,或者参考这个http://rabbitmq.mrping.com/。理
Wesley13 Wesley13
3年前
MQ消息中间件,面试能问些什么?
MQ消息中间件,面试能问些什么?为什么使用消息队列?消息队列的优点和缺点?kafka、activemq、rabbitmq、rocketmq都有什么优缺点?面试官角度分析:(1)你知不知道你们系统里为什么要用消息队列这个东西?(2)既然用了消息队列这个东西,你知不知道用了有什么好处?(3
Stella981 Stella981
3年前
Kafka 消息存储与索引设计
消息中间件的性能好坏,它的消息存储的机制是衡量该性能的最重要指标之一,而Kafka具有高性能、高吞吐、低延时的特点,动不动可以上到几十上百万TPS,离不开它优秀的消息存储设计。下面我按照自己的理解为大家讲解Kafka消息存储设计的那些事。在Kafka的设计思想中,消息的存储文件被称作日志,我们Java后端绝大部分人谈到日志,一般会联想到
Wesley13 Wesley13
3年前
activeMQ入门+spring boot整合activeMQ
最近想要学习MOM(消息中间件:MessageOrientedMiddleware),就从比较基础的activeMQ学起,rabbitMQ、zeroMQ、rocketMQ、Kafka等后续再去学习。上面说activeMQ是一种消息中间件,可是为什么要使用activeMQ?在没有使用JMS的时候,很多应用会出现同步通信(客户端发起请求后需要等待服务
Stella981 Stella981
3年前
Kafka实战解惑
一、Kafka简介Kafka是LinkedIn使用Scala开发的一个分布式消息中间件,它以水平扩展能力和高吞吐率著称,被广泛用于日志处理、ETL等应用场景。Kafka具有以下主要特点:\\消息的发布、订阅均具有高吞吐量:\\据统计数字表明,Kafka每秒可以生产约25万消息(50MB),每秒处理55万消息(110MB)。
Wesley13 Wesley13
3年前
ActiveMQ学习笔记(1)——JMS的概念
1.面向消息的中间件1.1什么是MOM   面向消息的中间件,MessageOrientedMiddleware,简称MOM,中文简称消息中间件,利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。  一个MOM系统,通常会包括客户端(Clients)、消息(Messa
专为小白打造—Kafka一篇文章从入门到入土 | 京东云技术团队
一、什么是KafkaMQ消息队列作为最常用的中间件之一,其主要特性有:解耦、异步、限流/削峰。Kafka和传统的消息系统(也称作消息中间件)都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能。与此同时,Kafka还提供了大多数消息系