消息队列介绍

核密度估计及其Python实践 一、参数估计简介 很多情况下,我们只有有限的样本集,而类条件概率密度函数p(x|ωi)和先验概率P(ωi)是未知的,需要根据已有样本进行参数估计,然后将估计值当作真实值来使用。 由给定样本集求解随机变量的分布密度函数问题是统计机器学习和概率统计学的基本问题之一。解决该问题的方法包括参数估计和非参数估计两大类: 1.参数估计方法 已知概率密度函数的形式而函数的有关参数未知,通过估计参数来估计概率密度函数的方法。有两种主要参数估计法:确定性参数估计方法是把参数看作确定而未知的, 典型方法为最大似然估计。随机参数 阅读详情

使用消息队列的原因

要是针对某些特定的业务场景,如果不使用消息队列会让系统的一些业务实现变得很复杂。这些场景很多,比如电商系统的订单与库存服务,考试系统的提交与日志服务等。将这些复杂的场景抽象起来,其实使用消息队列的场景集中在达到三个目的:解耦、异步、挫峰。

解耦

这里主要针对耦合度比较高的系统场景,举个简单的例子,比如说电商场景,订单服务需要被支付、仓库、商品等服务调用,而这其中订单服务就会出现很大的问题,它需要去时刻检测另外的服务是否还活着,如果调用失败了是不是还需要存储或者重发,一旦处理的逻辑不当会造成整个系统的数据不一致。
在计算机科学的世界里,没有什么问题是引入一个中间层解决不了的。(虽然这句话的下半句是但是这个中间层会引起新的问题。)
但是引入消息队列之后,场景就变成了,订单服务提交数据给消息队列服务器,无需关心另外系统的消费情况,即将订单服务与其他服务解耦开了。而这里面的消息队列就起着一种类似与C#中委托订阅,比较经典的Pub/Sub模型的作用。

异步

这里主要针对实际对响应时间要求比较高的应用场景,举个我曾经实际遇到过的场景,简单说就是一个电子签章的场景,涉及到显式签名、隐式签名与数据库中签名状态记录的更新。显示签名指在对应的文档模板上通过相应文档操作更新上显示的签名或图章,隐式签名指的是密码学的相关操作,数据库记录更新即更新相应记录,便于后续的操作。
如果采用一般的模式(无消息队列),签一次名的总时间为1500ms左右(密码与文档操作会消耗大量的时间),这无论是从用户体验与系统瓶颈来看都是不友好的。一般的应用产品,理论上每个请求应在200ms使用完成。
引入消息队列后,我们可以将显示与隐式签名的服务调用与数据库状态记录的更新解耦开,将签名签章请求发送给单独的消息队列服务器,只更新数据库的记录(起到类似与锁的作用),然后再由显式与隐式签名服务去消费消息队列里的请求。这样对于用户来说,一次响应的时间大概在10ms不到,因为不涉及长时间的运算,对于系统来说,有效的解决了系统的当前瓶颈,因为很多情况下,用户只是签名完成即可,不需要去下载真正的签名文档。

挫峰

顾名思义就是解决系统达到峰值并发引起的问题,比如一个正常的考试系统,当不考试的时候,系统应该是几乎没有请求的,而当有考试的时候,系统是有很大的并发量的,当并发量足够大,且没有redis,cache之类的东西,请求会容易把数据库直接搞挂,从而导致系统的崩溃,严重的可引起微服务系统的雪崩效应。
如果引入了消息队列,就可以解决这样的问题,这时消息队列起的是一个缓冲的作用,保证请求被后台程序稳定消费,将系统的峰值分摊到后面空闲的时候处理。

不使用消息队列的原因

缺点应该是比较明显,场景很复杂,引入消息队列会带来很多新的问题。

复杂

引入消息队列固然解决了一定棘手的问题,但仍然存在很多问题,比方说消息如何保证被可靠消费,消息如何保证没有在传输过程中失败。

可用性保证

和一些微服务中重要的组件一致,比方说配置中心,注册中心等,消息队列的可用性仍然需要可靠的保证,并需要一定的容错措施。

一致性问题

