从0开始学架构
李运华
资深技术专家
立即订阅
38968 人已学习
课程目录
已完结 59 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 照着做,你也能成为架构师!
免费
基础架构 (13讲)
01 | 架构到底是指什么?
02 | 架构设计的历史背景
03 | 架构设计的目的
04 | 复杂度来源:高性能
05 | 复杂度来源:高可用
06 | 复杂度来源:可扩展性
07 | 复杂度来源:低成本、安全、规模
08 | 架构设计三原则
09 | 架构设计原则案例
10 | 架构设计流程:识别复杂度
11 | 架构设计流程:设计备选方案
12 | 架构设计流程:评估和选择备选方案
13 | 架构设计流程:详细方案设计
高性能架构模式 (8讲)
14 | 高性能数据库集群:读写分离
15 | 高性能数据库集群:分库分表
16 | 高性能NoSQL
17 | 高性能缓存架构
18 | 单服务器高性能模式:PPC与TPC
19 | 单服务器高性能模式:Reactor与Proactor
20 | 高性能负载均衡:分类及架构
21 | 高性能负载均衡:算法
高可用架构模式 (10讲)
22 | 想成为架构师,你必须知道CAP理论
23 | 想成为架构师,你必须掌握的CAP细节
24 | FMEA方法,排除架构可用性隐患的利器
25 | 高可用存储架构:双机架构
26 | 高可用存储架构:集群和分区
27 | 如何设计计算高可用架构?
28 | 业务高可用的保障:异地多活架构
29 | 异地多活设计4大技巧
30 | 异地多活设计4步走
31 | 如何应对接口级的故障?
可扩展架构模式 (6讲)
32 | 可扩展架构的基本思想和模式
33 | 传统的可扩展架构模式:分层架构和SOA
34 | 深入理解微服务架构:银弹 or 焦油坑?
35 | 微服务架构最佳实践 - 方法篇
36 | 微服务架构最佳实践 - 基础设施篇
37 | 微内核架构详解
架构实战 (13讲)
38 | 架构师应该如何判断技术演进的方向?
39 | 互联网技术演进的模式
40 | 互联网架构模板:“存储层”技术
41 | 互联网架构模板:“开发层”和“服务层”技术
42 | 互联网架构模板:“网络层”技术
43 | 互联网架构模板:“用户层”和“业务层”技术
44 | 互联网架构模板:“平台”技术
45 | 架构重构内功心法第一式:有的放矢
46 | 架构重构内功心法第二式:合纵连横
47 | 架构重构内功心法第三式:运筹帷幄
48 | 再谈开源项目:如何选择、使用以及二次开发?
49 | 谈谈App架构的演进
50 | 架构实战:架构设计文档模板
特别放送 (7讲)
架构专栏特别放送 | “华仔,放学别走!”第1期
架构专栏特别放送 | “华仔,放学别走!” 第2期
如何高效地学习开源项目 | “华仔,放学别走!” 第3期
架构师成长之路 | “华仔,放学别走!” 第4期
架构师必读书单 | “华仔,放学别走!” 第5期
新书首发 | 《从零开始学架构》
致「从0开始学架构」专栏订阅用户
结束语 (1讲)
结束语 | 坚持,成就你的技术梦想
从0开始学架构
登录|注册

26 | 高可用存储架构:集群和分区

李运华 2018-06-26
上一期我讲了高可用存储架构中常见的双机架构,分别为主备复制、主从复制、双机切换和主主复制,并分析了每类架构的优缺点以及适应场景。
今天我们一起来看看另外两种常见的高可用存储架构:数据集群和数据分区

数据集群

