消息队列 Kafka 初识

★介绍

Kafka是消息队列的一种。一个多分区、多副本并且基于zookeeper协调的分布是消息系统。目前Kafka已经被定位一个分布式流式处理平台,以高吞吐量、可持久化、可水平扩展、支持流处理等多种特性而被广泛使用。

Kafka是一个分布式的发布-订阅消息系统,能够支撑海量的数据传输。再离线和试试的消息处理业务系统中,Kafka都有广泛的应用空间。

Kafka将消息持久化到磁盘中,并对消息进行备份以保证数据安全。

Kafka在保证具有较高数据处理速度的同时,也保证了数据处理的低延迟和零丢失!

 

 

 ★特性

  • 高吞吐、低延迟:Kafka每秒可以处理几十万条数据,它的延迟最低只有几毫秒,每个主题可以分多个分区,消费者组对分区进行消费。
  • 可扩展性:Kafka集群支持热扩展
  • 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份以防止数据丢失。
  • 高容错:允许集群中半数以下的节点出现异常。
  • 高并发:支持数千客户端同时读写。

★应用场景

  • 日志收集:可以用Kafka手机各种服务的日志,通过Kafka以统一的接口服务方式开放给各种消费者,例如:Hadoop、HBase、Solr等等。
  • 消费系统:生产者和消费者解耦合、缓存数据等。
  • 用户行为跟踪:Kafka以流的方式计量用户的各种行为,例如浏览网页、搜索和点击等,用于订阅者消费这些信息来实现实时的监控或者同步到hadoop或数据参考做离线数据分析和数据挖掘。
  • 集群监控:Kafka记录集群中的各个信息,对各种操作进行集中反馈,比如报警和消息推送。
  • 流式处理:比如Spark Streaming和Flink。

★技术优势

  • 可伸缩性:Kafka的两个重要特性早就了它的可伸缩性

    1.Kafka集群在运行期间可以动态的扩展和伸缩(即可以动态的添加和删除代理),而不需要停机。

    2.可以扩展一个Kafka toplc来设置更多的分区,以提高并行度和数据量。

  • 容错性和可靠性:Kafka集群模式使用Zookeeper进行协调,且有分区和副本机制,因此可以在某些节点失效时从副本节点恢复并继续运行。
  • 吞吐量:能够快速高效地存储和检索数据。

★消息队列的两种方式

  • 1.点对点模式(一对一):客户端实时监听消息队列,消费者主动拉取数据,消息收到后消息清除。
  • 2.发布/订阅模式(一对多):数据生产后,推送给所有订阅者。

★为什么需要消息队列?

  • 解耦
  • 冗余
  • 扩展性
  • 灵活性和峰值处理能力
  • 可恢复性
  • 顺序保证
  • 缓冲

 

posted @ 2021-01-25 12:55  创客未来  阅读(94)  评论(0编辑  收藏  举报