目录

概念

例子比较

传统串行服务

引入消息队列

事务

socket

MQ的两种流派

1、有broker

2、无broker

kafka使用场景

kafka的基本概念

kafka的安装

关于消息队列的思考:


1、对计算机有初步了解的人都知道,队列是个什么玩意,它就像一个管道一样先进先出。

那么我们来了解一下消息队列是个啥玩意吧!!!

概念

2、Message Query(MQ),消息队列中间件,很多初学者认为,MQ通过消息的发送和接受来实现程序的异步和解耦,mq主要用于异步操作,这个不是mq的真正目的,只不过是mq的应用,mq真正的目的是为了通讯。他屏蔽了复杂的通讯协议,像常用的dubbo,http协议都是同步的。这两种协议很难实现双端通讯,A调用B,B也可以主动调用A,而且不支持长连接。mq做的就是在这些协议上构建一个简单协议——生产者、消费者模型,mq带给我们的不是底层的通讯协议,而是更高层次的通讯模型。他定义了两个对象:发送数据的叫做生产者,接受消息的叫做消费者,我们可以无视底层的通讯协议,我们可以自己定义生产者消费者。

例子比较

我们以淘宝订单为例,比较传统串行服务和引入消息队列多的区别

传统串行服务

如果我们想买一个东西,那么需要经过以上的几个步骤,完成之后,才会给我们发送成功信号,消耗的时间是长的,并且十分容易引发错误,当网络波荡的时候,就会导致任务失败。

传统串行服务的优点:系统架构简单,排查错误比较容易

传统串行服务的缺点:1.耦合性太强 2.系统吞吐量不大,耗时多

引入消息队列

引入消息队列后,当在处理新订单是,只要消息发送到消息队列上,我们客户端就能收到订单成功的消息。剩下的处理操作,由消息队列来处理。大大减少了耗时。并且后面的操作之间也不会相互影响。因为他们进行的异步操作。这就降低了耦合性,提高了性能。

这里我们要思考一个问题:

如何解决重复通知,一个服务订阅多个队列的问题?

使用分布式锁,当一个消息队列被一个服务订阅以后,就会给消息队列加上锁,其他的服务就不能在订阅了。

事务

只要涉及到消息队列,肯定要处理事务问题。

事务:原子性,我所有的动作要么都执行,要么都不执行。

比如说:张三给我转100元,可以分成两部分,张三账户减100,我账户加100

socket

1、socket用于即时通讯。socket是长连接。

2、传统的http请求,随着服务端的返回给客户端消息,两者之间的关联就消失了,所以服务端想要主动联系客户端就得靠轮询的方式,但是这种轮询比较耗费性能的,既要消耗客户端性能,又消耗服务器资源,于是有了长连接的概念。

MQ的两种流派

1、有broker

broker是一个中转站,为了将消息放到不同的队列里。存放方式有两种:

(1)消息来了主动放

(2)等待消息请求

有broker的也分为两类

1、重topic

kafka:全球消息处理性能最快的一款mq

rocket:阿里内部的一个大神根据kafka的执行原理手写的,性能与kafka差不多,但是功能   上比kafka要多,比如说顺序消费。

2、轻topic

可以没有topic,topic只是一种中转模式

rabbitmq

2、无broker

zeromq:没有使用broker,是直接使用socket进行通信。

kafka使用场景

1,日志收集:可以用kafka收集各种服务的日志 ,通过已统一接口的形式开放给各种消费者。

2,消息系统:解耦生产和消费者,缓存消息。

3,用户活动追踪:kafka可以记录webapp或app用户的各种活动,如浏览网页,点击等活动,这些活动可以发送到kafka,然后订阅者通过订阅这些消息来做监控。

4,运营指标:可以用于监控各种数据。

kafka的基本概念

kafka是一个分布式的分区的消息,提供消息系统应该具备的功能。

名称

解释

broker

消息中间件处理节点,一个broker就是一个kafka节点,多个broker构成一个kafka集群。

topic

kafka根据消息进行分类,发布到kafka的每个消息都有一个对应的topic

producer

消息生产(发布)者

consumer

消息消费(订阅)者

consumergroup

消息订阅集群,一个消息可以被多个consumergroup消费,但是一个consumergroup只有一个consumer可以消费消息。

kafka的安装

可以来看这篇博客

http://t.csdn.cn/LYJ3b

关于消息队列的思考:

了解了消息队列,现在让我们来思考一个消息队列的问题,也是经典的消息堆积问题,比如说客户端每秒生产10000条消息,但是消费者每秒消耗100条。

-------------------------------------------------------------

|

|

|
|

|

答案:

1、增加消费者,既然消费不了,那么就多找几个消费者,来完成消费

2、限流,限制客户端每秒产生消息的数量。

