Kafka持久化存储方案的取舍咨询?

一个方案一般都是有取舍的,Kafka持久化存储方案报告中主要说明了优势,能否也简单说明下风险或劣势分析。比如消息丢失、容错方面。

参与7

2同行回答

罗文江罗文江课题专家组云计算架构师某银行
出现消息丢失的现象,是KAFKA参数配置失当的问题。譬如:(1) Producer 参数:如果想保证数据绝对不丢失, Producer 需要开启重试逻辑,并且设置 ACKS=all ,如果需要增大吞吐量,可以考虑设置较大的 batch.size (默认为 16K )。 (2)Partition参数:分区副本数建议为 2 或 3 ,从可靠性考虑,非常...显示全部

出现消息丢失的现象,是KAFKA参数配置失当的问题。譬如:(1) Producer 参数:如果想保证数据绝对不丢失, Producer 需要开启重试逻辑,并且设置 ACKS=all ,如果需要增大吞吐量,可以考虑设置较大的 batch.size (默认为 16K )。 (2)Partition参数:分区副本数建议为 2 或 3 ,从可靠性考虑,非常关键业务建议设置为 3 。 (3) Replicas 参数: Kafka 应用对于可靠性要求较高的场景常采用 3 副本; 3 副本相较于单副本,牺牲了大量的性能。在对业务可用性可以接受的情况下,可考虑使用单副本,并利用 K8S 平台 + 共享 NAS 存储的方式保证可靠性。

容错方面需要加强规划和运维管理。譬如: (1)容器化部署 Kafka 时,建议部署多个小规模集群,每个集群 Broker 数量通常不超过 20 个。 (2)单个 Topic 分区数建议控制在 10 个以内。 (3)单个 Consumer Group 的 Consumer 的个数最好与 Topic 的分区数成一定比例,这样能够最大化的提升 Consumer 的资源利用率。 (3) Kafka 应用对于可靠性要求较高的场景常采用 3 副本 。(4) − 当业务压力超过当前配置性能极限时,此时时延会成倍增加,对业务造成较大的影响。因此当 Kafka 性能即将到达瓶颈时,需要尽快提升集群的配置,如 Broker 数量、 Broker 配置等。

收起
银行 · 2023-05-09
浏览614
数据可靠性是专业存储相对于本地盘的核心优势。专业存储在盘级、控制器级、系统级通过软件和硬件的设计和优化实现多层面做数据可靠性保证,其中就包括您提到的防数据丢失、容错等能力。但相对本地盘,由于IO路径变长,在时延上会略高于本地盘;因此需要通过TCP协议卸载、NVMe ov...显示全部

数据可靠性是专业存储相对于本地盘的核心优势。专业存储在盘级、控制器级、系统级通过软件和硬件的设计和优化实现多层面做数据可靠性保证,其中就包括您提到的防数据丢失、容错等能力。
但相对本地盘,由于IO路径变长,在时延上会略高于本地盘;因此需要通过TCP协议卸载、NVMe over RDMA、NFS over RDMA等方式降低前端交互过程中的开销,提升性能。

收起
硬件生产 · 2023-05-12
浏览581

ChatGPT 回答

Kafka持久化存储方案的确有很多优势,比如高吞吐量、低延迟、可扩展性等。但是,也存在一些风险和劣势需要注意:

  1. 消息丢失:Kafka持久化存储方案在写入数据时,会将数据先写入内存中,然后再异步写入磁盘。如果在写入内存后,但在写入磁盘前,Kafka集群发生故障,那么这部分数据就会丢失。为了避免这种情况,可以通过配置Kafka的参数,将数据写入磁盘的频率调高,但这会增加写入延迟。
  2. 容错方面:Kafka采用的是分布式架构,可以通过副本机制实现容错。但是,如果副本数量不够,或者副本所在的机器发生故障,就会导致数据丢失。因此,在配置Kafka集群时,需要考虑副本数量和副本所在机器的分布情况。
  3. 存储成本:Kafka持久化存储方案需要使用磁盘来存储数据,因此需要考虑存储成本。如果数据量很大,需要使用大量的磁盘空间,这会增加存储成本。
  4. 运维成本:Kafka持久化存储方案需要进行运维,包括监控、维护、升级等。如果没有专业的运维团队,这会增加运维成本。

综上所述,Kafka持久化存储方案虽然有很多优势,但也存在一些风险和劣势需要注意。在选择Kafka持久化存储方案时,需要根据实际情况进行权衡和取舍。

提问者

snow_huige
项目经理浙商银行
擅长领域: 存储消息中间件kafka

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2023-05-08
  • 关注会员:3 人
  • 问题浏览:1271
  • 最近回答:2023-05-12
  • X社区推广