zoukankan      html  css  js  c++  java
  • 大数据架构之:Kafka

         Kafka 是一个高吞吐、分布式、基于发布订阅的消息系统,利用Kafka技术可在廉价PC Server上搭建起大规模消息系统。Kafka具有消息持久化、高吞吐、分布式、多客户端支持、实时等特性,适用于离线和在线的消息消费

    Kakfa特点:

    • 解耦:消息系统在处理过程中插入一个隐含、基于数据的接口层。
    • 冗余:消息队列持久化,防止数据丢失。
    • 扩展性:消息队列解耦处理过程,容易扩展处理过程。
    • 可恢复性:处理过程失效,恢复后可继续处理。
    • 顺序保证:消息队列保证顺序。Kafka保证一个Partition内消息有序。
    • 异步通信:消息队列允许消息加入队列,等需要时再处理。

    Kafka 的术语

    Kafka 架构

    典型Kafka架构

         一个典型的Kafka集群中包含若干Producer(可以是web前端应用产生的消息,也可以是类似通过上网Flume收集上网日志产生的Events等),若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干Consumer Group,以及一个Zookeeper集群。Kafka通过Zookeeper管理集群配置及服务协同。Producer使用push模式将消息发布到broker,Consumer通过监听使用pull模式从broker订阅并消费消息。
          多个broker协同合作,producer和consumer部署在各个业务逻辑中被频繁的调用,三者通过zookeeper管理协调请求和转发。这样一个高性能的分布式消息发布和订阅系统就完成了。图上有个细节需要注意,producer刡broker的过程是push,也就是有数据就推送给broker,而consumer给broker的过程是pull,是通过consumer主动去拉数据的,而不是broker把数据主动发送给consumer端的。

    producer、consumer、broker以及zookeeper返四者的关系

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

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

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

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

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

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

    1. 启动zookeeper的server

    2. 启动kafka的server

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

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

  • 相关阅读:
    Java并发基础10:原子性操作类的使用
    Java并发基础09. 多个线程间共享数据问题
    Java并发基础08. 造成HashMap非线程安全的原因
    Java并发基础07. ThreadLocal类以及应用技巧
    Java并发基础06. 线程范围内共享数据
    Java并发基础05. 传统线程同步通信技术
    Java并发基础04. 线程技术之死锁问题
    我是如何从通信转到Java软件开发工程师的?
    IOS 判断耳机插入/拔出
    海量数据处理
  • 原文地址:https://www.cnblogs.com/tychyg/p/4950846.html
Copyright © 2011-2022 走看看