{"doc_title": "Amazon MSK常见问题", "doc_category": "", "qa_list": [{"Question": "什么是AWS MSK?", "Answer": "AWS MSK是亚马逊云科技推出的Apache Kafka的云托管版本,用于数据集成、流处理、数据管道等各种应用。"}, {"Question": "AWS MSK相较于传统的自建式Kafka集群有哪些优势?", "Answer": "AWS MSK相较于传统的自建式Kafka集群有以下几点优势:\n- 快速部署\n- 降低运维复杂度\n- 弹性扩展\n- 与其他AWS服务紧密集成\n- 推出Serverless版"}, {"Question": "AWS MSK如何帮助客户快速配置并部署高度可用的Apache Kafka集群?", "Answer": "AWS MSK提供了原生多可用区(AZ)的Apache Kafka集群部署模式,可以帮助客户快速配置并部署高度可用的Apache Kafka集群,且AZ之间的流量传输是免费的。"}, {"Question": "AWS MSK如何降低运维复杂度?", "Answer": "AWS MSK会自动检测底层服务器,并在出现故障时进行替换。也会编排服务器的补丁与升级。同时还确保数据得到长久存储和保护,方便快捷地查看监控指标并设置警报。"}, {"Question": "AWS MSK如何实现弹性扩展?", "Answer": "AWS MSK充分利用云服务的资源弹性能力,可以根据负载变化自动进行扩展。"}, {"Question": "AWS MSK与哪些AWS服务紧密集成?", "Answer": "AWS MSK与AWS Identity and Access Management (IAM)和AWS Certificate Manager集成以实现安全性;与AWS Glue Schema Registry集成用于schema管理;与Amazon Kinesis Data Analytics和AWS Lambda集成用于流式传输处理,等等。"}, {"Question": "AWS MSK的Serverless版有哪些特点?", "Answer": "AWS MSK的Serverless版无需管理和扩展集群容量,按照流量付费,对于有明显的波峰波谷业,开发测试等场景,是很好的选择。"}, {"Question": "AWS MSK提供了哪些优势?", "Answer": "AWS MSK提供了基础设施稳定运行的保障,例如底层的EC2,EBS卷等,分别有其对应的SLA保障。"}, {"Question": "如何构建可靠的消息队列平台?", "Answer": "在构建Apache Kafka的消息队列平台时,需要根据不同场景,调整Kafka相关参数,达到可靠性要求。同时,还需要调整客户端的参数。"}, {"Question": "在AWS MSK中,什么是“可靠”的含义?", "Answer": "在AWS MSK中,“可靠”的含义是:在出现不同的系统故障时,Kafka消息队列系统仍能正常对外提供服务,不影响业务的正常运行且尽可能减少数据丢失的风险。"}, {"Question": "AWS MSK提供了哪些基本保障?", "Answer": "Kafka提供了基本保障,包括消息的持久性、顺序性和可靠性传递。"}, {"Question": "如何配置AWS MSK集群以达到不同的保障性需求?", "Answer": "可以根据不同的保障性需求,调整Kafka集群、生产者客户端,以及消费者客户端的相关参数配置。"}, {"Question": "在AWS MSK中,如何快速进行相关参数配置?", "Answer": "可以参考文档第5部分的“配置总结”进行相关参数配置。"}, {"Question": "什么是Kafka提供的4个基本保障?", "Answer": "Kafka提供的4个基本保障包括同一partition内消息的顺序在写入后不再变化、一条消息在写入到其partition对应的所有in-sync replicas后才视为committed、被committed消息只要有至少一个replica存活则消息不会丢失、Consumer只能读取到committed的消息。"}, {"Question": "Kafka中的Replication是什么功能?", "Answer": "在Kafka中,每个partition可以有多个replica,其中1个为leader,其他的为in-sync replica。Leader replica负责写入,以及消费。其他的in-sync replica只需要与leader保持同步状态并实时复制消息。如果leader不可用,则其他replica会选举为新的leader。这是Kafka提供可靠性保障的一个重要功能。"}, {"Question": "在构建可靠的Kafka消息队列平台时,需要考虑哪些相关要点?", "Answer": "在构建可靠的Kafka消息队列平台时,需要考虑与Replication相关的要点,包括配置Broker、设置default.replication.factor、unclean.leader.election.enable以及min.insync.replicas等。"}, {"Question": "什么是default.replication.factor?", "Answer": "default.replication.factor是Broker层面的一个配置,用于设置每个partition的默认副本数。默认值为1。"}, {"Question": "什么是unclean.leader.election.enable?", "Answer": "unclean.leader.election.enable是Broker层面的一个配置,用于设置是否允许unclean leader选举。如果设置为true,则在没有足够in-sync replicas的情况下也可以选举出leader。默认值为false。"}, {"Question": "什么是min.insync.replicas?", "Answer": "min.insync.replicas是Broker层面的一个配置,用于设置producer写入消息时需要保证的最小in-sync replicas数。如果写入的消息的in-sync replicas数小于该值,则写入操作会失败。默认值为1。"}, {"Question": "什么是Replication Factor在AWS MSK中的作用?", "Answer": "Replication Factor在AWS MSK中控制的是消息备份数,用于提高系统的可用性和可靠性。"}, {"Question": "在AWS MSK中,如何设置Replication Factor?", "Answer": "在AWS MSK中,Replication Factor可以在topic级别和broker级别进行配置,其中default.replication.factor默认为3 for 3-AZ clusters, 2 for 2-AZ clusters。"}, {"Question": "Replication Factor设置为多少时,可以允许N-1个broker丢失时仍能正常提供topic的读写服务?", "Answer": "当Replication Factor设置为N时,可以允许N-1个broker丢失时仍能正常提供topic的读写服务。"}, {"Question": "在AWS MSK中,如何提高数据冗余的安全性?", "Answer": "在AWS MSK中,可以将broker分布在不同的机架甚至不同的数据中心,以提高数据冗余的安全性。"}, {"Question": "在AWS MSK中,如何调整Replication Factor参数?", "Answer": "在AWS MSK中,常规调整Replication Factor参数的准则为:以3为起始,如果由于Replication导致性能成为了瓶颈,则建议使用一个性能更好的broker,而不是降低RF的值,永远不要在生产环境中设置RF为1。"}, {"Question": "什么是“clean”选举和“unclean”选举?", "Answer": "“clean”选举是指在所有in-sync replicas中选举一个新的leader replica,不会丢失committed数据。而“unclean”选举则允许out-of-sync replica选举成为leader,可能会丢失部分数据。"}, {"Question": "为什么需要允许out-of-sync replica选举成为leader?", "Answer": "如果不允许out-of-sync replica选举成为leader,当所有in-sync replica都出现故障时,partition将无法继续提供服务,除非等到leader恢复正常。而允许out-of-sync replica选举成为leader,则此时partition可以继续提供服务,但是会有部分数据丢失。"}, {"Question": "控制“unclean”选举的参数是什么?", "Answer": "控制此行为的参数为unclean.leader.election.enable,在broker级别(实际一般在集群级别配置)适用。在MSK中默认为true,也即是说允许“unclean”选举。"}, {"Question": "在使用“unclean”选举时需要考虑什么?", "Answer": "在使用时,需要根据实际场景,在可用性与数据持久性之间进行权衡。允许“unclean”选举可以提高可用性,但可能会丢失部分数据。"}, {"Question": "什么是AWS MSK的最少In-Sync Replicas?", "Answer": "最少In-Sync Replicas是AWS MSK中的一个参数,它指定了在进行写操作时需要确认的最少副本数。如果确认的副本数低于这个值,写操作将会失败。"}, {"Question": "如何设置AWS MSK的最少In-Sync Replicas?", "Answer": "可以通过AWS MSK的控制台或API来设置最少In-Sync Replicas参数。在控制台中,可以在集群配置页面中找到该参数并进行修改。"}, {"Question": "最少In-Sync Replicas对AWS MSK的性能有什么影响?", "Answer": "最少In-Sync Replicas参数的值越高,写操作需要确认的副本数就越多,因此写操作的延迟也会增加。但是,这也可以提高数据的可靠性和一致性。"}, {"Question": "AWS MSK的最少In-Sync Replicas和复制因子有什么区别?", "Answer": "最少In-Sync Replicas和复制因子都是AWS MSK中用于保证数据可靠性的参数。但是,最少In-Sync Replicas指定了在进行写操作时需要确认的最少副本数,而复制因子指定了要创建的副本数。"}, {"Question": "AWS MSK的最少In-Sync Replicas和数据一致性有什么关系?", "Answer": "最少In-Sync Replicas参数可以保证数据的一致性。当进行写操作时,只有在确认了足够多的副本之后,才会返回成功的响应。这可以确保所有副本都具有相同的数据。"}, {"Question": "什么是造成数据丢失的主要原因?", "Answer": "造成数据丢失的主要原因是:leader与replica之间存在同步落后,且允许选举out-of-sync replica为leader。"}, {"Question": "在Kafka提供的保障中,消息在什么情况下才视为committed?", "Answer": "在Kafka提供的保障中,消息在写入leader及其所有in-sync replicas后,才视为committed。但是这里“所有in-sync replicas”仅包含in-sync replicas,并不考虑out-of-sync replica。"}, {"Question": "如何保证消息至少写入到多个in-sync replicas后才视为committed?", "Answer": "如果需要保证消息至少写入到多个in-sync replicas后才视为committed,则可以通过参数 min.insync.replicas 进行控制(可以在broker级别或是topic级别设置)。"}, {"Question": "如果MSK使用3 broker,default.replication.factor=3,min.insync.replicas=2,此topic的partition能否被生产者正常写入?", "Answer": "至少有2个replica为in-sync状态时(包括leader),此topic的partition才能被生产者正常写入。"}, {"Question": "如果1个replica发生故障,topic能否正常进行读写?", "Answer": "如果1个replica发生故障(例如AZ宕机,broker故障等等),topic仍能正常进行读写。"}, {"Question": "如果有2个replica同时发生故障,会发生什么?", "Answer": "如果有2个replica同时发生故障时,broker会拒绝所有写入(Producer会收到NOT_ENOUGH_REPLICAS异常),topic转为只读。"}]}