zoukankan      html  css  js  c++  java
  • Kafka概述

    将生产者和消费者解耦

    使用消息队列的好处

    • 解耦:允许你独立的扩展或修改两边的处理过程,只要确保他们遵守同样的接口约束
    • 可恢复性:系统一部分组件失效时,不会影响到整个系统,降低了进程间的耦合度
    • 缓冲:有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息处理速度不一致的情况
    • 异步通信

    Kafka定义

    Kafka是一款基于发布与订阅的消息系统。文件系统或数据库提交日志用来提供所有事务的持久记录,通过重放这些日志可以重建系统的状态。具备数据故障保护和性能伸缩能力。

    Kafka基础架构

    1. Producer,消息生产者,向kafka broker发送信息的客户端
    2. Consumer,信息消费者,向kafka broker订阅信息的客户端
    3. Consumer Group,由多个消费者组成。每个消费者负责不同的分区
    4. Broker,一台kafka服务器就是一个broker,一个集群由多个broker组成,一个broker可以容纳多个topic
    5. Topic,生产者和消费者面向的都是一个主题
    6. Partition,一个主题有多个分区,一个分区是一个有序的队列
    7. Replica,副本,确保节点发生故障时,分区数据不丢失,一个主题的每个分区有多个副本
    8. leader,分区多个副本的主,生产者发送数据的对象,已经消费者订阅信息的对象
    9. follower,多个副本的从,实时从leader同步数据,leader发生故障时,folloer替代

    消息和批次

    Kafka的数据单元被称为消息,可以把消息看作数据库里的一条记录。消息由字节数组组成。每个消息有一个元数据,键,也是字节数组。

    批次就是一组消息,这些消息属于同一个主题和分区。消息分批次传输可以减少网络开销。

    主题和分区

    消息通过主题分类,主题好比数据库的表,主题可以被分为好几个分区,一个分区就是一个提交日志,消息以追加的方式写入分区,根据先进先出顺序读取。

    一个主题的数据看作一个流,流是一组生产者移动到消费者的数据

    生产者和消费者

    生产者在默认情况下,吧消息均衡地分布到主题的所有分区上,不关心被写到哪个分区。通过消息键和分区器实现分布到具体分区。

    消费者读取信息,订阅一个或多个主题。通过检查消息的偏移量来区分已经读取过的消息。偏移量是另一种元数据,它是一个不断递增的整数值。一个分区只能被一个消费者使用。

    broker和集群

    一个独立的服务器broker,接收来自生产者的信息,为信息设置偏移量,并提交信息到磁盘保护。为消费者提供服务,对读取分区做出相应,返回信息。

    每个集群都有一个broker充当集群控制器的角色。控制器负责管理工作,把分区分配给broker和监控broker。一个分区从属于一个broker,一个分区可以分配给多个broker,也就是消息冗余。

    kafka安装信息

    Kafka需要安装Java和Zookeeper,Kafka使用Zookeeper保存元数据,消费者通过Zookeeper读取元数据分区偏移量,然后在broker读取数据。

    • 安装Java
    • 安装Zookeeper
    • 安装Kafka Broker

    配置信息

    • broker.id:每个broker都需要一个标识符,在整个集群中时唯一的。
    • port:端口默认9092
    • zookeeper.connect:指定保存broker元数据的Zookeeper地址
    • log.dirs:kafka把所有消息都保存在磁盘上,存放目录通过log.dirs指定,同一个分区的日志片段保存在同一个路径下
  • 相关阅读:
    JVM -- Full GC触发条件总结以及解决策略
    java实现-图的相关操作
    Integer的intValue()方法
    Java transient关键字
    Redis 单线程模型介绍
    String类的intern()方法 -- 重用String对象,节省内存消耗
    数据库阿里连接池 druid配置详解
    redis 实现发布/订阅模式
    Redis实现队列
    redis 实现分布式锁
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/12513688.html
Copyright © 2011-2022 走看看