【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

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的初步认识就写到这里。

举报

相关文章推荐

分布式消息系统Kafka初步

l 我想分析一下用户行为(pageviews),以便我能设计出更好的广告位 l 我想对用户的搜索关键词进行统计,分析出当前的流行趋势。这个很有意思,在经济学上有个长裙理论,就是说,如果长裙的销量高了,说明经济不景气了,因为姑娘们没钱买各种丝袜了。 l 有些数据,我觉得存数据库浪费,直接存硬盘又怕到时候操作效率低。 这个时候,我们就可以用到分布式消息系统了。虽然上面的描述更偏向于一个日志系统,但确实kafka在实际应用中被大量的用于日志系统。 首先我们要明白什么是消息系统,在kafka官网上对kafka的定义叫:A distributed publish-subsc

分布式消息系统Kafka初步

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

Kafka深度解析

本人原创文章,首发自本人个人博客站点,www.jasongj.com。 转载须在文章头部以超

我们为何需要搭建Apache Kafka分布式系统

活动数据 网站用户行为相关数据,例如PV、UV等。 运营数据 监控系统性能指标(cpu利用率、负载,内存使用率,磁盘利用率,IO性能) 以上这些数据的特点: 数据不可变 海量数据 需要实时处理...

分布式系统设计原则

持续的监控和报警,特别是系统最关键的资源(cpu,内存,网络,线程池中可用线程数等) 无论你的测试环境做的多好,它都不是生产环境,学会定位生产问题很重要 系统应该能够快速回滚,快速迭代。

分布式消息系统Kafka初步<转>

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

Kafka深度解析

背景介绍 <a style="color: #336699;
  • zh_ka
  • zh_ka
  • 2015-07-22 20:20
  • 79

各消息队列对比,Kafka深度解析

背景介绍 Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,并保证即使对TB级以上数据也能保证常...

分布式消息系统Kafka初步

终于可以写kafka的文章了,<span

发布&订阅的消息系统 Kafka的深度解析

发布&订阅的消息系统 Kafka的深度解析 2015-01-27 10:25 Jason Guo Jason Guo的博客 字号:T | T 一个典型的kafka集群中...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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