消息队列以及非常牛的kafka
目录
概念
例子比较
传统串行服务
引入消息队列
事务
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相关推荐
- 消息队列(4):Kafka
介绍 kafka是一个支持分布式的消息系统,基于发布/订阅模式. kafka由LinkedIn公司开发,2010年成为Apache顶级项目. 源码是由java写的. 基本概念 1.Broker kaf ...
- 为什么使用消息队列? 消息队列有什么优点和缺点? Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?...
https://blog.csdn.net/Iperishing/article/details/86674084 转载于:https://www.cnblogs.com/muzishisan/p/1 ...
- 2021年大数据Kafka(一):❤️消息队列和Kafka的基本介绍❤️
全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 消息队列和Kafka的基本介绍 一.什么是消息队列 二.消息队列的应用场景 ...
- 阿里云消息队列 RocketMQ、Kafka 荣获金融级产品稳定性测评 “先进级” 认证
近日,由中国信通院和混沌工程实验室联合举办的混沌工程技术沙龙–金融行业精品专场顺利召开,并发布金融级产品稳定性测评成果.在分布式系统稳定性评估体系获奖名单中,阿里云分布式消息队列服务成为通过首批消息队 ...
- 【后端】消息队列--Kafka篇
文章目录 kafka高性能原因 架构层面 IO层面 Kafka 设计目的 为何使用消息系统 概念 1.kafka Partition分区机制 1.1 分区个数选择 1.2 分区写入策略 1.3 top ...
- 面试官:请你从架构演进的角度讲讲redis、kafka和 pulsar消息队列
导语 | 市面上有非常多的消息中间件,rabbitMQ.kafka.rocketMQ.pulsar. redis等等,多得令人眼花缭乱.它们到底有什么异同,你应该选哪个?本文尝试通过技术演进的方式,以 ...
- RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ
RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ ...
- Kafka消息队列 入门到精通 看这一篇就够了
文章目录 第一章 概述 1.1 Kafka 的定义及特点 1.2 消息队列的介绍 1.3 Kafka 的基础架构 第二章 入门 2.1 Kafka 的安装部署 2.2 Kafka 命令行操作 第三章 ...
- 大数据之Kafka消息队列
一.消息队列: 消息队列的核心功能:解耦,异步和并行. 消息队列与rpc区别: 消息队列只负责发送消息:rpc需要调用,并给响应状态码:相同点是他们都能解耦. 消息队列: activeMQ: jdk: ...
- 关于消息队列,面试官一般都会问哪些?
1.为什么要使用消息队列? 解耦 看这么个场景.A 系统发送数据到 BCD 三个系统,通过接口调用发送.如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃...... ...
最新文章
- Android2.2 r1 API 中文文档系列(10) —— CheckBox
- [国家集训队]航班安排 (最大费用最大流)
- 学习总结5.0 Linux tar打包命令
- 基于三菱PLC的全自动洗衣机控制系统设计
- 自制的一个小地图生成器
- 河南省第八届ACM程序设计竞赛(未完再续)
- 水哥王昱珩直播解锁华为Mate 20黑科技,超微距效果实力非凡
- win server 2016 无法安转.net framework 3.5 问题
- 技术书籍也香艳【关于Head First Design Patterns 封面女郎】
- 【已解决】el-form required 提示英文改中文
- 第13节 IIS之WEB服务器部署及网站发布——以win2003为例
- 微型计算机ccc认证依据,3C检测规定
- css的nth选择器,CSS3 :nth-child() 选择器
- 信息碎片化爆炸时代,我们究竟失去的是什么?
- 中软国际路线图:先“稳”住大客户,再来谈新增量
- 游戏美术设计师需要什么学历背景?主要做什么?
- mysql meb物理备份脚本
- Emgu CV4图像处理之轮廓查找与绘制15(C#)
- vivado HLS 设计实现sBrief描述子
- 大国重器:人民币跨境支付系统CIPS
热门文章
- Django 中文文档解析
- 日志分析基础 | Syslog日志数据处理
- 2020-12-24 微信小程序 tabbar icon 控件 阿里矢量图库
- java 微信 图灵机器人_使用图灵api创建微信聊天机器人
- 计算机二级c语言题型及考点,全国计算机二级C语言考试题型及考试重点.doc
- CFA要学哪些课程?零基础怎么学CFA呢?
- 阿里云服务器如何购买?三种购买阿里云服务器方式教程分享
- 柳州计算机一级考试报名时间,2021计算机考试报名时间和考试时间
- ros重置后地址_初始化ROS路由器后,怎么使用Setup 指令配置IP地址?
- 弯曲时空量子场论的历史与现状 (下)