消息队列——kafka(待续)

原文:再过半小时,你就能明白kafka的工作原理了

会出现什么情况呢?
  1、为了这个女朋友,我请假回去拿(老板不批)。
  2、小哥一直在你楼下等(小哥还有其他的快递要送)。
  3、周末再送(显然等不及)。
  4、这个女朋友我不要了(绝对不可能)!

  在上面例子中,“快递小哥”和“买女朋友的我”就是需要交互的两个系统,小芳便利店就是我们本文要讲的-“消息中间件”。总结下来小芳便利店(消息中间件)出现后有如下好处:
  1、 解耦
  快递小哥手上有很多快递需要送,他每次都需要先电话一一确认收货人是否有空、哪个时间段有空,然后再确定好送货的方案。这样完全依赖收货人了!如果快递一多,快递小哥估计的忙疯了……如果有了便利店,快递小哥只需要将同一个小区的快递放在同一个便利店,然后通知收货人来取货就可以了,这时候快递小哥和收货人就实现了解耦!

  2、 异步
  快递小哥打电话给我后需要一直在你楼下等着,直到我拿走你的快递他才能去送其他人的。快递小哥将快递放在小芳便利店后,又可以干其他的活儿去了,不需要等待你到来而一直处于等待状态。提高了工作的效率。

  3、 削峰
  假设双十一我买了不同店里的各种商品,而恰巧这些店发货的快递都不一样,有中通、圆通、申通、各种通等……更巧的是他们都同时到货了!中通的小哥打来电话叫我去北门取快递、圆通小哥叫我去南门、申通小哥叫我去东门。我一时手忙脚乱……

  我们能看到在系统需要交互的场景中,使用消息队列中间件真的是好处多多,基于这种思路,就有了丰巢、菜鸟驿站等比小芳便利店更专业的“中间件”了。
  最后,上面的故事纯属虚构……

消息队列通信的模式

  通过上面的例子我们引出了消息中间件,并且介绍了消息队列出现后的好处,这里就需要介绍消息队列通信的两种模式了:

一、 点对点模式

如上图所示,点对点模式通常是基于拉取或者轮询的消息传送模型,这个模型的特点是发送到队列的消息被一个且只有一个消费者进行处理。生产者将消息放入消息队列后,由消费者主动的去拉取消息进行消费。

点对点模型的的优点是消费者拉取消息的频率可以由自己控制。

但是消息队列是否有消息需要消费,在消费者端无法感知,所以在消费者端需要额外的线程去监控。

二、 发布订阅模式

如上图所示,发布订阅模式是一个基于消息送的消息传送模型,改模型可以有多种不同的订阅者。

生产者将消息放入消息队列后,队列会将消息推送给订阅过该类消息的消费者(类似微信公众号)。

由于是消费者被动接收推送,所以无需感知消息队列是否有待消费的消息!

但是consumer1、consumer2、consumer3由于机器性能不一样,所以处理消息的能力也会不一样,但消息队列却无法感知消费者消费的速度!所以推送的速度成了发布订阅模模式的一个问题!假设三个消费者处理速度分别是8M/s、5M/s、2M/s,如果队列推送的速度为5M/s,则consumer3无法承受!如果队列推送的速度为2M/s,则consumer1、consumer2会出现资源的极大浪费!

Kafka

  上面简单的介绍了为什么需要消息队列以及消息队列通信的两种模式,接下来就到了我们本文的主角——kafka闪亮登场的时候了!

Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,具有高性能、持久化、多副本备份、横向扩展能力……… 一些基本的介绍这里就不展开了,网上有太多关于这些的介绍了,读者可以自行百度一下!

原文地址:https://www.cnblogs.com/panpanwelcome/p/12580506.html

时间: 2024-10-09 17:14:36

消息队列——kafka(待续)的相关文章

阿里云消息队列Kafka商业化:支持消息无缝迁移到云上

列Kafka彻底解决了开源产品稳定性不足的痛点,可用性达99.9%,数据可靠性99.999999%,并且支持消息无缝迁移到云上. 7月25日,阿里云宣布正式推出消息队列Kafka,全面融合开源生态.在兼容Apache生态的基础上,阿里云消息队列Kafka彻底解决了开源产品稳定性不足的痛点,可用性达99.9%,数据可靠性99.999999%,并且支持消息无缝迁移到云上. Kafka是一个分布式.高吞吐量.高可扩展性的消息队列服务,广泛用于日志收集.监控数据聚合.流式数据处理.在线和离线分析等大数据

消息队列 Kafka 的基本知识及 .NET Core 客户端

