[ 消息队列原理与实战 | 青训营笔记]

62 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天,今天学习了消息队列原理与实战,是偏向实践的内容了,还是没咋听懂,还是得在实践中慢慢学习。

消息队列原理与实战:

 

消息队列的发展历程:

 

TIB: 1985年,服务于金融机构和新闻机构

IBM MQ/WebSphere:诞生于1993年,商业消息队列平台市场主要玩家

MSMQ:微软发布于1997年

JMS:诞生于2001年,本质上是一套JavaAPI

AMQP/RabbitMQ:规范发布于2004年,同年RabbitMQ面市

Kafka:2010年由Linked开源

RockerMQ:2011年阿里中间件团队自研

Pulsar:2012年诞生于Yahoo内部

 

业界消息队列对比:

Kafka:分布式的、分区的、多副本的日志提交服务,在高吞吐场景下发挥较为出色

RocketMQ:低延迟、强一致、高性能、高可靠、万亿级容量和灵活的可扩展性,在一些实时场景中运用较广

Pulsar:是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体、采用存算分离的架构设计

BMQ:和Pulsar架构类似,存算分离,初期定位是承接高吞吐的离线业务场景,逐步替换掉对应的Kafka集群

 

消息队列kafka使用场景:搜索服务,直播服务,订单服务,支付服务,日志信息,metrices数据,搜索、点赞、评论、收藏等用户行为。

Kafka号称大数据的杀手锏,谈到大数据领域内的消息传输,则绕不开Kafka,这款为大数据而生的消息中间件,以其百万级TPS的吞吐量名声大噪,迅速成为大数据领域的宠儿,在数据采集、传输、存储的过程中发挥着举足轻重的作用。

Apache Kafka它最初由LinkedIn公司基于独特的设计实现为一个分布式的提交日志系统( a distributed commit log),之后成为Apache项目的一部分。

目前已经被LinkedIn,Uber, Twitter, Netflix等大公司所采纳。

 

优点

 

性能卓越,单机写入TPS约在百万条/秒,最大的优点,就是吞吐量高。

时效性:ms级

可用性:非常高,kafka是分布式的,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用

消费者采用Pull方式获取消息, 消息有序, 通过控制能够保证所有消息被消费且仅被消费一次;

有优秀的第三方Kafka Web管理界面Kafka-Manager;

在日志领域比较成熟,被多家公司和多个开源项目使用;

功能支持:功能较为简单,主要支持简单的MQ功能,在大数据领域的实时计算以及日志采集被大规模使用

缺点:

 

Kafka单机超过64个队列/分区,Load会发生明显的飙高现象,队列越多,load越高,发送消息响应时间变长

使用短轮询方式,实时性取决于轮询间隔时间;

消费失败不支持重试;

支持消息顺序,但是一台代理宕机后,就会产生消息乱序;

社区更新较慢;