
220
|
第
13
章
会响应客户端。
WAIT
的代价是更长的延迟。此外,它仅保证数据驻留在内存中的副本内。
在下一个
AOF
写入快照之前,若副本崩溃,则仍可能会导致更新丢失。
13.1.3.5
可用性
Redis Cluster
为单个数据库分片实现了一个久经考验的主副本架构。但是,写入可用性
不可避免地受到领导者故障的影响,在将副本提升为领导者之前,给定分片的写入将不
可用。
网络故障可以将
Redis
集群拆分为多数分区和少数分区。这会影响可用性和数据安全性。
只要分区中至少有一个可用副本,客户端写入请求就可以继续写到两个分区中的所有领导
节点。如果有一个领导者与它的副本分离,落到少数分区,而副本落在多数分区,那么客
户端在少数分区的写入仍然可用。经过一个超时周期后,少数分区的领导者将停止接受写
入,因为它无法向副本发送更新。同时,落到多数分区中的副本将进行领导者选举,副本
将被提升为主节点。当分区恢复时,在少数分区中的领导者的写入修改将丢失。
13.2 MongoDB
自
2009
年首次发布以来,
MongoDB
一直走在
NoSQL
数据库的前沿。它在本质上协调
数据库模型与对象模型,直接解决了众所周知的对象关系阻抗不匹配问题。我们可以将
生成的文档数据库视为
JSON
数据库。你可以将业务对象转换为
JSON
,并将数据直接
作为文档存储、查询和操作。不需要复杂的对象关系映射器,直观且更简单地展示业务
逻辑。
1
MongoDB
最初流行起来是因为它易于编程和使用。早期版本中的底层存储引擎,称为
MMAPv1
注
2
,还有一些不足之处