1.简介
kafka的数据是存储在日志文件中的,kafka副本集(副本因子)是指将这些日志文件复制多份从而起到数据备份的目的。kafka中的topic只是个逻辑概念,实际存储数据的是partition,所以真正被复制的也是partition。
2.特点
(1).kafka可以通过配置设置默认的副本集数量
(2).kafka可以为每个topic设置副本集,所以副本集是相对于topic的
(3).一个topic的副本集可以分布在多个broker中,当一个broker挂掉了,其他的broker上还有数据,这就提高了数据的可靠性
3.设置
public class AdminSample {
private static final String topicName = "steven";
private static final int partitionNumber = 1;
private static final Short replicationFactor = 1;
/**
* 创建AdminClient
*/
public static AdminClient adminClient() {
Properties properties = new Properties();
properties.setProperty(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9092");
AdminClient adminClient = AdminClient.create(properties);
return adminClient;
}
/**
* 创建topic
*/
public static void main(String[] args) throws ExecutionException, InterruptedException {
AdminClient adminClient = AdminSample.adminClient();
NewTopic newTopic = new NewTopic(topicName, partitionNumber, replicationFactor);
CreateTopicsResult topicsResult = adminClient.createTopics(Arrays.asList(newTopic));
//创建是一个异步过程,但是如果主线程退出了,创建还没执行完就会失败,所以下面的语句是防止主线程退出
topicsResult.all().get();
System.out.println("CreateTopicsResult:" + topicsResult.values());
}
}