Apache Kafka

Apache Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache Kafka项目的一部分。Apache Kafka是一种快速、可扩展的、设计内在就是分布式的,分区和可复制的提交日志服务。

Apache Kafka与传统消息系统相比有以下不同

  • 它被设计为一个分布式系统,易于向外扩展
  • 它同时为发布和订阅提供高吞吐量
  • 它支持多订阅者,当失败时能自动平衡消费者
  • 它将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序

Apache Kafka架构

Apache Kafka架构

  • 生产者(Producer)是能够发布消息到话题的任何对象。
  • 已发布的消息保存在一组服务器中,它们被称为代理(Broker)或Kafka集群
  • 消费者可以订阅一个或多个话题,并从Broker拉数据,从而消费这些已发布的消息。
  • 话题(Topic)是特定类型的消息流。消息是字节的有效负载(Payload),话题是消息的分类名或种子(Feed)名。

Apache Kafka架构
- Broker:消息中间件处理结点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群。
- Topic:一类消息,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能够同时负责多个topic的分发。
- Partition:topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。
- Segment:partition物理上由多个segment组成。
- offset:每个partition都由一系列有序的、不可变的消息组成,这些消息被连续的追加到partition中。partition中的每个消息都有一个连续的序列号叫做offset,用于partition唯一标识一条消息.


kafka的负载均衡与HA

  • producer根据用户指定算法,将消息发送到指定的Partition
  • 存在多个Partition,每个Partition有自己的replica(副本),每个replica分布在不同的broker节点上
  • 多个Partition时需要通过zookeeper的选取机制选取出leader Partition,leader Partition负责读写,并由zookeeper负责fail over
  • 通过zookeeper管理broker与consumer的动态加入与离开

kafka特点

  • 支持高Throughput(高吞吐量)的应用,源自多分区
  • 无需停机即可扩展机器
  • 持久化:通过将数据持久化到硬盘以及replication防止数据丢失
  • 支持online(实时消费)和offline(离线消费,比如按天消费)的场景。
  • 依赖Zookeeer集群,状态信息都写在Zookeeer集群里
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值