Kafka

概念  

Kafka是用Java编写的高吞吐、可容错、可扩展的分布式消息系统。

相比传统消息中间件(如ActiveMQ、RabbitMQ),具有高吞吐、内置分区、消息副本、容错、可扩展的特性,很适合大规模消息处理的应用场景。

高吞吐量的原因

Kafka的优势是高吞吐率,其高吞吐率得益于它的:顺序读写、批量发送、消息压缩、零拷贝。

为了增加存储能力,Kafka将所有消息都写入了低速大容量的硬盘,按理说这将导致性能损失,但尽管如此,Kafka仍然保持了超高的吞吐率。

因为,Kafka直接将数据写入到日志文件中,以追加的形式写入,线性的顺序访问磁盘,很多时候比随机的内存访问还要快的多。

应用场景

kafka的主要应用场景是日志收集和消息系统。

  • 日志收集

利用日志排查问题时,通常是通过linux命令登录到后台查询日志文件,如果web应用是集群方式部署的,那么要快速定位问题就比较繁琐。现在流行的做法是,建立统一日志平台,就是将日志集中收集到kafka,然后再倒入Elasticsearch、HDFS、Storm等数据消费者,用于实时搜索、离线统计、数据分析、数据备份等。

  • 限流消峰

某个热点事件或者某个时间点的营销活动(如双11秒杀),导致流量暴增,业务访问路径中的各个环节都将面对瞬时流量陡增。为了让系统在大流量场景下仍然可用,可以在系统业务环节中加入消息队列作为缓冲,缓解短时间内的高流量对系统的冲击压力。

MQ特性对比

  • Kafka

  1. Java写的,可靠性、稳定性、功能性表现都不错,可满足绝大多数应用场景的需要,与周边生态系统的兼容性最佳。
  2. 批量和异步的设计思想使其获得了不错的性能表现,与 RocketMQ 没有量级上的差异,大约每秒钟可处理几十万条消息。
  • RocketMQ

  1. Java写的,性能、稳定性和可靠性都值得信赖,每秒钟大概能处理几十万条消息。
  2. 缺点:是与周边生态系统的集成和兼容程度要略逊一筹,不够流行;
  • RabbitMQ

  1. erlang写的,容易部署和使用,路由规则灵活;
  2. 支持编程语言众多,大概是所有消息队列中支持语言最多的;
  3. 缺点:性能较差(每秒钟可处理几万到十几万条消息)
  • ZeroMQ

  1. c语言写的,适合于高吞吐量/低延迟的场景;易用灵活。
  2. 缺点:很多东西需要自己开发实现;不支持消息持久化。
  • Redis

  1. c语言写的,其List数据结构可简单迅速地实现消息队列。
  2. 缺点:与专业的消息队列系统相比,Redis的发布订阅略显粗糙。

安装部署

一、kafka安装部署_咸鱼最牛逼的博客-CSDN博客_kafka部署

  • 创建、查看、删除topic

创建:./bin/kafka-topics.sh --create --zookeeper 192.168.1.100:2181 --config max.message.bytes=12800000 --config flush.messages=1 --replication-factor 1 --partitions 1 --topic test

查看:./bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.100:9092 --from-beginning --topic helloworld

删除:修改 kafka/conf/server.properties,增加 delete.topic.enable=true,然后重启 kafka后执行  ./bin/kafka-topics.sh --delete --zookeeper 192.168.1.100:2181 --topic test

查看topic列表:./bin/kafka-topics.sh --zookeeper 192.168.1.100:2181 --list

  • 生产和消费测试

生产:./kafka-console-producer.sh --broker-list 192.168.1.100:9092 --topic helloworld

消费:./kafka-console-consumer.sh --bootstrap-server 192.168.1.100:9092 --topic helloworld --from-beginning

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值