1、Kafka 介绍
Apache Kafka最初由LinkedIn公司基于独特的设计实现为一个分布式的提交日志系统,之后成为Apache项目的一部分。
Kafka号称大数据的杀手锏,谈到大数据领域内的消息传输,则绕不开Kafka,这款为大数据而生的消息中间件,以其百万级TPS的吞吐量名声大噪,迅速成为大数据领域的宠儿,在数据采集、传输、存储的过程中发挥着举足轻重的作用。Kafka目前已经被LinkedIn,Uber, Twitter, Netflix等大公司所采纳。
1.1、Kafka 优点
1、性能卓越,单机写入TPS约在百万条/秒,最大的优点,就是吞吐量高。
2、时效性:ms级
3、可用性:非常高,kafka是分布式的,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用
4、消费者采用Pull方式获取消息, 消息有序, 通过控制能够保证所有消息被消费且仅被消费一次;
5、有优秀的第三方Kafka Web管理界面Kafka-Manager;
6、在日志领域比较成熟,被多家公司和多个开源项目使用;
7、功能支持:功能较为简单,主要支持简单的MQ功能,在大数据领域的实时计算以及日志采集被大规模使用
1.2、Kafka 缺点
1、Kafka单机超过64个队列/分区,Load会发生明显的飙高现象,队列越多,load越高,发送消息响应时间变长
2、使用短轮询方式,实时性取决于轮询间隔时间;
3、消费失败不支持重试;
4、支持消息顺序,但是一台代理宕机后,就会产生消息乱序;
5、社区更新较慢;
2、RabbitMQ 介绍
RabbitMQ 2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。
2.1、RabbitMQ 优点
1、由于Erlang语言的特性,MQ性能较好,高并发;
2、吞吐量到万级,MQ功能比较完备
3、健壮、稳定、易用、跨平台、支持多种语言、文档齐全;
4、开源提供的管理界面非常棒,用起来很好用
5、社区活跃度高;
2.2、RabbitMQ 缺点
1、Erlang开发,很难去看懂源码,基本职能依赖于开源社区的快速维护和修复bug,不利于做二次开发和维护。
2、RabbitMQ确实吞吐量会低一些,这是因为他做的实现机制比较重。
3、需要学习比较复杂的接口和协议,学习和维护成本较高。