zoukankan      html  css  js  c++  java
  • kafka笔记(一)

    1、kafka应用场景

      基于流数据的发布订阅消息系统、实时流数据的高效异步通信、基于流数据的高可用分布式存储!

      不同的系统之间实时流数据管道;

    2、官方一句话概括

      kafka是一个分布式流数据平台:可以被用作消息队列,企业级消息系统,具备很强的容错能力;实时处理的能力;

    3、kafka的使用

      一般都是以集群的形式部署在一台或者多台服务器上;消息记录(数据)根据主题(topic)进行分类;每个记录都有一个key  value  和时间戳;

    4、核心API

      生产者API发布数据(记录)到一个或者多个topic;消费者API可以订阅一个或者多个主题,并处理生产到这些主题的数据;流API,即将数据按照流数据进行处理;连接API,可以创建可复用的生产者和消费;

    5、通信协议

      客户端与服务器的通信使用的是基于TCP的简单,高效的并且与语言无关的TCP协议!

    6、主题和日志

      一个主题(topic)就是一类数据或者记录的名字;主题支持多个订阅者订阅,即一个主题可以被零个,一个或者多个消费者消费,处理;

      一个主题会被分成好多个partition,每一个partition维护着一个log;主题中每一个partition的记录都有一个顺序的ID 记作:offset  偏移量;

      kafka集群记录了所有发布的消息(记录),无论是否被消费(有一种配置保留时长的机制);实际上唯一的元数据保留在消费者那里,元数据仅仅记录了消费者在partition的便宜量,或者消费记录的ID;这样以来,消费就可以由消费者自己控制。消费者可以设置这个偏移量。

      主题被分为patition的意义在于两方面:一个是数据横向扩展行,另一个是消费的并发性能的提升;

      每一个partition的数据在kafka集群中都是有备份的。每一个partition都有一个server作为leader,其他的作为follower;leader负责读写请求,follower负责同步leader的数据; 每一个服务器都扮演一个或多个partition的leader角色,和一些个partition的follower角色,有利于负载均衡。

     7、生产者

      生产者向一个或者多个topic写数据,并且负责每个记录分配到哪一个分区上;

    8、消费者

      消费者的标签是消费者组,在一个同一个消费者组里的消费者是等价的。这样提高消费者的处理能力,和容错性。

      主题的partition会被分配到消费者实例上,并且是动态分配的,当消费者增加活者减少时,都会导致一些partiton重新分配。每个partiton内的记录都是有序的,但是不同partition记录消费可能是无序的。

      要想整体有序,只能一个topic对应一个partion 并且每个消费者组里面只能有一个消费者。

    9、kafka可保证的几点

      单个partition的记录ID与记录接收时间是有序的,ID越大,接收时间越迟。

      一个topic被复制N份,那么N-1个服务器挂掉之后,对数据是不会有影响的

  • 相关阅读:
    ArrayList源码解析
    HashSet的实现原理
    Spark Streaming之四:Spark Streaming 与 Kafka 集成分析
    Spark Streaming之三:DStream解析
    Spark Streaming之二:StreamingContext解析
    curl与wget区别
    MongoDB之二(增删查改)
    Thread之九:stop
    mysql实战优化之九:MySQL查询缓存总结
    PBE加密算法
  • 原文地址:https://www.cnblogs.com/tengpan-cn/p/7095297.html
Copyright © 2011-2022 走看看