本文作者:ptiyny

java语言队列 java队列怎么用

ptiyny 21分钟前 2
java语言队列 java队列怎么用摘要: 大家好,今天小编关注到一个比较有意思的话题,就是关于java语言队列的问题,于是小编就整理了2个相关介绍java语言队列的解答,让我们一起看看吧。云计算分布式消息队列有哪些?Kaf...

大家好,今天小注到一个比较有意思的话题,就是关于java队列的问题,于是小编就整了2个相关介绍JAVA语言队列的解答,让我们一起看看吧。

java语言队列 java队列怎么用
(图片来源网络,侵删)

云计算分布式消息队列有哪些?

有以下几种:

ActiveMQ:每个人一开始都使用ActiveMQ,但是现在确实每个人都没有使用太多。 尚未通过大规模吞吐量方案验证,社区也不是很活跃。 单台机器的吞吐量为10,000级,并且吞吐量低于RocketMQ和Kafka。 这是一个数量级,响应为ms级,有较低数据丢失的可能性。

RabbitMQ:单机吞吐率是万级,吞吐率比RocketMQ和Kafka低一个数量级,但是它适合中小企业,因为它具有友好的监视和维护界面,社区相对活跃,几乎每个月都会发布几个版本,近年来,一些国内的互联网公司更多地使用了rabbitmq,但问题也很明显。  RabbitMQ的吞吐量确实较低。 这是因为他做的实现机制比较繁重,而且该语言国内会的不多。

RocketMQ:单机吞吐量为100,000级。  RocketMQ还是一种可以支持高吞吐量的MQ。 主题可以达到数百或数千个级别,并且吞吐量将略有下降。 这是RocketMQ的主要优势。 在同一台机器上,它可以支持大量topic,可用性非常高,源代码是JAVA。

java语言队列 java队列怎么用
(图片来源网络,侵删)

Kafka:单机吞吐量为100,000级。 这是Kafka的最大优势,即高吞吐量。 通常与大数据系统配合行实时数据算,日志收集等场景。 当topic从数十个变为数百个时,吞吐量将大大下降

Kafka,Mq和Redis作为消息队列使用时的差异有哪些?

补充一下使用场景:

Redis 消息队列:高并发,轻量级,低延迟,吞吐量不大,对持久化要求不高的场景

Kafka消息队列:高吞吐量,实时流式处理,持久化,高可用在至100k+/sec,多一次语义

java语言队列 java队列怎么用
(图片来源网络,侵删)

Mq:轻量级消息,高可用在20k+/sec,快速响应,更好的事务控制,更复杂的路由支持,和更多开发语言的兼容支持。

<strong>KAFKA

本人所在的公司使用kafa作为ETL数据通道,通过kafka配套的connect和schemaRegisty来方便快速实现异构数据源的相互转换和存储,通过connect插件生产和消费数据,通过schemaRegisty转换异构数据(可以在几乎所有你知道的数据源之间相互转换),并且数据可以重复被消费(可以通过配置指定数据存储时长)。kafka的开发团队围绕着kafka开发了一整套自体系的生态圈(confluent platform)。

优点:

  1. 可扩展。Kafka集群可以透明的扩展,增加新的服务器进集群。
  2. 高性能。Kafka性能远超过传统的ActiveMQ、RabbitMQ等,Kafka支持Batch操作。
  3. 容错性。Kafka每个Partition数据会***到几台服务器,当某个Broker失效时,Zookeeper将通知生产者和消费者从而使用其他的Broker。

缺点:

  1. 重复消息。Kafka保证每条消息至少送达一次,虽然几率很小,但一条消息可能被送达多次。
  2. 消息乱序。Kafka某一个固定的Partition内部的消息是保证有序的,如果一个Topic有多个Partition,partition之间的消息送达不保证有序。
  3. 复杂性。Kafka需要Zookeeper的支持,Topic一般需要人工创建,部署和维护比一般MQ成本更高。

MQ

消息队列中间件还有很多种,列举几个:

RocketMq,是阿里在充分reviewkafka代码后,开发的metaQ。在不断更新,修补以后,阿里把metaQ3.0更名为rocket,并且rocket是java写的易于维护。

RabbitMQ,支持对消息的可靠的传递,支持事务,不支持批量的操作;基于存储的可靠性的要求存储可以采用内存或者硬盘。

REDIS

Redis 的有序***用来做队列还是不错的,用来实现做简单的任务队列,性能不错,也有持久化(rdb/aof) 但是发布、消费等的确认需要自己实现,所以redis得使用还是建议把它当内存数据库来吧。

kafka是个日志处理缓冲组件,主要在大数据信息处理中使用。和传统的消息队列相比简化了队列结构和功能,以文件流形式处理存储(持久化)消息(主要是日志)。

日志信息通常数据量巨大,处理组件一般会处理不过来,所以有了缓冲层kafka。kafka支持巨大的日志吞吐量。为了防止数据丢失,其消息被消费后不会直接丢弃,要多存储一段时间,等超过设置的时间阈值才会丢弃。这是mq和redis所不具备的。

主要特点如下:

巨型存储量: 支持TB甚至PB级别数据。

高吞吐,高IO:一般配置的服务器就可实现单机每秒100K条以上的消息传输。

消息分区,分布式消费:能保证消息顺序传输。 支持离线数据处理(hadoop集群)和实时数据处理。

横向扩展:支持在线水平扩展,以支持更大数据处理能力。

redis是一个高性能的、原子操作的内存键值对nosql。支持高速访问,可用做消息队列的存储,但是不具备消息队列的任何功能和逻辑,要做为消息队列来使用的话,队列功能和逻辑要通过上层应用来自己实现。

到此,以上就是小编对于java语言队列的问题就介绍到这了,希望介绍关于java语言队列的2点解答对大家有用。

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享