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

    为什么会有消息系统

    消息系统起到了一个什么作用呢?

      缓存的作用

      解耦合

      异步处理的效果

      流量控制

    1. kafka的核心概念

    Topic(主题):类似于关系型数据库里面的一张表(只是逻辑上的概念)

    Partition(分区):跟数据里面的分区含义差不多,是为了提高性能的。

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

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

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

    每个分区内部有

      .index文件:

      .log文件:存储message

      .snapshot文件:

      .timeindex文件

    Producer(生产者):谁往消息系统里面发送数据,谁就是生产者

    Consumer(消费者):谁从kafka里面去读取数据,谁就是消费者

    Message(数据):在kafka里面我们管平时处理数据叫消息

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

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

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

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

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

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

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

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

    创建一个TopicA主题,3个分区,指定每个分区有3个副本(副本指定2个是比较好的)设计一个分布式的系统,集群里面有服务器宕机,这是一个常态化的事

    (kafka0.8之前,没有副本机制)

    生产者发送数据到TopicA-0(Leader)
    消费者消费数据到TopicA-0(Leader)

    *****************************Kafka集群****************************************

    -----------------------------------------------------------------------------------|
    Broker
    TopicA-0(leader)
    TopicA-1
    TopicA-2
    
    



    -----------------------------------------------------------------------------------|
    Broker
    TopicA-1

    TopicA-0(follower) 去 TopicA-0(leader)同步数据
    TopicA-2
     



    -----------------------------------------------------------------------------------|
    Broker
    TopicA-2
    TopicA-0(follower)
    TopicA-1



    -----------------------------------------------------------------------------------|

     

  • 相关阅读:
    项目一:CRM(客户关系管理系统)--1
    数据库统一API--SQLAlchemy
    消息队列--1--Redis
    消息队列--2--RabbitMQ
    python之路--web--2--Django-11-信号
    python之路--web--2--Django-10--序列化
    python之路--web--2--Django-8-分页
    python之路--web--2--Django-6-Session
    python之路--web--2--Django-5-Cookie
    python之路--web--2--Django-7-跨站请求伪造
  • 原文地址:https://www.cnblogs.com/hanchaoyue/p/13289719.html
Copyright © 2011-2022 走看看