摘要
Apache Kafka是一个分布式消息发布订阅系统。它最初由LinkedIn公司基于独特的设计实现为一个分布式的提交日志系统( a distributed commit log),之后成为Apache项目的一部分。
成千上万的企业都在使用Kafka,三分之一的世界500强公司也在其中,Kafka也是成长最快的开源项目之一,包括其生态系统也在蓬勃发展。Kafka正在成为管理和处理流式数据的利器。
Kafka系统快速、可扩展并且可持久化。它的分区特性,可复制和可容错都是其不错的特性。大家一起来跟着阿里专家学习Kafka吧。
Kafka的多副本冗余设计
不管是传统的基于关系型数据库设计的系统,还是分布式的如zookeeper
、redis
、Kafka
、HDFS
等等,实现高可用的办法通常是采用冗余设计,通过冗余来解决节点宕机不可用问题。
首先简单了解Kafka的几个概念:
- 物理模型
- 逻辑模型
-
Broker(节点):Kafka服务节点,简单来说一个
Broker
就是一台Kafka服务器,一个物理节点。 -
Topic(主题):在Kafka中消息以主题为单位进行归类,每个主题都有一个
Topic Name
,生产者根据Topic Name将消息发送到特定的Topic,消费者则同样根据Topic Name从对应的Topic进行消费。 -
Partition(分区):
Topic
(主题)是消息归类的一个单位,但每一个主题还能再细分为一个或多个Partition
&#x