消息队列以及非常牛的kafka相关推荐

  1. 消息队列(4):Kafka

    介绍 kafka是一个支持分布式的消息系统,基于发布/订阅模式. kafka由LinkedIn公司开发,2010年成为Apache顶级项目. 源码是由java写的. 基本概念 1.Broker kaf ...

  2. 为什么使用消息队列? 消息队列有什么优点和缺点? Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?...

    https://blog.csdn.net/Iperishing/article/details/86674084 转载于:https://www.cnblogs.com/muzishisan/p/1 ...

  3. 2021年大数据Kafka(一):❤️消息队列和Kafka的基本介绍❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 消息队列和Kafka的基本介绍 一.什么是消息队列 二.消息队列的应用场景 ...

  4. 阿里云消息队列 RocketMQ、Kafka 荣获金融级产品稳定性测评 “先进级” 认证

    近日,由中国信通院和混沌工程实验室联合举办的混沌工程技术沙龙–金融行业精品专场顺利召开,并发布金融级产品稳定性测评成果.在分布式系统稳定性评估体系获奖名单中,阿里云分布式消息队列服务成为通过首批消息队 ...

  5. 【后端】消息队列--Kafka篇

    文章目录 kafka高性能原因 架构层面 IO层面 Kafka 设计目的 为何使用消息系统 概念 1.kafka Partition分区机制 1.1 分区个数选择 1.2 分区写入策略 1.3 top ...

  6. 面试官:请你从架构演进的角度讲讲redis、kafka和 pulsar消息队列

    导语 | 市面上有非常多的消息中间件,rabbitMQ.kafka.rocketMQ.pulsar. redis等等,多得令人眼花缭乱.它们到底有什么异同,你应该选哪个?本文尝试通过技术演进的方式,以 ...

  7. RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ

    RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ ...

  8. Kafka消息队列 入门到精通 看这一篇就够了

    文章目录 第一章 概述 1.1 Kafka 的定义及特点 1.2 消息队列的介绍 1.3 Kafka 的基础架构 第二章 入门 2.1 Kafka 的安装部署 2.2 Kafka 命令行操作 第三章 ...

  9. 大数据之Kafka消息队列

    一.消息队列: 消息队列的核心功能:解耦,异步和并行. 消息队列与rpc区别: 消息队列只负责发送消息:rpc需要调用,并给响应状态码:相同点是他们都能解耦. 消息队列: activeMQ: jdk: ...

  10. 关于消息队列,面试官一般都会问哪些?

    1.为什么要使用消息队列? 解耦 看这么个场景.A 系统发送数据到 BCD 三个系统,通过接口调用发送.如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃...... ...

最新文章

  1. Android2.2 r1 API 中文文档系列(10) —— CheckBox
  2. [国家集训队]航班安排 (最大费用最大流)
  3. 学习总结5.0 Linux tar打包命令
  4. 基于三菱PLC的全自动洗衣机控制系统设计
  5. 自制的一个小地图生成器
  6. 河南省第八届ACM程序设计竞赛(未完再续)
  7. 水哥王昱珩直播解锁华为Mate 20黑科技,超微距效果实力非凡
  8. win server 2016 无法安转.net framework 3.5 问题
  9. 技术书籍也香艳【关于Head First Design Patterns 封面女郎】
  10. 【已解决】el-form required 提示英文改中文
  11. 第13节 IIS之WEB服务器部署及网站发布——以win2003为例
  12. 微型计算机ccc认证依据,3C检测规定
  13. css的nth选择器,CSS3 :nth-child() 选择器
  14. 信息碎片化爆炸时代,我们究竟失去的是什么?
  15. 中软国际路线图:先“稳”住大客户,再来谈新增量
  16. 游戏美术设计师需要什么学历背景?主要做什么?
  17. mysql meb物理备份脚本
  18. Emgu CV4图像处理之轮廓查找与绘制15(C#)
  19. vivado HLS 设计实现sBrief描述子
  20. 大国重器:人民币跨境支付系统CIPS

热门文章

  1. Django 中文文档解析
  2. 日志分析基础 | Syslog日志数据处理
  3. 2020-12-24 微信小程序 tabbar icon 控件 阿里矢量图库
  4. java 微信 图灵机器人_使用图灵api创建微信聊天机器人
  5. 计算机二级c语言题型及考点,全国计算机二级C语言考试题型及考试重点.doc
  6. CFA要学哪些课程?零基础怎么学CFA呢?
  7. 阿里云服务器如何购买?三种购买阿里云服务器方式教程分享
  8. 柳州计算机一级考试报名时间,2021计算机考试报名时间和考试时间
  9. ros重置后地址_初始化ROS路由器后,怎么使用Setup 指令配置IP地址?
  10. 弯曲时空量子场论的历史与现状 (下)