• (二)kafka


    内容:

    1. kafka的核心概念

    Topic:主题

    Partition:分区

      分区具体在服务器上面表现为其实就是一个目录

    一个主题下面,有多个分区,这些分区会存储到不同的kafka的服务器上面

    或者我们可以这样说:其实就是在不同的主机上面建了不同目录

    Producer:生产者

    Consumer:消费者

    Replica:就是kafka的副本,kafka的partition为了保证数据安全,所以每个分区partition可以 设置多个副本

        但是这些副本之间是有角色之分的,其中有一个是leader partition(replica之一),其余都是follower。

        我们的生产者生产数据的时候,是把数据发送到leader parition(leader replica)里面

        然后follower partition(follower replica)去leader partition那自己去同步数据。

        我们消费者消费数据的时候,也是从leader partition这去消费数据。

    Consumer Group:消费者组,我们在消费数据的时候,会在代码里面指定一个group.id

      conf.setProperty(“group.id”,“testa”)

      group.id代表是一个消费组的名字。

    如果多个消费者,多个消费者并行的消费,性能是很好

    consumer grooup:testD

      consumer1

      consumer2

      consumer3

    他们三个消费者要同时去消费TopicB(3个分区)

    注意:一个分区,不会让同一个消费组里面的多个消费者消费的。

        一个消费者是可以消费多个分区的数据的

    Controller:

      在大数据里面,这些分布式的文件系统,95%都是主从式的结构,有个别的是对等式的架构(es)

    我们的kafka也是主从的脚骨,主节点叫controller,其余的就是从节点

    /controller/

    如何从broker节点,选举一个作为controller?

    所有的服务器(broker节点)都往Zookeeper上注册

    /brokers/ids/0,1,2(以各个broker编号命名)

    谁先注册上,创建一个目录

    /controller/->0 则0就是主节点(controller),则其他的为从节点

    创建一个TopicA主题,3个分区,指定每个分区有3个副本(副本指定2个是比较好的)设计一个分布式的系统,
    集群里面有服务器宕机,这是一个常态化的事 (kafka0.8之前,没有副本机制) 生产者发送数据到TopicA
    -0(Leader) 消费者消费数据到TopicA-0(Leader) *****************************Kafka集群**************************************** -----------------------------------------------------------------------------------| Broker0 TopicA-0(leader) TopicA-1 TopicA-2 -----------------------------------------------------------------------------------| Broker1 TopicA-1(leader) TopicA-0(follower) 去 TopicA-0(leader)同步数据 TopicA-2 -----------------------------------------------------------------------------------| Broker2 TopicA-2(leader) TopicA-0(follower) TopicA-1 -----------------------------------------------------------------------------------|

    2. kafka和Zookeeper之间是如何配合工作

    3. 性能好在什么地方

    kafka:一个支持,高并发,高性能,高可用,可伸缩的消息系统

    3.1 kafka的设计,数据其实存储在磁盘上面的

      顺序写:kafka仅仅是追加数据到文件末尾,磁盘顺序写,性能极高

      随机写:随机在文件的某个位置修改数据

    3.2 零拷贝

    3.3 日志分段存储(log默认是一个G)

      前面三个保证的是高性能

    3.4 kafka的网络设计(这个跟调优有关)

      kafka为什么支持高并发,其实很大的一个原因是跟网络这有关系

    ①客户端发送消费者/生产者

    ②Accepter (把接受的请求封装成socketchannel,轮询发送到Processor)

    ③kafka默认3个Processor(调优,增大Processor数量)

    Processor

      socketchannel socketchannel socketchannel

    Processor

      socketchannel socketchannel socketchannel

    Processor

      socketchannel socketchannel socketchannel

     

    ④多个Processor将sockechannel发送到队列,组成Request队列

    Request Request Request

    ⑤线程池(解析Request请求,写磁盘或者读磁盘) 调优(增大线程数)

    默认8个线程

    线程

    线程

    线程

    线程

    线程

    线程

    线程

    线程

    处理是否完成,响应队列,默认3个队列

    线程:response(响应)给Processor

    线程:response

    线程:response

    写:顺序写

    读:零拷贝

    4. 搭建一个kafka集群

    5. 如何去评估一个集群的资源

      2,8法则

  • 相关阅读:
    A1039 Course List for Student (25 分)
    A1101 Quick Sort (25 分)
    日常笔记6C++标准模板库(STL)用法介绍实例
    A1093 Count PAT's (25 分)
    A1029 Median (25 分)
    A1089 Insert or Merge (25 分)
    A1044 Shopping in Mars (25 分)
    js 验证
    根据string获取对应类型的对应属性
    HTML 只能输入数字
  • 原文地址:https://www.cnblogs.com/hanchaoyue/p/13296439.html
Copyright © 2020-2023  润新知