就像刚才在异步场景举的列子,用户固然接受到已经操作成功的消息,你还需要保证下面还未执行的操作顺利执行,如果执行失败也要有相应的处理措施,如果毫无处理,在某种意义上就造成了整个系统的数据不一致问题。

总的来说还是刚才说的那句名句,在计算机科学的世界里,没有什么是引入一个中间层解决不了的,但是这个中间层会带来新的问题。

消息队列的选型(各消息队列的优缺点分析)

世面上比较常用的是Kafka,ActiveMQ,RabbitMQ,RocketMQ消息队列

名称KafkaActiveMQRabbitMQRocketMQ
吞吐量10w1w1w10w
发布订阅主题数量造成的影响较大无无较小
效率毫秒毫秒微秒毫秒
可用性极高高高极高
使用架构分布式主从主从分布式
可靠性极高会丢极高需要优化达到不丢
功能简单,一般用于大数据完善并发强扩展性好
使用场景大数据 领域社区不活跃不建议不可控但性能强社区有黄的风险

问题的解决

保证高可用

RabbitMQ

上面提到,这个场景下的消息队列主要基于主从场景。RabbitMQ的操作主要有三种模式:single,normal cluster,image cluster来保证高可用,只需要在它的控制台选择相应的策略配置即可切换。
–针对single模式,没有必要讨论,只是本地运行学习使用。

–针对normal cluster模式,简单说就是普通集群部署的方式,在多台机器或现在很流行的容器中启动RabbitMQ实例,RabbitMQ使真实的队列只存在与其中的一个实例中,并在各个实例中同步更新队列的配置信息(一般称之为元数据),当我们需要找到真实队列的实例并开始消费时,我们可以通过元数据简单找到。也就是说,真实的消费场景是连接任意实例,这个实例去拉取真正实例的数据。这种模式的缺点比较明显,一个是如果真实队列所在的实例发生故障,那么可用性会造成影响,另一个是如何选择连接的实例,即如何保证各个实例负载均衡。总而言之,只是提升了一定的消息消费性能,并没有真正做到我们现在讲的高可用。

–针对image cluster模式,与上述的normal cluster场景有明显不同,实际的队列会存在于各个实例中,每个实例都相当于有一个实际队列的完整镜像,在写的时候,会从写入的实例开始使用分布式同步的方法将这个消息同步到各个实例,在读的时候,只需要采用随机,轮询等经典负载均衡算法连接合适的实例即可获取,没有拉取数据的成本与风险。优点很明显,实现了高可用,缺点也很明显,每个实例都存了一份数据,很难拓展,到后期每写入一个消息,成本都增加了。

Kafka

天然适合分布式的场景,架构和现在流行的K8S很像,就是各个层次的细化做的细致,广的来看,针对整体的结构,分成若干个broker节点,针对消息订阅发布的主题,则将其分成各个partition,将各个partition存放在各个broker节点上。
通俗的讲,就是数据不连续放在一个机器或容器上,而是分散开。这也是它和RabbitMQ最大的不同,也决定了它在大数据领域很有市场。
Kafka在0.8以前是没有高可用性保证的,而在0.8以后提供了一种叫作replica副本的机制。每个partition的数据会在写入完成后通过分布式的方式去同步到其他实例或机器中,也就是形成了各个夫本,然后会使用一个共识算法去选举一个leader replica出来,由它去管理其他的replica。这是一种中心化的做法,每次写入只需要写入leader,然后让leader去同步数据到所有的follower上,读的时候直接读取leader数据。从而达到了高可用,即使leader因为过劳挂了,只需要从其他的replica中重新使用共识算法选举出一个新的leader即可。
更细致的描绘一下,写的时候默认的共识方式是,写入leader,leader将数据从内存写入磁盘,其他broke自动去pull数据,并返回给leader pull的结果,当leader发现所有的broke都成功复制了数据,再返回成功写入的响应。当然可以更换别的共识策略。
更具体的可以看官方的文档。

保证幂等性

所谓幂等性即每个消息无论消费多少次对系统产生的结果都是一致的,在消息队列的场景下,要保证幂等性,首先要保证消息不被重复消费。

保证消息不被重复消费

