【kafka】一、消息队列
在高并发的应用场景中,由于来不及同步处理请求,接收到的请求往往会发生阻塞。例如,大量的插入、更新请求同时到达数据库,这会导致行或表被锁住,最后会因为请求堆积过多而触发“连接数过多的异常” 的错误。因此,在高并发的应用场景中需要一个缓冲机制,而消息队列则可以很好地充当这样一个角色。消息队列通过异步处理请求来缓解系统的压力。
什么是消息队列
“消息队列” (Message Queue, MQ)从字面来理解,是一个队列,拥有先进先出(FIFO)的特性。它主要用于不同进程或线程之间的通信,用来处理一系列的输入请求。消息队列采用异步通信机制。即:消息的发送者和接收者无须同时与消息队列进行数据交互,消息会一直保存在队列中,直至被接收者读取。每一条消息记录都包含详细的数据说明,包括数据产生的时间、数据类型、特定的输入参数。
消息队列的应用场景
应用解耦:多个应用可通过消息队列对相同的消息进行处理,应用之间相互独立,互不影响;
异步处理:相比于串行和并行处理,异步处理可以减少处理的时间;数据限流:流量高峰期,可通过消息队列来控制流量,避免流量过大而引起应用系统崩溃;
消息通信:实现点对点消息队列或聊天室等。
1.应用解耦,由于消息与平台和语言无关,并且在语法上也不再是函数之间的调用,因此,消息队列允许应用接口独立地进行扩展,只用应用接口遵守同样的接口约束。
举例,用户使用客户端上传一张个人图片。(1)上传系统将图片信息(如唯一ID、图片类型、图片尺寸等)批量写入消息队列,写入成功后会将结果直接返回给客户端。(2)人脸识别系统定时从消息队列中读取数据,完成对新增图片的识别。
图片上传系统无须关心人脸识别系统是否对上传的图片进行了处理,它只需要关心是否成功将图片信息写入消息队列。由于用户无须立即知晓人脸识别的结果,因此人脸识别系统可选择不同的调度策略来处理
2.异步处理,用户在注册账号时,服务程序需要给用户发送邮件注册信息和短信注册信息。比较传统的做法是-通过串行和并行的方式来实现。
(1)串行方式:先将用户注册信息写入数据库,然后发送短信注册信息,再发送邮件注册信息。以上三个任务全部完成后,才会将结果返回给用户。假设这三个阶段的耗时均为20ms,不考虑网络等其他消耗,则整个过程需耗时60ms。
(2)并行方式:先将用户注册信息写入数据库,然后在发送短信注册信息的同时还发送邮件注册信息。以上任务全部完成后才会将结果返回给用户。
针对上述应用场景,采传统方式时,系统的性能(如并发量、吞吐量、响应时间等)会产生瓶颈。此时需要引入消息队列异步处理非必要业务环节
用户将注册信息写入数据库约耗时20ms (和串行和并行的处理时间相同) 。短信和邮件注册信息写入消息队列后会直接将结果返回给用户。由于写入消息队列的速度非常快,基本可以忽略。另外, “通过异步读取消息队列中的短信注册信息”过程和“邮件注册信息”过程相当于同时进行的,那么整个过程约耗时20ms.
从上面的分析可以看出,在调整架构后,系统的整体处理时间是串行方式的1/3,是并行方式的1/2。
3.数据限流:数据限流也是消息队列的常用场景之一,一般在促销和“秒杀”活动中使用得较为广泛。例如,在电商的“双11"活动中,由于瞬间的数据访问量过大,服务器接收到的数据请求·过大,则导致服务器上的应用服务无法处理请求而崩溃。为了解决这类问题,一般需要先将用户请求写入消息队列(相当于用消息队列做一次缓冲),然后服务器上的应用服务再从消息队列中读取数据。
数据限流具有以下优点:·用户请求写数据到消息队列时,不与应用业务服务直接接触,中间存在一次缓冲。这极大地减少了应用服务处理用户请求的压力。可以设置队列的长度,用户请求遵循FIFO(先进先出)原则。后来的用户请求处于队列之外时,是无法秒杀到商品的,这些请求会直接被舍弃,返给用户"商品已售完”的结果。
4.消息通信:消息队列具有高效的通信机制,所以其在点对点通信和聊天室通信中被广泛应用。
【kafka】一、消息队列的更多相关文章
- 【转】快速理解Kafka分布式消息队列框架
from:http://blog.csdn.net/colorant/article/details/12081909 快速理解Kafka分布式消息队列框架 标签: kafkamessage que ...
- Kafka 分布式消息队列介绍
Kafka 分布式消息队列 类似产品有JBoss.MQ 一.由Linkedln 开源,使用scala开发,有如下几个特点: (1)高吞吐 (2)分布式 (3)支持多语言客户端 (C++.Java) 二 ...
- Kafka分布式消息队列
基本架构 Kafka分布式消息队列的作用: 解耦:将消息生产阶段和处理阶段拆分开,两个阶段互相独立各自实现自己的处理逻辑,通过Kafka提供的消息写入和消费接口实现对消息的连接处理.降低开发复杂度,提 ...
- ELK之使用kafka作为消息队列收集日志
参考:https://www.cnblogs.com/fengjian2016/p/5841556.html https://www.cnblogs.com/hei12138/p/7805475 ...
- SpringBoot开发案例之整合Kafka实现消息队列
前言 最近在做一款秒杀的案例,涉及到了同步锁.数据库锁.分布式锁.进程内队列以及分布式消息队列,这里对SpringBoot集成Kafka实现消息队列做一个简单的记录. Kafka简介 Kafka是由A ...
- 快速理解Kafka分布式消息队列框架
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ ==是什么 == 简单的说,K ...
- kafka分布式消息队列介绍以及集群安装
简介 首先简单说下对kafka的理解: 1.kafka是一个分布式的消息缓存系统: 2.kafka集群中的服务器节点都被称作broker 3.kafka的客户端分为:一是producer(消息生产者) ...
- [转载] 快速理解Kafka分布式消息队列框架
转载自http://blog.csdn.net/xiaolang85/article/details/18048631 ==是什么 == 简单的说,Kafka是由Linkedin开发的一个分布式的消息 ...
- kafka以及消息队列详解
Kafka 是LinkedIn 开发的一个高性能.分布式的消息系统. 用途:广泛用于日志收集.流式数据处理.在线和离线消息分发等场景. 1. Kafka 将消息流按Topic 组织,保存消息的服务器称 ...
- 测开之路七十三:用kafka实现消息队列之环境搭建
一:装java环境,确保java能正确调用 kafka下载地址:http://kafka.apache.org/downloads 下载并解压kafka: 新建两个文件夹,用于存放zookeeper和 ...
随机推荐
- Python 3网络爬虫开发实战》中文PDF+源代码+书籍软件包
Python 3网络爬虫开发实战>中文PDF+源代码+书籍软件包 下载:正在上传请稍后... 本书书籍软件包为本人原创,在这个时间就是金钱的时代,有些软件下起来是很麻烦的,真的可以为你们节省很多 ...
- 【算法•日更•第六期】头脑风暴:洛谷P1528 切蛋糕题解
▎(一个没有用处的)前言 为什么这次题解特意写明题号呢?因为我发现了这样的事情: 所以不要混了,想看P1714题解的同志们可以圆润的滚开了. 好了,不说没用的了,切入正题: ▎题目 题目及测评链接:戳 ...
- 存储账户静态网站与Azure CDN
背景 把静态网站或文件托管在对象存储上,有很多可能很多好处,比如说:可以节省成本,因为相对虚机更便宜:性能更优,因为可以依赖于对象存储本身的高吞吐以及 CDN 的:更好的高可用性,因为也可以依赖于对象 ...
- nio原理和示例代码
我正在为学习大数据打基础中,为了手撸rpc框架,需要懂得nio的原理,在搞懂nio框架前,我会带着大家手撸一些比较底层的代码,当然今后当我们学会了框架,这些繁琐的代码也就不用写了,但是学一学底层的代码 ...
- Apache Dubbo已不再局限于Java语言
2017 年 9 月 7 日,在沉寂了4年之后,Dubbo 悄悄的在 GitHub 发布了 2.5.4 版本.随后又迅速发布了 2.5.5.2.5.6.2.5.7 等release.在 2017年 1 ...
- 齐治运维堡垒机后台存在命令执行漏洞(CNVD-2019-17294)分析
基本信息 引用:https://www.cnvd.org.cn/flaw/show/CNVD-2019-17294 补丁信息:该漏洞的修复补丁已于2019年6月25日发布.如果客户尚未修复该补丁,可联 ...
- 小埋的Dancing Line之旅:比赛题解&热身题题解
答疑帖: 赞助团队:UMR IT Team和洛谷大佬栖息地 赛后题解:更新了那两道练手题的题解 赛时公告,不过一些通知也可能在团队宣言里发出 如果各位发现重题,请将你认为重复的题目链接连同这次比赛的题 ...
- DML语言DDL
DML(data manipulation language): 它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言 . D ...
- HTML介绍和标签
1.HTML介绍 1.概述 html不是一种编程语言,是一种描述性的标记语言,用于描述超文本内容的显示方式.比如字体,颜色,大小等. 超文本:音频,视频,图片称为超文本. 标记:<英文单词或者字 ...
- Atlassian In Action-Jira之推荐插件(四)
前面的几章基本已经完整构建了Jira的管理平台,并且有了一套比较完成的制度和方法.但是优化是永无止境的,我们作为研发管理人员,需要让系统使用起来更加高效和便捷.为了达到这个目的一般有两种途径,插件和开 ...