分布式消息队列研究及实践

一、Kafka的背景介绍
 1、kafka的三个应用业务场景
   1)它能够实现发布订阅的流式数据处理.从这方面来看,它类似于流式队列或者企业消息系统.
   2)它能够以容错的形式存储消息流.
   3)它能够按照先后顺序处理流式消息.
2、它最大的优势:
  1)它能够在系统和程序之间建立实时的流式处理管道;
  2)它能够实时的转换和处理流式数据.
3、为了认识Kafaka,首先我们需要了解一些基本的概念:
   1)Kafka以集群的方式存储于一台或者几台服务器上
   2)Kafka以topic的形式存储流式记录集
   3)每个记录集包括键、值和时间戳。
4、Kafka的核心接口包括:
   1)生产者API:负责发布流式记录到多个主题集。
   2)消费者API:负责应用程序订阅一个或者几个主题集。
   3)流式处理API:负责消费一个输入流和产生一个输出流。
   4)链接API:负责链接主题集到应用程序或数据集。
二、Kafa的基本数据模型
   1、主题集和日志集
        主题是一个发布数据集的类型或者原料,它通常有多个订阅者。每个Topic有多个订阅者,一个或者多个消费者去订阅。对于每个主题,Kafka维持一个如下的主题:
每个区域中的日志都是按照顺序进行添加,分区中的记录被赋予一个顺序ID。Kafka集群存储所有的发布记录(只要当前记录在维护期内,无论是否被消费)。例如,维护周期设置为2天。主题发布后两天将会被清楚,无论是否被消费。Kafka的数据大小不会影响其性能,因此长期存放不是一个问题。

事实上,在消费者日志中的元数据存储主题的偏离或者位置。这个偏移量被消费者掌控,因此 消费者可以按照任意顺序进行 。一般来讲,消费者按照时间的线性顺序读取记录。利用这一点,kafka可以实现处理以前的数据、最近的数据或者从现在之前的历史数据。
消费者可以实现最轻量化的影响,即消费者的添加或者删除不会影响其他消费者或Kafka集群。
以区域形式的划分日志有以下几个意图:首先,可以实现集群的缩放。例如,一个在多个区域上的topic可以实现集群的存储和处理。
另外,可以实现并发的单元。
2、分布式
分布式的日志存储于分布式服务器上,每个服务器能够实现数据的分布式和查询链接的分布式。每个区域按照配置文件存储区多个服务器上实现数据的容错机制。
每个区域的存储服务器中包含一个“leader”和多个“follower”。根据这种机制实现数据的同步存储和回复。
3、生产者
每个生产者发布数据到不同的主题。生产者负责将消息发送到不同的分区。他通过 round-robin  算法进行负载均衡。
4、消费者
消费者通过组进行区分,消费者可以消费订阅的主题。如果消费者群组订阅相同的主题,则可以通过负载均衡算法进行获取消息。
具体的消费架构图如下:
5、承诺
1)生产者发送的消息追加到消息日志之后;
2)消费者消费消息按照日志的记录顺序进行消费;
3)复制N次的主题,可以实现N-1次的容错。
6、消息处理
消息处理模式分为两种:队列和发布订阅。队列模式可以实现并发消息处理。发布订阅模式以通知的形式进行处理。根据不同的应用场景,选择不同的形式。













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值