深入浅出Kafka(一)之Kafka概述
1.Kafka的概述
Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景;
比如基于hadoop的批处理系统、低延迟的实时系统、Storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目
1.1Kafka的统定义
Kafka传 统定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(MessageQueue),主要应用于大数据实时处理领域。
![](https://img2022.cnblogs.com/blog/2000608/202204/2000608-20220424102808468-632037684.png)
![](https://img2022.cnblogs.com/blog/2000608/202204/2000608-20220424102912547-2096172932.png)
日常:Flume采集速度,小于100m/s。 11.11 活动:Flume采集速度,大于200m/s
1.2消息队列
目 前企 业中比 较常 见的 消息 队列产 品主 要有 Kafka、ActiveMQ 、RabbitMQ 、RocketMQ 等。
1.2.1 传统消息队列的应用场景
1.消息队列的应用场景——缓冲/消峰 :有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况
2.消息队列的应用场景——解耦:允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束
3.消息队列的应用场景——异步通信:允许用户把一个消息放入队列,但并不立即处理它,然后在需要的时候再去处理它们
1.3 Kafka的应用场景
1.日志收集:一个公司可以用Kafka收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。
2.消息系统:解耦和生产者和消费者、缓存消息等。
3.用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
4.运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。
1.4消息队列的两种模式
1)点对点模式:消费者主动拉取数据,消息收到后清除消息
2)发布/订阅模式
1. 可以有多个topic主题(浏览、点赞、收藏、评论等)
2.消费者消费数据之后,不删除数据;每个消费者相互独立,都可以消费到数据
1.5 Kafka基础架构
1.5.1Kafka的基础架构
1.为方便扩展,并提高吞吐量,一个topic分为多个partition;配合分区的设计,提出消费者组的概念,组内每个消费者并行消费
2.为提高可用性,为每个partition增加若干副本,类似NameNode HA;ZK中记录谁是leader,Kafka2.8.0以后也可以配置不采用ZK
1.5.2Kafka的基本概念
kafka是一个分布式的,分区的消息(官方称之为commit log)服务。它提供一个消息系统应该具备的功能,但是确有着独
![](https://img2022.cnblogs.com/blog/2000608/202204/2000608-20220424202814880-1213345659.png)
posted on 2022-04-24 11:21 跟着锋哥学Java 阅读(1114) 评论(1) 编辑 收藏 举报