你好,游客 登录
背景:
阅读新闻

消息系统kafka之二 kafka的HA(高可用)

[日期:2018-10-19] 来源:csdn  作者:gongzhiyao37390814 [字体: ]

在前面的《消息系统kafka之一 系统简介》的为什么选择kafka中已经提到了kafka高可用的特性。

下面是kafka与其他消息系统之间的区别



可以看出,kafka支持持久化消息,消息回追等功能,在HA方面kafka使用的是replication策略
在了解replication机制之前必须看下kafka的系统架构的文件存储机制


如图,kafka中的消息是以topic进行分类的,生产者通过topic向kafka broker发送消息,消费者通过topic读取消息。然而topic在物理层面上又能够以partition进行分组,在上一篇已经提到,一个topic可以分为多个partition,那么topic以及partition是怎么存储的呢?partition还可以细分为segment,一个物理上有多个segment组成,那么这些segment又是什么呢?

为了便于说明问题,假设这里只有一个Kafka集群,且这个集群只有一个Kafka broker,即只有一台物理机。在这个Kafka broker中配置($KAFKA_HOME/config/server.properties中)log.dirs=/tmp/kafka-logs,以此来设置Kafka消息文件存储目录,与此同时创建一个topic:topic_vms_test,partition的数量为4($KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper localhost:2181 --partitions 4 --topic topic_vms_test --replication-factor 4)。那么我们此时可以在/tmp/kafka-logs目录中可以看到生成了4个目录


在Kafka文件存储中,同一个topic下有多个不同的partition,每个partiton为一个目录,partition的名称规则为:topic名称+有序序号,第一 个序号从0开始计,最大的序号为partition数量减1,partition是实际物理上的概念,而topic是逻辑上的概念。