kafka 简介与应用场景(一)
标签(空格分隔): kafka系列
- 一:kafka 简介
- 二:kafka 的相关组建
- 三:kafka 的架构
- 四:kafka 的应用场景
一: kafka的简介:
1.1 kafka 的简介
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消费。
1.2 消息的类型:
消息模式
特点
1.点对点(point to point, queue)
发送到队列中的消息被一个而且仅仅一个接收者所接收,即使有多个接收者在同一个队列中侦听同一消息;
一般基于Pull或者Polling接收消息;
即支持异步“即发即弃”的消息传送方式,也支持同步请求/应答传送方式(保证每条消息被成功处理);
2.发布/订阅(publish/subscribe,topic)
发布一个主题的消息,可被多个订阅者所接收;
即可基于Push消费数据,也可基于Pull或者Polling消费数据;
消息一般会持久化,可反复消费。
1.3 适用场景
解耦:各个系统之间通过消息系统统一接口交换数据。
冗余:部分消息系统具有消息持久化能力,可规避消息处理前丢失的风险。
扩展:消息系统是统一的数据接口,各系统可独立扩展。
削峰:消息系统可顶住峰值流量,业务系统可根据处理能力从消息系统中获取并处理对应量的请求。
可恢复性:系统中部分组件失效并不会影响整个系统,它恢复后仍然可从消息系统中获取并处理数据。
异步:在不需要立即处理请求的场景下,可以将请求放入消息系统,合适的时候再处理。
1.4 MQ 对比
二:kafka相关组建:
Broker
Kafka集群包含一个或多个服务器,这种服务器被称为broker
kafka 集群是由一个或者多个broker组成
Topic
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)
Partition
Partition是物理上的概念,每个Topic包含一个或多个Partition.
Producer
负责发布消息到Kafka broker
Consumer
消息消费者,向Kafka broker读取消息的客户端。
Consumer Group
每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。
三:kafka 的架构
相关名词:
Broker:
消息中间件处理节点,一个Kafka节点就是一个broker,一个或者多个Broker可以组成一个Kafka集群
Topic:
Kafka根据topic对消息进行归类,发布到Kafka集群的每条消息都需要指定一个topic
Producer:
消息生产者,向Broker发送消息的客户端
Consumer:
消息消费者,从Broker读取消息的客户端
ConsumerGroup:
每个Consumer属于一个特定的Consumer
Group,一条消息可以发送到多个不同的Consumer Group,但是一个Consumer
Group中只能有一个Consumer能够消费该消息
Partition:
物理上的概念,一个topic可以分为多个partition,每个partition内部是有序的
四: kafka 的应用场景
Kafka主要被用于两大类应用:
1. 建立实时流数据管道从而能够可靠地在系统或应用程序之间共享数据。
2. 构建实时流应用程序,能够变换或者对数据进行相应的处理