1.kafka从哪些方面保障了构建可靠的应用程序?
- kafka保证分区消息的顺序
- 只有当消息被写入分区的所有同步副本时(但不一定写入磁盘),才回被认为是已提交的。
- 只要还有一个副本是活跃的,那么已经提交的消息就不会丢失
- 消费者只能读取已经提交的消息。
2.除了基本的保障机制,还有其他的保障吗?
broker配置
- 复制系数
- 不完全的首领选举
- 最少同步副本
生产者
- 发送确认
- 重试参数
消费者
- group.id,
- auto.offset.set指定没有偏移量可提交时或者偏移量在broker不存在时消费者会做一些什么,
- enable.auto.commit 寄基于任务自动提交偏移量,
- auto.commit.interval.ms 配置自动提交偏移量的频度
3.如何验证系统的可靠性
- 配置验证。kafka提供了两个重要的工具用于验证配置:org.apache.kafka.tools包里的VerifiableProducer和VerifiableConsumer这两个类
- 应用程序验证,自己测试程序的逻辑。可以基于如下的故障条件做一些测试:1.客户端从服务器断开连接,首领选举,依次重启broker,依次重启消费者,依次重启生产者
- 生成环境监控可靠性,对生产者,最重要的两个可靠性指标是消息的error_rate和retry-rate