拿kafka来说,kafka是通过偏移量来实现消息的消费,每次写入消息时候获取消息的偏移量来定位消息的位置,消息完成后,每隔一段时间将偏移量提交,来保证宕机后继续能使用上次的消息消费。
设想固然是美好的,但是这个操作并不是Atomic的操作。会存在还未提交过偏移量,但是消息的确已经被消费的那一刹那重启的问题,会导致重启回复后的消费再次被消费。
这种问题消息队列并没有给我们保证好,需要我们自己在业务里判断。
比方说简单的数据库写入消息,我们只需要下写入的时候判断一下这个请求是否已经被消费过即可,当然业务的场景会复杂,也需要采用不同的方法去操作。

进一步保证幂等性

有很多方法可以保证,比如说以下场景

– 普通关系型数据库的Create场景,先read一下,再判断是Create还是update

– Nosql,自身就支持幂等性。

– 复杂场景,使用分布式唯一id,可以用redis,uuid等方法。

– 使用数据库自身约束,具体场景具体分析。

保证高可靠性

即保证数据被可靠传输,拿RabbitMQ来说。众所周知,消息队列的引入同时会出现三个角色,即producer,customer和消息队列本身,那么问题必然出现在这三个角色其中一环。

RabbitMQ的解决方式

  1. producer发送到消息队列时丢失数据:原因就不用管了,比如网络坏了,波动了。为了避免这个问题,RabbitMQ提供了事务的支持,和数据库中的事务类似,当消息队列没有给生产者正确的写入响应时,生产者会认为没有正确执行这一事务,直接启动回滚机制重发消息,直到正确响应收到之后才会commit。当然这必然导致性能下降,为此RabbitMQ也提供了另一种confirm的模式,在生产者开启confirm之后,会生成一个全局id,如果成功响应,那么就成功返回,如果没有被成功响应,那么你可以根据自己的业务场景,结合这个全局唯一的id来进行自己操作,或重发或回调。两种模式存在本质上的区别,同步阻塞和异步调用的区别。一般来说使用异步调用,即confirm的模式。
  2. 消息队列丢失数据: 开启持久化模式,这个和redis类似,开启持久化之后消息不仅存在于内存中,还会被写入硬件磁盘中,便于回复。方法比较简单,即在初始化的时候将queue设置为持久化的模式,然后将消息的deliveryMode设置为2.但这样仍然会存在还未持久到磁盘时数据丢失。
  3. customer丢失数据:消费者接受到了数据,但是自己挂了。这个也比较简单,不经额外配置的话RabbitMQ的响应是HTTP的可靠保证机制类似的机制,即当这个数据被消费者收到之后,消费就已经默认完成了,我们为了避免这个问题的出现,只需要更换这个验证机制,把接受响应变成一个api接口调用的模式,直到自己的业务逻辑走完再返回给消息队列已经成功消费的机制即可。

Kafka的解决方式

和上面一样,分析三种情况

  1. producer丢失:不会出现这个问题,因为Kafka的写入机制在上文已经题到,只有各个broke都有对应的副本出现才会返回成功响应。当然可能因为一些配置调优,设置acks为非默认参数的话也会出现一定这样的情况,毕竟性能和可靠就是个跷跷板的两端。
  2. 消息队列丢失:一般来说不会出现,但是会有一种极端情况,比如说在重新选举leader的时候,平民节点还未同步数据,而这个还没同步的节点被选举成了新的leader,那么数据就丢失了。这种极端情况可以通过配置来解决,第一个配置主题replication.factor大于1(实际情况自己配),第二个配置服务端min.insync.replicas也大于1,确保还存在一个平民节点在leader挂了还有完整的数据(通俗的说,选了个副把手),第三个:设置acks=all,和上面题到的一样。第四个,设置retris=MAX,即让写入未成功的时候不断重试,保证不往下执行相应的逻辑。
  3. customer丢失:和RabbitMQ一样,将自带的相应关闭,然后写自己的逻辑去替换即可。

保持有序性

