您现在的位置是:主页 > news > 做网站怎么云存储/网站seo基础
做网站怎么云存储/网站seo基础
admin2025/5/18 11:17:41【news】
简介做网站怎么云存储,网站seo基础,贵阳餐饮设计公司官网,中国最著名网站建设公司其实,没有一个中间件能够做到百分之百的完全可靠,可靠性更多的还是基于几个9的衡量指标,比如4个9、5 个9。软件系统的可靠性只能够无限去接近100%,但不可能达到100%。所以kafka如何是实现最大可能的可靠性呢? 1.Broke…
其实,没有一个中间件能够做到百分之百的完全可靠,可靠性更多的还是基于几个9的衡量指标,比如4个9、5 个9。软件系统的可靠性只能够无限去接近100%,但不可能达到100%。所以kafka如何是实现最大可能的可靠性呢?
1.Broker的可靠性
要求:消息不能丢失
实现:分区副本, 可以创建更多的分区来提升可靠性
-
副本多少:一般3个副本就能满足对大部分场景的可靠性要求,若分区数过多也会带来性能上的开销
分区副本多少的问题实际就是集群中Broker数量多少的问题,因为一个Broker上只能存在一个分区的一个副本
-
分区多少:一般根据Consumer数量决定,Partitions : Consumers = 1 : 1是最好的
2.Producer的可靠性
要求:消息要确保发送到broker(并且完成了多副本的持久化),尽量避免消息重复发送
实现:acks,它有几个可选项
- 0:表示producer不需要等待broker的消息确认。这个选项时延最小但同时风险最大(因为 当server宕机时,数据将会丢失)
- 1 ,生产者把消息发送到leader副本,leader副本在成功写入到本地日志之后就告诉生产者消息提交成功,但是如果isr集合中的follower副本还没来得及同步leader副本的消息, leader挂了,就会造成消息丢失
- -1 ,消息不仅仅写入到leader副本,并且被ISR集合中所有副本同步完成之后才告诉生产者已 经提交成功,这个时候即使leader副本挂了也不会造成数据丢失
3.Consumer的可靠性
要求:消费者一定能够消费到消息,且尽量避免消息重复消费
实现:根据情况选择消息提交(确认)方式
-
自动提交:
enable.auto.commit
默认为true,也就是自动提交offset,自动提交是批量执行的问题:有一个时间窗口,可能会带来消息丢失或重复消费问题
-
手动提交:对于高可靠性要求的程序,要使用手动提交
问题:因为是手动控制,所以可能发生重复消费
对于高可靠要求的应用来说,宁愿重复消费也不应该因为消费异常而导致消息丢失