大家可以想到基本就是副本备份、双活、多活这种架构
-
在系统中通过复制协议将数据同步到多个存储节点,并确
保多个副本之间的数据⼀致性,当某个存储节点出故障
时,系统能够⾃动将服务切换到其他的副本 -
在分布式存储中⾼性能与⾼可⽤是⽭盾的,⽐如要设计⼀
个分布式存储系统,CAP定理也可以推断出来- 对性能的考虑,记录数据时先写⼀个份数据到某个机器
上并⽴即返回,然后异步发起多个数据备份过程。这种
设计的性能最好,但存在“容错性”的⻛险,加⼊返回
后,还没来得及同步给其它节点就宕机了,则数据就丢
失(异步复制,也存在是写主节点到内存还是落到磁
盘)
- 对性能的考虑,记录数据时先写⼀个份数据到某个机器
-
如果同时写多个副本,每个副本写成功以后再返回,则
⼜导致性能下降,这个过程取决于最慢的那台机器的性
能 (同步多写,是同步每个副本节点还是⼀个副本先)-
那应该如何选择呢?
-
根据业务⽽定,如果要求性能更⾼,偶尔出现⽂件
丢失或访问出错则可以异步复制 -
要求⽂件系统⼀定要⾼可⽤,则⽤同步多写的策略,牺
牲⼀定的性能也要保证⾼可⽤数据⼀致性
-
-
基于上述的,⼤家还知道有⼀个很类似的消息队列就是
⽀持这种操作- RocketMQ消息⾼可⽤⾥⾯的,同步双写、异步刷盘,即同时写到两个节点上的内存才返回,然后异步持久化到磁盘⾥⾯