一般来说是不会有消息不按正确的顺序被消费的问题,但是还是存在一些特殊且不少见的场景

  1. RabbitMQ:存在只有一个消息队列对应多个消费者的情况,因为消费者处理数据的速度不一致,导致写入最终数据库的数据顺序发生了不一致(对数据顺序有要求的场景)。解决方法:产生多个实际队列,每个队列对应一个消费者,消费者内部处理多个队列,可以在内存中新建一个队列,然后分配给不同的消费者有序执行操作。
  2. Kafka:新建一个主题,产生三个分区。如果消费者使用多线程并发处理,会让数据的顺序丢失。比较常见的就是大数据Mapreduce的处理。必然涉及多线程导致数据顺序混乱。解决方法一种是更换单线程,但这在大数据场景是不可以的(学过的应该懂),另一种和RabbitMQ类似,在内存中建多个队列,将key存在同一个队列中,然后让多线程场景消费者每个线程处理一个队列,在大数据场景中就是针对每个队列,使用一个Map发生的线程去处理。(虽然也可以放到reduce函数去处理这个逻辑,但是这样会对数据的格式有另外的要求,比如有顺序id等。)

解决极端情况(延时、失效、队列满、消息积压过多)

  1. 大量消息长时间不被消费:如果这个事情已经发生,可以采用扩容的方法,比如说增加consumer实例数,增加队列的主题数等。
  2. 消息有效时间到了:会丢失大量数据,只能通过脚本将过期数据重新传入消息队列。
  3. 队列满:和上面差不多,脚本将过期数据重新传入。

消息队列可扩展的思想

  1. 弹性伸缩:和容器弹性计算的思想类似,根据数据的增加,增加存储的实例数,可伸缩的应对需求。
  2. 减少磁盘读取的成本:众所周知,磁盘的读取是比较慢的,时间消耗主要在磁盘的寻址问题,因此引入偏移量来减少寻址成本。
  3. 更具场景选择更好的共识算法去选举新的leader节点。
  4. 保证数据不被丢失,引入像binlog,三段提交,两段提交,镜像恢复等方式。
rk3568 修改开机动画 bootanimation.zip是一个Android设备启动时播放的动画文件,它包含了一系列的图片和描述文件,用于描述动画的播放顺序和持续时间。 阅读详情

相关推荐

机器学习ROC曲线中的阈值thresholds

在ROC曲线上的不同点对应于不同的阈值。根据任务的具体要求,可以选择合适的阈值,以达到平衡召回率和误报率,或者根据具体应用场景调整模型的工作点。,表示样本属于正例的概率。这个概率值可以被截断为二元分类的决策,通过选择一个阈值来决定样本是被分类为正例还是负例。通过改变阈值,可以得到不同的真正例率(TPR)和假正例率(FPR),从而绘制出ROC曲线。总体来说,ROC曲线提供了模型在不同阈值下的性能综合情况,帮助分析模型的分类能力。通常来说,随着阈值的增加,TPR会减小,而FPR会增加。ROC曲线的绘制涉及。

行子的博客 3654

手把手教姐姐写消息队列(golang)- 使用channel实现消息队列

前言 这周姐姐入职了新公司,老板想探探他的底,看了一眼他的简历,呦呵,精通kafka,这小姑娘有两下子,既然这样,那你写一个消息队列吧。因为要用go语言写,这可给姐姐愁坏了。赶紧来求助我,我这么坚贞不屈一人,在姐姐的软磨硬泡下还是答应他了,所以接下来我就手把手教姐姐怎么写一个消息队列。下面我们就来看一看我是怎么写的吧~~~。 本代码已上传到我的github: 有需要的小伙伴,可自行下载,顺便给个小星星吧~~~ 什么是消息队列 姐姐真是把我愁坏了,自己写的精通kafka,竟然不知道什么是消息队列,于是

qq_39397165的博客 5937

聊一聊固态电池和钠离子电池新技术

总之,固态电池是一种“安全又高效的未来电池”,它的好处非常明显,但目前还处于研发阶段,离普及还有一段距离。未来,这两种技术可能会与锂离子电池并存,分别满足不同的市场需求。我尝试用最通俗易懂的语言将复杂的技术讲给大家听。钠离子电池和锂离子电池的工作原理很相似,但它用的是。固态电池和钠离子电池是两种正在研发和推广的。,它们有潜力解决现有锂离子电池的部分缺点。,而不是锂(Li)。

weixin_33324696的博客 3333

RabbitMQ之消息持久化

