{T}

异地容灾与多活架构 学习笔记(第 2 部分)

实现示例

javascript
// 基于 BGP 的网络多活
class NetworkMultiActive {
  constructor() {
    this.datacenters = {
      telecom: {
        name: '电信机房',
        ip: '202.96.128.1',
        carrier: 'telecom',
        region: 'cn-north'
      },
      unicom: {
        name: '联通机房',
        ip: '210.22.128.1',
        carrier: 'unicom',
        region: 'cn-north'
      },
      mobile: {
        name: '移动机房',
        ip: '120.204.128.1',
        carrier: 'mobile',
        region: 'cn-north'
      }
    }
  }
  
  // 根据用户运营商选择机房
  routeByCarrier(userCarrier) {
    const dc = this.datacenters[userCarrier]
    
    if (dc && this.isHealthy(dc)) {
      return dc
    }
    
    // 回退到其他机房
    return this.fallback(userCarrier)
  }
  
  // 检查机房健康状态
  isHealthy(dc) {
    // 实际实现:心跳检测、HTTP 探测等
    return true
  }
  
  // 回退策略
  fallback(carrier) {
    const carriers = Object.keys(this.datacenters)
    const otherCarriers = carriers.filter(c => c !== carrier)
    
    for (const c of otherCarriers) {
      if (this.isHealthy(this.datacenters[c])) {
        return this.datacenters[c]
      }
    }
    
    return null
  }
}

// DNS 配置示例
const dnsConfig = {
  domain: 'api.example.com',
  records: [
    { type: 'A', carrier: 'telecom', ip: '202.96.128.1', ttl: 60 },
    { type: 'A', carrier: 'unicom', ip: '210.22.128.1', ttl: 60 },
    { type: 'A', carrier: 'mobile', ip: '120.204.128.1', ttl: 60 },
    { type: 'A', carrier: 'default', ip: '1.2.3.4', ttl: 300 }  // BGP IP
  ]
}

1.2.4 存储多活

定义:逻辑层面的多活,用户无需关心数据实际存储位置

code
存储多活架构:

┌─────────────────────────────────┐
│         应用层                   │
│  (无需关心数据存储位置)         │
└─────────────┬───────────────────┘
              ↓
┌─────────────────────────────────┐
│      存储虚拟化层                │
│  (统一存储接口)                │
└─────────────┬───────────────────┘
              ↓
    ┌─────────┼─────────┐
    │         │         │
┌───┴───┐ ┌──┴────┐ ┌──┴────┐
│存储A   │ │存储B   │ │存储C   │
│(北京)  │ │(上海)  │ │(广州)  │
└───────┘ └───────┘ └───────┘

特点:
- 对用户透明
- 自动数据同步
- 统一管理界面
- 异构存储支持