Kafka学习——基本概念

       Apache kafka是一种分布式的消息中间件,什么是消息中间件,它是一种可靠的消息传输机制,可以进行与平台无关的数据交流,并基于数据通信完成消息传递和队列模型,可以在分布环境下扩展进程间的通信

1.流处理平台的三个关键能力

      - 发布和订阅消息(流),在这方面,它类似于一个消息队列或企业消息系统

      - 以容错的方式存储数据

      - 在消息流发生时处理他们

2.两个优势

      - 可靠

      - 可以实现数据和流之间的转换

3.两个特点

      - 以集群的形式运行现在一个或者多个系统上

      - kafa集群存储的消息是以topic为类别记录的

4.四个核心api

      - Producer API:发布消息到一个或者多个topic

      - Consumer API:订阅一个或者多个TOPIC,并处理产生的消息

      - Streams API:充当一个流处理器,从一个或者多个topic消费输入流,并生产一个输出流到1个或多个输出topic,有效地将输入流转换到输出流

      - Connector API:允许构建或运行可重复使用的生产者或消费者,将topic连接到现有的应用程序或数据系统。例如,一个关系数据库的连接器可捕获每一个变化

5.四个基本的术语

      - topic:kafka将消息种子分门别类,每一类的消息称之为一个主题topic

      - producer:生产者,即产生消息的一方

      - consumer:消费者,订阅(接收)生产者产生的消息

      - broker:每一个kafka及集群中的服务器都是一个broker

6.分布式

      - log的分区被分配到集群中的多个服务器上,每个服务器处理他分到的分区

      - 根据配置分区还可以复制到其他服务器作为备份容错

      - 每个分区有一个leader和多个follower,leader处理次分区的所有读写请求,而follower被动的复制数据

      - 如果leader宕机,其他的一个follower会被推荐为一个新的leader

      - 一台服务器可能是一个分区的leader,却是另一个分区的follower,这样可以做到负载均衡,避免业务集中

7.异地数据同步技术

       Kafka MirrorMaker为群集提供geo-replication支持。借助MirrorMaker,消息可以跨多个数据中心或云区域进行复制。 您可以在active/passive场景中用于备份和恢复; 或者在active/passive方案中将数据置于更接近用户的位置,或数据本地化

8.生产者

       发布消息到topic,需要选择发布到那个分区,最简单的方式是从分区列标中轮训选择,也可以一句某种算法选择分区

9.消费者

      - 队列:一组消费者从服务器读取消息,一条消息只有其中的一个消费这来处理

      - 发布-订阅:消息被广播给所有的消费者,接收到消息的消费之都可以处理此消息

      - kafka为这两种模式提供了单一的消费者模型:

        消费者用一个消费者组名标记自己,一个发布在topic上的消息被分发给此消费者组中的一个消费者,假如所有的消费者都在一个组中,那么就变成了queue模型,加入所有的订阅者在不同的组中,就变成了发布-订阅模型       

10.主题,日志和分区

       topic是发布的消息的类别,对于每一个topic,kafka集群维护这一个分区的log

       每个分区都是一个顺序的,不可变的消息队列,并且可以持续的添加

       分区中的消息被分了一个序列号,称之为偏移量(offset),每个分区的偏移量都是唯一的

       kafka集群中保持所有的消息,一直到过期,不论这条消息是否被消费。

       所有的消费者维护的仅仅就是这个偏移量,即消费者在log中的位置,这个偏移量由消费者控制,可以将其重置为一个更老的位置,重新读取消息

       分区存在的目的有两个,分别是:

       1)处理更多的消息,不受单台服务器的限制

       2)分区可以作为并行的处理单元

kafka并行处理带来的问题

       传统的消息队列,是可以保证消息的先后顺序的,kafka作为分布式的系统,服务端很容易保证消息的先后顺序,但是服务端产生的消息是被异步的分发到多个消费者手中的,此时系统并不能保证每一个消费者处理消息之后的顺序和之前是保持一致的,况且还面临服务端消息分区的情况。

       kafka中提出的策略则是分区,因为一个分区中的消息只能被消费者组中的一个消费者处理,这样,当前分区中的消息顺序就得到了保证,如果所有的消息都需要保证顺序,那么我们可以使用单一的分区来解决,此时多分区的优势将不复存在,在数据处理效率上会产生大的影响

11.kafka的保证

       - topic特定分区上消息先后顺序可以保证

       - 如果配置个复制因子(replication factor)N,那么它允许N-1台机器宕机而不会丢失任何已经提交的数据

12.kafka作为存储系统

       消息队列和消息分离的系统,消息其实是被存储在磁盘中,并且复制到其他的集群中以保证高容错性,并允许生产者等待消息应答,直到消息完全写入

       kafka磁盘结构保证无论数据的大小,执行时相同的

13.kafka流处理

       kafka除了读写操作,更加重要的目标是实现实时的流处理

       在kafka中,流处理持续获取数据topic的数据,进行处理加工,然后写入输出topic

 

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值