消息的可靠性是RabbitMQ的一大特色,那么RabbitMQ是如何保证消息可靠性的呢——消息持久化。 为了保证RabbitMQ在退出或者crash等异常情况下数据没有丢失,需要将queue,exchange和Message都持久化。 queue的持久化 queue的持久化是通过durable=true来实现的。 一般程序中这...

weixin_34062329的博客 3385

BERT之提取特征向量 及 bert-as-server的使用

本文内容列表提取句向量1、句向量简介1-1传统句向量1-2、BERT句向量2、 extract_features.py源码分析2-1 main函数 前一篇文章 BERT介绍及中文文本相似度任务实践 简单介绍了使用BERT进行中文文本相似度计算的方法,这篇文章着重对特征提取方法进行讲述。 提取句向量 1、句向量简介 1-1传统句向量 更多采用word embedding的方式取加权平均,该方法的一大...

ling620的专栏 1万+

新手必看!Cisco Packet Tracer 8.2从安装到完成第一个局域网实验(附常见问题解决)

本文为网络新手提供了Cisco Packet Tracer 8.2的完整入门指南。从官方下载安装、界面熟悉,到核心的拖拽设备、连线、配置IP地址三步操作,手把手教你完成第一个局域网组网实验。文章重点讲解了如何通过Ping命令验证连通性,并附带了连线错误、IP配置不当等常见问题的解决思路,帮助初学者快速上手这款强大的思科模拟器。

android的专栏 867

消息队列----RabbitMQ

一、为什么要用MQ? 消息队列(message queue),见字知意,想到数据结构中的队列,特性先进先出,主要用途就是不同进程或者线程之间进行通信。 进程间通信方式有很多种,为什么用MQ呢?最经典的说法就是三点概括:解耦、异步、削峰 解耦: 从上图可以看到,传统模式的系统耦合性太强,外接系统要改代码,违背了我们软件设计高内聚低耦合的这么一个原则;而中间件模式,采用发布订阅的这么一个思...

生命不息,奋斗不止 2576

如何实现VMware虚拟机上的ubuntu与windows主机共享文件夹

windows主机部分   在硬盘上任意位置新建文件夹,此处命名为Share,实际上随意。 接下来右键属性,操作如下系列图所示: 在硬盘上任意位置新建文件夹,此处命名为Share,实际上随意。 成功修改后,显示如下界面: VMware部分 ubuntu在关机状态下,点击“编辑虚拟机设置” 接下来,开启ubuntu系统,在终端输入: ·· vmware-hgfsclient ·· 将会显示如下画面,但是此时你可能找不到 /mnt/hgfs 这个路径,如果找不到该路径,则需要在虚拟

Mr.Sliver的博客 8215

关于消息队列的入门到框架的综合整理

1.两种消息队列的模型 1.2共享模型 共享内存这种方式比较常见,我们经常会设置一个共享变量。然后多个线程去操作同一个共享变量。从而达到线程通讯的目的。例如,我们使用多个线程去执行页面抓取任务,我们可以使用一个共享变量count来记录任务完成的数量。每当一个线程完成抓取任务,会在原来的count上执行加1操作。这样每个线程都可以通过获取这个count变量来获得当前任务的完成情况。当然必须要考虑的是...

流的博客 1032

SAP接口错误查询日志

随着数字经济的迅速发展,企业数字化转型不在只追求“业财一体化”,而是在业务端也想要进行更为精细化的管理,所以很多企业在SAP ERP的基础上,集成更多垂直领域更精细的外围系统,比如销售CRM系统,采购SRM系统,生产MES系统等等,琳琅满目的产品,那对SAP实施来说,系统集成过程中,接口的一些报错查询能力必不可少,今天我们就介绍一下,SAP和CRM系统集成中接口常见的报错。

weixin_43657667的博客 2047

对CryptoDriver里密钥格式定义的探索(1)

一入网络安全才发现深似海,传统汽车MCU码农转型之路异常艰难。在CP AUTOSAR中的CryptoDriver SWS对密钥格式的需求来源于RFC,其中要求了RSA、ECC、SHE等key material的格式。再往下看,我就有些迷糊了,例如关于RSA Private Key的OCTEE STRING格式根据IETF RFC8017,Public Key又得根据RFC5280,完全不得其解。所以今天先从生成密钥对,并对其进行解析开始,一步一步拆解。

