设为首页 加入收藏

TOP

消息中间件--Kafka原理介绍
2019-04-23 14:27:57 】 浏览:36
Tags:消息 中间件 --Kafka 原理 介绍

Kafka是消息分布式订阅-发布系统。应用场景:在线应用(消息)和离线应用(数据文件,日志)。

首先让我们回顾下几个基本的消息术语
- kafka 维护的类别称为主题的消息源。
- 我们调用生产者处理发布消息到kafka 主题。
- 我们调用消费者处理订阅的主题,处理发布的主题的消息源。
- kafka 运行在一个或者多个称为broker的服务的集群。

因此,在一个较高的水平,当生产者通过网络发送消息到kafka集群后,相关订阅消息的消费者会处理消息。
如图所示:
这里写图片描述

客户端和服务器之间的通信是通过一个简单的、高性能、语言无关的TCP协议。我们提供一个kafka的java客户端,但也支持各种其他语言客户端的支持。

话题 & 日志 (Topics and Logs)

让我们首先深入kafka的高级抽象提供了主题。
发布的消息是通过一个主题,这个主题是一个类别或订阅名称。

对于每一个话题,kafka集群维护一个分区日志,如下所示:
这里写图片描述

(1)每个分区是一个命令,不变的序列的消息,可不断追加对客户提交日志。

(2)分区中的消息都分配一个连续的id号叫做offset,惟一地标识每个消息内的分区

(3)kafka集群保留所有发布的消息,不管他们是否已经消费了,在一个可配置的一段时间。

例如,如果日志保留设置为两天,然后两天后发布消息可以消费,之后,它将被丢弃,节约空间。

(4)kafka的性能是有效常 数对数据大小,所以保留大量的数据并不是一个问题。

(5)事实上,唯一的元数据在每个消费者的基础上,是保留的位置消费日志中,称为“offset”。

offset 是由消费者控制:正常一个消费者将会推进offset作为线性读取消息,但事实上,这个位置信息由消费者控制的,并能按照任何顺序消息消息的。
例如,一个消费者可以重置到之前的offset来重新处理消息

这种组合的特性意味着kafka消费者非常轻量&方便,不管怎么来消费消息对集群或其他消费者的影响。
例如,你可以使用命令行终端工具去 tail 任何topic的内容,而不改变任何消费者消费的topic。

日志中的分区为多个目的:
首先,它们允许日志规模超出一个大小适合在一台服务器上。每个分区必须适合在服务器主机上,但一个主题可能有多个分区,这样它可以处理任意数量的数据。
其次,他们充当并行化的单元。

分布式(Distribution)

在服务器日志的分区分布kafka集群中的每个服务器处理数据和请求的分区。
(1)每个分区是可复制的,在一个可配置的容错服务器数量。
(2)每个分区有一个服务器充当”leader”,大于0个服务器充当”followers”。
(3)“leader”处理分区所有的读和写请求,然而 “followers”积极的复制”leader”的数据。如果 “leader”失败了,”followers”中某一个follower将会充当新的”leader”角色。每个服务器充当一个”leader”的分区和”follower”的分区,因此集群中的负载均衡很好。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Kafka 集群搭建 for mac 下一篇Spark写数据到kafka

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目