在分布式系统中跨机房部署的问题一直都令人头疼,机房之间的网络时延较大且不稳定。跨机房部署的问题主要包含两个方面:数据同步以及服务切换。跨机房部署通常有以下三种方案:

a)   集群整体切换

集群整体切换是最为常见的方案,假设某系统部署在两个机房1和2。两个机房保持独立,每个机房部署单独的总控节点,且每个总控节点各有一个备份节点。两个机房部署相同的副本数,一个为主机房(保存主副本),另外一个为备机房。

机房之间的数据同步方式为强同步或者异步:

-    强同步:备机房的数据和主机房保持一致。当主机房出现故障时,除了手工切换,还可以自动切换,即通过分布式锁服务检测主机房的服务,当主机房出现故障时,自动将备机房切换为主机房。

-    异步:备机房的数据总是落后于主机房。当主机房整体出现故障时,有两种选择:要么将服务切换到备机房,忍受数据丢失的风险;要么停止服务,直到主机房恢复为止。这两种方式的选择往往是手工来选择进行切换的。

b)  单个集群跨机房

将单个集群部署到多个机房,允许不同数据分片的主副本位于不同的机房。整个集群只有一个总控节点,同机房1和机房2的所有工作节点保持通信,并由分布式锁服务检测,当总控节点故障,将机房2的备份节点切换为总控节点。

采用这种方式部署,总控节点在执行数据分布时,需要考虑机房信息,即尽量将同一个数据分片的多个副本分布到不同的机房。

c)   Paxos选主副本

上述两种方案,总控节点需要和工作节点保持租约,当故障发生时,自动将它上面服务的主副本切换到其他工作节点。

采用Paxos协议选主副本,那么每个数据分片的多个副本构成一个Paxos复制组【比如B1,B2,B3,B4】,当B1出现故障时,其他副本尝试切换为主副本,Paxos协议保证只有一个副本会成功,这样,总控节点和工作节点之间不再需要保持租约。

这种方式降低了了对总控节点的依赖,缺点是工程复杂度太高,很难在线下模拟所有异常情况。

欢迎扫描二维码关注微信公众号 深度学习与数学   [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]

分布式存储系统学习笔记(一)—什么是分布式系统(7)—跨机房部署的三种方案相关推荐

  1. 【单片机学习笔记】(6):字符串处理函数、变量的三种情况、用函数实现模块化程序设计、晶振与延时、指针

    / 字符串处理函数 / stract函数   字符串连接函数 例:printf("%s", stract(str1, str2)): strcpy(字符串或字符数组名)和strnc ...

  2. 大规模分布式存储系统 - 读书笔记

    文章目录 大规模分布式存储系统(原理解析与架构实战OceanBase) 第1章 概述 1.1 分布式存储概述 1.2 分布式存储分类 第一篇 基础篇 第2章 单机存储系统 2.1 硬件基础 2.1.1 ...

  3. kubernetes(K8S)学习笔记P6:K8s集群|java项目部署

    kubernetes(K8S)学习笔记P6:K8s集群|java项目部署 8.集群资源监控 8.1概述 8.2搭建集群监控平台系统 8.2.1部署prometheus 8.2.3部署Grafana 8 ...

  4. 分布式锁解决并发三种方案

    目录 为什么使用分布式锁? 分布式锁应具备的条件 三种实现方式 1.数据库锁 1.1 乐观锁 2.基于redis的分布式锁 3.基于Zookeeper实现分布式锁 4.三种方案的比较 分布式CAP理论 ...

  5. HBase分布式存储系统学习

    简介: hadoop的数据库,根据谷歌的bigtable论文实现的 分布式的可扩展的大数据存储技术 随机访问 实时读写海量数据 存储数'十亿行 百万例'的数据 高性能.高可靠.面向列.可伸缩的分布式存 ...

  6. 分布式文件与分布式存储系统学习总结(持续更新)

    存储系统知识 Write Ahead Log 问题引入 存储系统在运行过程中,每时每刻都在发生数据更新.如对文件数据的CRUD. 对于中心控制节点来说,这些都会涉及到metadata的更新操作. 为了 ...

  7. torch分布式训练学习笔记

    分布式通讯包 - torch.distributed 基本 初始化 TCP初始化 共享文件系统初始化 环境变量初始化 组 点对点通信 集体功能 torch.distributed提供了一种类似MPI的 ...

  8. 【深度学习】Tensorflow2.x入门(一)建立模型的三种模式

    前言 最近做实验比较焦虑,因此准备结合推荐算法梳理下Tensorflow2.x的知识.介绍Tensorflow2.x的文章有很多,但本文(系列)是按照作者构建模型的思路来展开的,因此不会从Eager ...

  9. java实现分布式事务的三种方案

    问题描述: 用户支付完成会将支付状态及订单状态保存在订单数据库中,由订单服务去维护订单数据库.由库存服务去维护库存数据库的信息.下图是系统结构图: 如何实现两个分布式服务(订单服务.库存服务)共同完成 ...

  10. 大数据存储系统学习笔记(一)

    1. NFS 设计目标:服务器出现故障,可以简单快速地恢复 NFS Server不保持任何状态,每个操作都是无状态的 如果NFS崩了,只用重启,什么额外操作都不用,因为每个操作无状态 NFSv2 对于 ...

最新文章

  1. 《智源社区周刊:预训练模型》第2期:Facebook用“预微调”改进预训练性能、再议GPT-3中的东方主义偏见...
  2. WinForm界面开发之“HTML内容编辑控件”
  3. 使用时空-频率模式分析从脑电数据的一些试验中提取N400成分
  4. 用MySQL数据库来支持Schemaless的数据库存储方案
  5. 【错误记录】Android 内存泄漏 错误排查记录 ( FinalizerReference 内存泄漏 )
  6. python条件控制语句要注意什么_关于Python条件控制怎么用?要注意什么?
  7. 阿里云帮助江苏省财政厅力推统一公共支付平台
  8. 从直播答题看背后的移动音视频开发
  9. 基于用户的协同过滤算法
  10. 前端工程师:现在是最糟糕的时代,也是最好的时代
  11. nuxtjs+express+vue2+vuex搭建的服务端渲染(SSR)个人网站项目
  12. ICRA 2021| 基于精确和减少漂移的关注距离的Camera-IMU-UWB融合定位方法
  13. 图像边缘检测新方向--量子算法
  14. error while loading shared libraries解决办法
  15. jq+css3树叶飘散特效
  16. Android常见的问题
  17. vc项目开发:俄罗斯方块制作日志 [上]
  18. php怎么把中文转,php如何把中文转换成拼音
  19. 5.2 主机扫描:主机探测
  20. [JavaScript]如何将www.xxx.com变为com.xxx.www

热门文章

  1. 在windows2003, mysql5.0, PHP 4.4.4下的bugfree1.1打包
  2. 第二阶段团队冲刺02
  3. SPFA - Luogu 3385 【模板】负环
  4. Android之apk优化
  5. 梦想成真,喜获微软MVP奖项,微软MVP FAQ?
  6. Base64压缩UUID长度替换Hibernate原有UUID生成器
  7. SQL查看存储过程相关信息
  8. 如何在ASP.NET程序中使用报表查看器控件并传递用户凭据
  9. 【转】三层架构的业务逻辑层存在的意义
  10. gridview為什麼分頁後,GridView1_RowDataBound就運行不了