Kafka-分布式系统初步

转载 2016年08月29日 10:49:29

首先我们要明白什么是消息系统,在kafka官网上对kafka的定义叫:A distributed publish-subscribe messaging system。publish-subscribe是发布和订阅的意思,所以更准确的说kafka是一个消息订阅和发布的系统。publish- subscribe这个概念很重要,因为kafka的设计理念就可以从这里说起。

我们将消息的发布(publish)暂时称作producer,将消息的订阅(subscribe)表述为consumer,将中间的存储阵列称作broker,这样我们就可以大致描绘出这样一个场面:

这里写图片描述
生产者(蓝色,蓝领么,总是辛苦点儿)将数据生产出来,丢给broker进行存储,消费者需要消费数据了,就从broker中去拿出数据来,然后完成一系列对数据的处理。

乍一看这也太简单了,不是说了它是分布式么,难道把producer、broker和consumer放在三台不同的机器上就算是分布式了么。我们看kafka官方给出的图:
这里写图片描述
多个broker协同合作,producer和consumer部署在各个业务逻辑中被频繁的调用,三者通过zookeeper管理协调请求和转发。这样一个高性能的分布式消息发布与订阅系统就完成了。图上有个细节需要注意,producer到broker的过程是push,也就是有数据就推送到broker,而consumer到broker的过程是pull,是通过consumer主动去拉数据的,而不是broker把数据主动发送到consumer端的。
至此你应该对kafka是一个什么样的系统有所体会,并能了解他的基本结构,还有就是他能用来做什么。那么接下来,我们再回到producer、consumer、broker以及zookeeper这四者的关系中来。
这里写图片描述

我们看上面的图,我们把broker的数量减少,只有一台。现在假设我们按照上图进行部署:

l Server-1 broker其实就是kafka的server,因为producer和consumer都要去连它。Broker主要还是做存储用。

l Server-2是zookeeper的server端,zookeeper的具体作用你可以去官网查,在这里你可以先想象,它维持了一张表,记录了各个节点的IP、端口等信息(以后还会讲到,它里面还存了kafka的相关信息)。

l Server-3、4、5他们的共同之处就是都配置了zkClient,更明确的说,就是运行前必须配置zookeeper的地址,道理也很简单,这之间的连接都是需要zookeeper来进行分发的。

l Server-1和Server-2的关系,他们可以放在一台机器上,也可以分开放,zookeeper也可以配集群。目的是防止某一台挂了。

简单说下整个系统运行的顺序:

  1. 启动zookeeper的server

  2. 启动kafka的server

  3. Producer如果生产了数据,会先通过zookeeper找到broker,然后将数据存放进broker

  4. Consumer如果要消费数据,会先通过zookeeper找对应的broker,然后消费。

对kafka的初步认识就写到这里。

hive分区(partition)简介

一、背景1、在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作。有时候只需要扫描表中关心的一部分数据,因此建表时引入了partition概念。2、分区表指的是在创建表时指...

利用java简单调用kafka

我之前的一篇文章简单的介绍了kafka,原理,配置以及搭建,这篇文章主要将利用java使用kafka。 简单的几个名词: Producer :消息生产者,向broker发消息的客户端。 Cons...

可伸缩Web架构与分布式系统(初步)

开源软件近年来已变为构建一些大型网站的基础组件。并且伴随着网站的成长,围绕着它们架构的最佳实践和指导准则已经显露。这篇文章旨在涉及一些在设计大型网站时需要考虑的关键问题和一些为达到这些目标所使用的组件...

[分布式系统]-分布式消息系统:Kafka

原文出处: 标点符 欢迎分享原创到伯乐头条Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一个分布式的,可划分的,冗余备份的持...

分布式消息系统Kafka初步

终于可以写kafka的文章了,Mina的相关文章我已经做了索引,在我的博客中置顶了,大家可以方便的找到。从这一篇开始分布式消息系统的入门。 在我们大量使用分布式数据库、分布式计算集群的时候,是否...

分布式消息系统Kafka初步

http://my.oschina.net/ielts0909/blog/92972 终于可以写kafka的文章了,Mina的相关文章我已经做了索引,在我的博客中置顶了,大家可以方便的找到。从这一篇...

分布式消息系统Kafka初步

终于可以写kafka的文章了,Mina的相关文章我已经做了索引,在我的博客中置顶了,大家可以方便的找到。从这一篇开始分布式消息系统的入门。 在我们大量使用分布式数据库、分布式计算集群...

分布式消息系统Kafka初步

Kafka集群配置比较简单,为了更好的让大家理解,在这里要分别介绍下面三种配置 单节点:一个broker的集群单节点:多个broker的集群多节点:多broker集群 一、单节点单br...

分布式消息系统Kafka初步

终于可以写kafka的文章了,Mina的相关文章我已经做了索引,在我的博客中置顶了,大家可以方便的找到。从这一篇开始分布式消息系统的入门。 在我们大量使用分布式数据库、分布式计算集群的时候,是否...

分布式消息系统Kafka初步

转自:http://my.oschina.net/ielts0909/blog/92972 在我们大量使用分布式数据库、分布式计算集群的时候,是否会遇到这样的一些问题: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Kafka-分布式系统初步
举报原因:
原因补充:

(最多只允许输入30个字)