主备、主从、主主架构本质上都有一个隐含的假设:主机能够存储所有数据,但主机本身的存储和处理能力肯定是有极限的。以 PC 为例,Intel 386 时代服务器存储能力只有几百 MB,Intel 奔腾时代服务器存储能力可以有几十 GB,Intel 酷睿多核时代的服务器可以有几个 TB。单纯从硬件发展的角度来看,似乎发展速度还是挺快的,但如果和业务发展速度对比,那就差得远了。早在 2013 年,Facebook 就有 2500 亿张上传照片,当时这些照片的容量就已经达到了 250 PB 字节(250 × 1024TB),平均一天上传的图片有 3 亿 5000 万张。如此大量的数据,单台服务器肯定是无法存储和处理的,我们必须使用多台服务器来存储数据,这就是数据集群架构。
简单来说,集群就是多台机器组合在一起形成一个统一的系统,这里的“多台”,数量上至少是 3 台;相比而言,主备、主从都是 2 台机器。根据集群中机器承担的不同角色来划分,集群可以分为两类:数据集中集群、数据分散集群。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0开始学架构》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(35)

  • 空档滑行
    1.远距离集群网络延时较高,而且网络出问题的几率加大,导致数据复制的逻辑会比较复杂
    2.成本过高,数据全量复制,等于存储多份
    所以更好的办法是从业务端对数据做分区,出现地理故障时只形象一部分用户或者功能的使用

    作者回复: 分析到位👍

    2018-06-27
    32
  • 孙振超
    数据集群可以做到在不同节点之间复制数据,确保当一个集群断网断电的情况下,仍然有机房可以读取数据,但是在对外提供服务时不仅仅考虑是否能读写数据,还需要考虑读写数据所需的耗时。距离过远意味着耗时较长,如果是搭建专线,成本也会非常高,因而从成本和用户体验两个纬度考量远距离同步集群不适合直接对外提供服务。

    对于城市级数据集群出故障,主要还是通过短距异地(网络耗时在十毫秒级别)集群来解决,远距离集群主要还是用于做冷备、数据离线比对等功能。

    作者回复: 正解👍👍

    2018-08-15
    16
  • XNorth
    远距离集群,需要考虑带宽影响。数据量较大,复制成本较高。
    2018-06-26
    8
  • feifei
    1,远距离分布的网络延迟高,将导致集群中的数据数据同步时延很高,如果出现业务远距离的数据同步,业务的时延不然很高,某些极端情况,可能用户得不到响应,影响用户的使用
    2,远距离的网络可靠性很难保证,支付宝就因为挖断光缆导致用户不可用
    3,成本高,数据中心稀缺的资源是宽带资源,因为是远距离分布,所以宽带的费用会很高
    2018-06-26
    5
  • 海罗沃德
    AWS按照地理分区为region,每个region之间大约相当于跨国分区,当然在很多国家里AWS都有多个region比如us-west-1,us-west-2,就分别位于加利福尼亚和俄勒冈,而us-east-1在弗吉尼亚

    每个AWS的region下面又有多个availablility zone简称AZ,就是所谓us-west-2 a,us-west-2 b这样的,AZ基本上是不在同一个城市,距离至少要在数百公里以上,以保证地理级别可用

    不同的region级别上数据是很难迁移的,如果有多region的数据同步需求,可能需要联系AWS的工程师来调配资源,而且费用也会很高,但是同region下的AZ级别数据同步是很容易的,费用也很低

    作者回复: 感谢补充👍👍👍

    2019-07-14
    3
  • 郭涛
    数据集群中的节点间需要通信,远距离通信网络延迟高,无法保证集群中节点间的数据一致性;长距离网络传输带宽不比局域网,大量数据复制带宽容易成为瓶颈;且一旦出故障,排查的成本也高。数据集群架构适合应对硬件级的故障,远距离、地理范围的可用性保障采用数据分区。
    2018-06-26
    3
  • 文竹
    数据分散集群具有均衡性,容错性,可伸缩性特点,响应比较快。

    远距离分布的集群可有如下特点:
    1、更容易出现不可用性,具体表现在业务响应慢,数据读/写/复制延迟高
    2、一致性也难保证
    3、也难保证均衡性,容错性,可伸缩性特点
    4、复杂度较近距离的集群呈现指数级增长


    作者回复: 正解👍👍

    2018-08-23
    2
  • ttxser
    我觉得这是我购买的众多课程中,最值的一个,谢谢!

    作者回复: 谢谢😄每个课程面向的用户和目标不太一样,只能说我的这个正好解决了你的需求,其他课程也不错,我自己也买了几个

    2018-07-24
    2
  • Geek_88604f
    既然数据集群就可以做到不同节点之间复制数据,为何不搭建一个远距离分布的集群来应对地理位置级别的故障呢?从以下几个方面来考虑:业务本身、均衡性、容错性、可伸缩性。
            业务本身:在这样的一个集群上网络访问的质量是不可控的,导致用户体验差,用户无法忍受就只能放弃。
            均衡性:在大规模的情况下算法很难保证各个服务器上的数据分区是均衡的。一个可能是算法本身在大规模的情况下失效了;另一个可能是集群中节点的负载情况时时刻刻在发生变化,分区一直处在调整当中。
            容错性:大规模集群中服务器故障是家常便饭,当服务器故障时数据分区需要分配给其他服务器,这就导致了时时刻刻在发生数据迁移,影响正常业务的带宽。
            可伸缩性:一是这样的集群Master是瓶颈,系统节点规模有上限;二是增加或删除节点带来数据分区的大面积迁移
            总的来说,搭建一个远距离分布的集群来应对地理位置级别的故障是很不实际的方案,它注定不能将均衡性、容错性、可伸缩性这三者的影响控制在有限的范围内,进而影响正常业务的开展。

    作者回复: 专业👍

    2019-09-16
    1
  • 正是那朵玫瑰
    老师回复留言真是好快呀!定了好几个专栏,华仔老师对留言的回复是最认真和最负责任的,从专栏学习了很多东西,此留言是特意感谢华仔老师的!
    另外rocketmq确实是producer轮训发给每个master,应该是producer充当了算法分配角色,我开始理解以为一定要服务器端一个节点来充当!

    作者回复: 不是的,算法实现方式很多,客户端实现,路由层实现,服务器转发等都可以😄

    2018-08-03
    1
  • 衣申人
    老师,数据分散集群,数据应该是不一样的吧?关键是分区吧,虽然可能节点会互备数量数据,但不等于数据都相同,不然和数据集中集群有和区别?

    作者回复: 嗯,数据分散集群中的节点数据不同,我之前的回复混淆了,参考es就知道了

    2018-07-04
    1
  • 衣申人
    请问数据分散集群不就是分区吗?文章在论述时的分类和层次上是不是有点重合?还是我理解错了呢?请老师指导

    作者回复: 分散集群是地理位置上在同一个机房,集群中的数据一样;分区分布在不同地理位置,且数据不一样

    2018-07-03
    1
  • @漆~心endless
    能否引入区块链的相关思想去做数据备份,将非机密数据进行“去中心化”操作,这样能降低硬件成本,以及提高容灾能力。

    作者回复: 区块链性能太差😂

    2018-06-29
    1
  • 生活就是态度
    可以讲讲es,kafka这些中间件优化及应用不

    作者回复: 专栏的目的在于提炼架构设计中本质和通用的内容,这样以后你看到一个系统就知道怎么去分析和研究,如果只是详细讲解某个系统,换个系统这些东西可能都没用了

    2018-06-28
    1
  • 问题究竟系边度
    如果采用远距离集群,网络抖动和延时就会对整个集群性能造成影响。 如果出现网络分区,数据出现差别。 同时副本复制的控制会比较复杂

    作者回复: 👍👍👍

    2018-06-27
    1
  • xiong
    您好,想问下,集中式数据备份模式,是不同地区的数据都备份到同一个库中吗,还是各备份数据在备份中心也是各自独立的?
    2019-11-29
  • 布小丫学编程
    数据分区是按区域划分数据,每个区域提供单独读写功能,不同区域访问不同分区数据可以大大提高数据的访问速度。其他区域可能仅仅是备份。

    数据集群是全量备份,一来数据量很大,二来增加了集群的同步压力,而且远距离实时备份延迟很高。还不如各个区域自己管理自己分区数据。
    2019-11-24
  • 赤城
    目前阿里云数据库大行其道的背景下,需要做数据库集群部署和分布的只剩下一些大厂在做了,真正上手生产环境的机会越来越可遇不可求了。

    作者回复: 是的,云服务成为基础服务

    2019-11-21
  • godtrue
    课后思考及问题
    本文核心观点
    1:啥是集群?
    集群就是多台机器组合在一起形成一个统一的系统,这里的“多台”,数量上至少是 3 台;相比而言,主备、主从都是 2 台机器。
    2:集群的类型?
    根据集群中机器承担的不同角色来划分,集群可以分为两类:数据集中集群、数据分散集群。
    数据集中集群与主备、主从这类架构相似,我们也可以称数据集中集群为 1 主多备或者 1 主多从。无论是 1 主 1 从、1 主 1 备,还是 1 主多备、1 主多从,数据都只能往主机中写,而读操作可以参考主备、主从架构进行灵活多变。——核心在于,数据只能往主机中写。
    适合数据量不大,集群机器数量不多的场景。
    数据分散集群指多个服务器组成一个集群,每台服务器都会负责存储一部分数据;同时,为了提升硬件利用率,每台服务器又会备份一部分数据。——核心在于,集群中的机器既负责存储数据又负责备份数据,每台机器都能负责读写请求,需要一个任务分发的角色。
    由于其良好的可伸缩性,适合业务数据量巨大、集群机器数量庞大的业务场景。
    3:啥是数据分区?
    数据分区指将数据按照一定的规则进行分区,不同分区分布在不同的地理位置上,每个分区存储一部分数据,通过这种方式来规避地理级别的故障所造成的巨大影响。
    4:分区和集群,大数据存储系统或者大型网络系统的标配。通俗点说就是单机的性能或者存储已近极限,但是还是满足不了业务的需要就需要加机器来扛啦!当然,为了数据的高可用性也是采用分布式数据冗余的方式来实现的。
    今天感觉对集群和分区理解的更好一点啦!
    既然数据集群就可以做到不同节点之间复制数据,为何不搭建一个远距离分布的集群来应对地理位置级别的故障呢?
    如果这么做了,会有啥问题呢?最明显的估计会出现更多更大的数据复制延迟问题,数据不一致问题会比较凸现,如果为了更好的网络通信以用来减少数据延迟,会花更多的钱来铺设专线,那由于这些问题可以看出这种方式不太合适。
    2019-08-30
  • Leon📷
    ceph这种读写都在一个主OSD进行,从OSD仅仅是在主故障时提供备份给新加入的主OSD,集中和分散如果是相对于主机而言,ceph就是数据分散的集群,如果是按进程来划分的话,就是数据集中式集群。这样理解对吗

    作者回复: 是集中还是分散是根据数据纬度来判断的

    2019-02-25
收起评论
35
返回
顶部