
# 容灾和多活策略
DCS缓存实例都存储着大量关键数据，不论是作为数据库前端缓存，还是作为数据存储引擎，数据的可靠性与服务的连续可用性是DCS服务设计上为客户考虑的核心因素，下图展示了DCS在数据和服务方面的容灾架构设计演进。
图1DCS容灾架构演进   
![](https://support.huaweicloud.com/productdesc-dcs/zh-cn_image_0238263712.png)
根据对数据与服务的不同可靠性要求，您可以选择将缓存实例部署在单可用区内（单机房），或者跨可用区（同城灾备）。
#### 实例单Region单可用区高可用
同一机房即单可用区。单可用区灾备策略主要包括进程/服务高可用，数据持久化到磁盘，以及实例节点间热备三种不同层次。
在单可用区内，单机实例通过进程守护的方式确保服务高可用，当DCS监测到缓存实例进程故障，马上拉起一个新的进程继续提供服务。
图2单可用区内单机实例高可用   
![](https://support.huaweicloud.com/productdesc-dcs/zh-cn_image_0167291093.png)
除单机实例外，主备、读写分离和集群实例默认都支持数据持久化，数据不仅会持久化到实例主节点磁盘，还会增量同步到备节点，同时备节点也会持久化一份数据。实现了节点热备和持久化文件多个备份。
主备、读写分离实例的主备节点进程，以及集群实例每个分片内主备节点进程的数据同步和持久化方式如下图所示。
图3单可用区内主备节点间高可用   
![](https://support.huaweicloud.com/productdesc-dcs/zh-cn_image_0167292118.png)
#### 实例单Region跨可用区灾备
除单机实例外，其他类型的缓存实例都支持将主备节点部署在不同的可用区内（即不同的物理机房）。不同可用区的电力、网络相互隔离，当主节点所在的机房因为电力或者网络出现故障，备节点将接管服务，客户端与备节点正常建立连接以及读写数据。
图4主备实例跨可用区示意图   
![](https://support.huaweicloud.com/productdesc-dcs/zh-cn_image_0000001967828872.png "点击放大")
图5读写分离实例跨可用区示意图   
![](https://support.huaweicloud.com/productdesc-dcs/zh-cn_image_0000001967825128.png)
图6Proxy集群实例跨可用区示意图   
![](https://support.huaweicloud.com/productdesc-dcs/zh-cn_image_0000002004506893.png)
图7Cluster集群实例跨可用区示意图   
![](https://support.huaweicloud.com/productdesc-dcs/zh-cn_image_0000002004507329.png)
对于同城容灾，只需要在创建主备/集群/读写分离实例时，选择与主可用区不同的备可用区。如下图所示：
图8购买实例选择不同可用区部署   
![](https://support.huaweicloud.com/productdesc-dcs/zh-cn_image_0000001988352793.png "点击放大")
![](https://support.huaweicloud.com/productdesc-dcs/public_sys-resources/note_3.0-zh-cn.png)
您的应用也可以部署为跨可用区的HA模式，这样不仅能保证数据高可靠，还能在机房遇到断电或网络故障时，服务继续可用。
#### 实例跨Region多活
当前Redis没有成熟的双活（**Active-Active，注意不同于灾备或者主备高可用**）方案，华为云DCS不支持跨Region多活功能。
这是由于私有定制Redis通信协议（RESP协议）的标准无法统一等原因无法实现跨云/Region的Redis侧双活，因此，如果需要双活，可以通过**应用侧进行双写改造**实现。
图9应用侧双写实现多活   
![](https://support.huaweicloud.com/productdesc-dcs/zh-cn_image_0244081774.png "点击放大")
说明：
1. 双写方案**无法保证缓存的一致性** （网络出现问题），需要**应用侧** 可以**容忍对应的缓存不一致场景**（通过设置过期时间等达到最终一致性），应用如果依赖缓存强一致性，则不合适该方案，跨Region缓存强一致性当前业界没有方案可以实现。
2. 建议操作跨Region的二级缓存采用异步的方式。
 
