面试一线互联网大厂?那这道题目你必须得会!( 六 )

所以高可用的架构就必须考虑到了。

一般分布式系统实现高可用架构,都是采用多副本冗余机制。

也就是说一份数据在多台机器上都搞一个副本,这样任何一台机器宕机了,数据肯定不会丢失,你还可以继续使用其他机器上的副本数据来支持生产和消费。

同样建议大家,研究一下Kafka的多副本冗余机制,他的每个Partition数据分片都是有多个副本的,任何一台机器宕机,丢失一个数据分片,还有其他机器上的副本分片在,可以支持数据不丢失。

面试一线互联网大厂?那这道题目你必须得会!

支持数据不丢失的ACK机制

最后再考虑一个问题,消息中间件肯定是要支持数据绝对不丢失的吧?

那么你必须要支持生产端和消费端的ACK机制,在这里你必须考虑两块ACK机制,一个是生产端,一旦投递了消息,必须要求他将数据比如写入多个副本之后,才返回一个ACK回调响应。

推荐阅读