前言 最新项目中要用到消息队列来做消息的传输,之所以选着 Kafka 是因为要配合其他 java 项目中,所以就对 Kafka 了解了一下,也算是做个笔记吧. 本篇不谈论 Kafka 和其他的一些消息队列的区别,包括性能及其使用方式. 简介 Kafka 是一个实现了分布式的.具有分区.以及复制的日志的一个服务.它通过一套独特的设计提供了消息系统中间件的功能.它是一种发布订阅功能的消息系统. 一些名词 如果要使用 Kafka ,那么在 Kafka 中有一些名词需要知道,文本不讨论这些名词是否在其他

消息队列Kafka学习记录

Kafka其实只是众多消息队列中的一种,对于Kafka的具体释义我这里就不多说了,详见:http://baike.baidu.com/link?url=HWFYszYuMdP_lueFH5bmYnlmH--SlsarbzE1CcfMi9JqeQBR77jCu30MubmAyBqqOSSZy9qfnrp5y5a_8wYota 想要下载Kafka可以直接上官网:http://kafka.apache.org/ (强烈建议一定要上官网下载,其它地方下载的可能有问题) Kafka下载成功之后,在libs

Kafka 消息队列系列之分布式消息队列Kafka

介绍 ApacheKafka®是一个分布式流媒体平台.这到底是什么意思呢?我们认为流媒体平台具有三个关键功能:它可以让你发布和订阅记录流.在这方面,它类似于消??息队列或企业消息传递系统.它允许您以容错方式存储记录流.它可以让您在发生记录时处理记录流.什么是卡夫卡好?它被用于两大类的应用程序:构建可在系统或应用程序之间可靠获取数据的实时流数据管道构建实时流应用程序,可以转换或响应数据流要了解卡夫卡如何做这些事情,让我们深入探索卡夫卡的能力.首先几个概念:Kafka作为一个或多个服务器上的集群运行

基于Docker搭建分布式消息队列Kafka

本文基于Docker搭建一套单节点的Kafka消息队列,Kafka依赖Zookeeper为其管理集群信息,虽然本例不涉及集群,但是该有的组件都还是会有,典型的kafka分布式架构如下图所示.本例搭建的示例包含Zookeeper + Kafka + Kafka-manger #获取镜像 ·         zookeeper镜像:zookeeper:3.4.9 ·         kafka镜像:wurstmeister/kafka:0.10.2.0 ·         kafka-manager

消息队列学习(待续)

概念 系统 消息队列功能及应用场景 异步处理 解耦 紧耦合 概念 随着需求的叠加,各模块之间逐渐变成了相互调用的关系 问题 对一个模块的功能变更,将导致其关联模块发生变化,模块之间难以独立 解决方法 模块之间调用时增加一个中间层 一个模块只关心自己的核心流程,而依赖该模块执行结果的其他模块,如果做的不是很重要的事情,有 通知 即可,无须等待结果 方便扩展 流量削峰 日志收集 事务最终一致性 参考 <分布式消息中间件实践> 原文地址:https://www.cnblogs.com/wangzhi

分布式消息队列kafka

下载地址:http://kafka.apache.org/downloads.html 先启动zookeeper服务器 bin/zookeeper-server-start.sh config/zookeeper.properties & 再启动kafka服务器 bin/kafka-server-start.sh -daemon config/server.properties & 创建topic bin/kafka-topics.sh --create --zookeeper local

分布式消息队列Kafka集群安装

kafka是LinkedIn开发并开源的一个分布式MQ系统,现在是Apache的一个孵化项目.在它的主页描述kafka为一个高吞吐量的分布式(能将消息分散到不同的节点上)MQ.在这片博文中,作者简单提到了开发kafka而不选择已有MQ系统的原因.两个原因:性能和扩展性.Kafka仅仅由7000行Scala编写,据了解,Kafka每秒可以生产约25万消息(50 MB),每秒处理55万消息(110 MB). Kafka版本:0.8.0 约定:安装3台虚拟机 官网:http://kafka.apach

消息队列服务Kafka揭秘:痛点、优势以及适用场景

摘要: 消息队列Kafka是一个分布式的.高吞吐量.高可扩展性消息队列服务,广泛用于日志收集.监控数据聚合.流式数据处理.在线和离线分析等,是大数据生态中不可或缺的产品之一,阿里云提供全托管服务,用户无需部署运维,更专业.更可靠.更安全.本文就将带你走进消息队列Kafka. 摘要:消息队列Kafka是一个分布式的.高吞吐量.高可扩展性消息队列服务,广泛用于日志收集.监控数据聚合.流式数据处理.在线和离线分析等,是大数据生态中不可或缺的产品之一,阿里云提供全托管服务,用户无需部署运维,更专业.更可