做分布式文件存储,主要是想实现文件存储访问的高性能与高可用,如何保证分布式存储的高性能与高可用?
-
首先想到的是副本机制,集群部署
-
在系统中通过复制协议将数据同步到多个存储节点,并确保多个副本之间的数据一致性,当某个存储节点出故障时,系统能够自动将服务切换到其他的副本
-
在分布式存储中高性能与高可用是矛盾的
,比如要设计一个分布式存储系统,CAP定理也可以推断出来- 对性能的考虑,记录数据时先写一个份数据到某个机器上并立即返回,然后异步发起多个数据备份过程。这种设计的性能最好,但存在“容错性”的风险,假如返回后,还没来得及同步给其它节点就宕机了,则数据就丢失(异步复制,也存在是写主节点到内存还是落到磁盘)
- 如果同时写多个副本,每个副本写成功以后再返回,则又导致性能下降,这个过程取决于最慢的那台机器的性能 (同步多写,是同步每个副本节点还是一个副本先)
-
根据业务而定,如果要求性能更高,偶尔出现文件丢失或访问出错则可以异步复制
- 要求文件系统一定要高可用,则用同步多写的策略,牺牲一定的性能也要保证高可用数据一致性