Kafka(1)消息中间件、消息队列、kafka消息队列中间件

在介绍什么消息中间件之前,先介绍几个概念:
一、什么是消息#
  消息是指软件对象之间进行交互作用和通讯利用的一种方式。

在这里插入图片描述
二、什么是中间件
非底层操作系统软件,非业务应用软件,不是直接给最终用户使用的,不能直接给客户带来价值的软件统称为中间件

三、什么是消息队列
消息队列是消息中间件的一种实现方式。

在这里插入图片描述
四、什么是消息中间件
关注于数据的发送和接受,利用高效可靠的异步消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。
在这里插入图片描述
这可能比较抽象,既然消息队列是实现消息中间件的一种方式,不如我们从它的实际应用场景中,来进一步理解它,消息队列的应用场景主要有一下几个方面:

  • 1) 异步处理
  • 2) 应用解耦
  • -3) 流量削峰

常见的消息中间件(MQ:Message Queuing)(这里只介绍我们大数据接触得比较多的)
1) RabbitMQ
  使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP,STOMP,也正是如此,使的它变的非常重量级,更适合于企业级的开发。同时实现了Broker架构,核心思想是生产者不会将消息直接发送给队列,消息在发送给客户端时先在中心队列排队。对路由(Routing),负载均衡(Load balance)、数据持久化都有很好的支持。多用于进行企业级的ESB整合。

2)Redis:
使用C语言开发的一个Key-Value的NoSQL数据库,虽然它是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用。
补充:Redis与RabbitMQ的比较:
 入队:数据大小<10K时,Redis的性能要高于RabbitMQ,数据大于10K时,RabbitMQ更胜一筹
 出队:无论数据大小,Redis都表现出非常好的性能,而RabbitMQ的出队性能则远低于Redis。

3) Kafka
  使用scala实现的一个高性能分布式Publish/Subscribe消息队列系统,具有以下特性:
 a、快速持久化:通过磁盘顺序读写与零拷贝机制,可以在O(1)的系统开销下进行消息持久化;
 b、高吞吐:在一台普通的服务器上既可以达到10W/s的吞吐速率;
 c、高堆积:支持topic下消费者较长时间离线,消息堆积量大;
 d、完全的分布式系统:Broker、Producer、Consumer都原生自动支持分布式,依赖zookeeper自动实现复杂均衡;
 e、支持Hadoop数据并行加载:对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。

深入理解消息队列:

消息队列的传递模型一共有两种形式:
点对点(PTP)
在这里插入图片描述
点对点模型的特点:

1,每个消息只有一个消费者

2,发送者和接受者没有时间依赖

3,接受者确认消息接受和处理成功

在这里插入图片描述

发布-订阅(Pub/Sub)
发布/ 订阅模式,即一个生产者产生消息并进行发送后,可以由多个消费者进

行接收。

在这里插入图片描述
发布-订阅模型特点:

1,每个次消息可以有多个消费者

2,客户只有订阅后才能接收消息(只有建立订阅关系才可以接收消息 )

3,持久订阅和非持久订阅

持久订阅
订阅关系建立后(关系保存在消息中间件中),不管消费者(也就是订阅者)是否在线消息都不会消失。

非持久订阅
建立一种类似长连接关系式的订阅模式,订阅者为了接收消息必须保持一直连接的状态,如果断开连接则丢失消息。

在这里插入图片描述

消息队列的分类:

消息队列的应用案例:

不做赘述,这里主要为了引入kafka是一个消息队列中间件,想进一步了解消息中间件,推荐一下两篇文章

https://www.cnblogs.com/lifeibai/p/9167701.html

https://www.cnblogs.com/lifeibai/p/9167701.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值