认真搞搞汽车MCU 527

消息队列及常见消息队列介绍

一、消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以简单地描述为: 当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队列的时候。 消息队列主要解决了应用耦合、异步处理、流量削锋等问题。 当前使用较多的消息队列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaM...

ghostxbh‘s blog 322

【系统架构设计师】二十三、通信系统架构设计理论与实践①

通信网络主要形式:局域网、广域网、移动通信网。 局域网网络架构有 4 种类型:单核心架构、双核心架构、环型架构、层次型架构。 广域网属于多级网络,通常由骨干网、分布网、接入网组成。在网络规模较小时,可仅由骨干网和接入网组成。通常,在大型网络构建中,通过广域网将分布在各地域的局域网互连起来,形成一个大的网络。 移动通信网为移动互联网提供了强有力的支持,尤其是5G 网络为个人用户、垂直行业等 提供了多样化的服务。

帅次的博客 3762

消息队列的介绍及配置

一、消息队列详解 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以简单地描述为:当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队列的时候 主要解决:应用耦合、异步消息、流量削锋等问题。实现高性能、高可用、可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件 目前在生产环境,使用较多的消息队列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ等。 1、 消息队列的两种模型

MKC__jiaoq的博客 5609

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

消息队列的介绍

消息队列:一般我们会简称它为MQ(Message Queue)。消息队列中间件,很多初学者认为,MQ通过消息的发送和接受来实现程序的异步和解耦,mq主要用于异步操作,这个不是mq的真正目的,只不过是mq的应用,mq真正的目的是为了通讯。他屏蔽了复杂的通讯协议,像常用的dubbo,http协议都是同步的。这两种协议很难实现双端通讯,A调用B,B也可以主动调用A,而且不支持长连接。

doinmaker的博客 953

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

消息队列使用的四种场景介绍

一、简介 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题 实现高性能,高可用,可伸缩和最终一致性架构 使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ 二、消息队列应用场景 以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景 2.1异步处理 场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种 1.串行的方式;2.并行方式 (1)串行方式:将

样young的博客 7002

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

消息队列属性及常见消息队列介绍

什么是消息队列? 消息队列是在消息的传输过程中保存消息的容器,用于接收消息并以文件的方式存储,一个队列的消息可以同时被多个消息消费者消费。分布式消息服务DMS则是分布式的队列系统,消息队列中的消息分布存储,且每条消息存储多个副本,以实现高可用性,如下图所示。 一般来说,消息队列具有如下属性: 消息顺序 分区有序的队列通过分布式处理,支持更高的并发,但由于队列的分布式特性,DMS无法保证...

华为云官方博客 2653

消息队列_消息队列RabbitMQ-消息队列简要介绍

消息队列RabbitMQ-消息队列简要介绍一、什么是消息队列(MQ)消息队列(Message Queue,MQ)是一种进程间通信或同一进程的不同线程间的通信方式。消息队列提供了异步的通信协议,每一个队列中的纪录包含详细说明的资料,包含发生的时间,输入设备的种类,以及特定的输入参数,也就是说:消息的发送者和接收者不需要同时与消息队列交互。消息会保存在队列中,直到接收者取回它。MQ是消费-生产者模型的...

weixin_32145807的博客 127

kafka介绍及消息队列

何为消息队列呢?消息: 本质上就是数据 , 而且这个数据存在一种流动状态, 从某一端传递到另一端队列: 本质上就是容器, 可以存储数据, 只不过这个容器具备 FIFO(先进先出) 特性消息队列: 指的就是 将消息数据放置到队列, 通过队列实现数据传输的特性, 从队列的一端写入, 从另一端输出, 保持FIFO特性​ kafka是一款消息队列的中间件的产品, 来源于领英公司, 后期将其贡献给了apache 目前是apache旗下的顶级来源项目, 采用语言是scala。

weixin_48986387的博客 615
上一篇: Java中List对象中clear()方法和List=null方法来清空List的异同(由一道算法题发现)
下一篇: ElasticSearch(分布式搜索引擎)介绍
Tate_Brown
博客等级 码龄9年 39粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值