从0开始学架构
李运华
资深技术专家
立即订阅
38901 人已学习
课程目录
已完结 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开始学架构
登录|注册

30 | 异地多活设计4步走

李运华 2018-07-05
上一期,基于异地多活架构设计复杂度最高的“跨城异地”,我结合自己的经验总结了异地多活设计的 4 个技巧及其核心思想,我认为掌握这些技巧是进入具体设计步骤的前提。
今天,在掌握这 4 大技巧的基础上,我来讲讲跨城异地多活架构设计的 4 个步骤

第 1 步:业务分级

按照一定的标准将业务进行分级,挑选出核心的业务,只为核心业务设计异地多活,降低方案整体复杂度和实现成本。
常见的分级标准有下面几种:
访问量大的业务
以用户管理系统为例,业务包括登录、注册、用户信息管理,其中登录的访问量肯定是最大的。
核心业务
以 QQ 为例,QQ 的主场景是聊天,QQ 空间虽然也是重要业务,但和聊天相比,重要性就会低一些,如果要从聊天和 QQ 空间两个业务里面挑选一个做异地多活,那明显聊天要更重要(当然,此类公司如腾讯,应该是两个都实现了异地多活的)。
产生大量收入的业务
同样以 QQ 为例,聊天可能很难为腾讯带来收益,因为聊天没法插入广告;而 QQ 空间反而可能带来更多收益,因为 QQ 空间可以插入很多广告,因此如果从收入的角度来看,QQ 空间做异地多活的优先级反而高于 QQ 聊天了。
以我们一直在举例的用户管理系统为例,“登录”业务符合“访问量大的业务”和“核心业务”这两条标准,因此我们将登录业务作为核心业务。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0开始学架构》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(30)

  • xuan
    业务分级我觉得得从如下方面来分析:
    1.部门或者公司当期的发力点,如果着重新用户的增长 我觉得顺序应该是ACB,如果着重现有客户满意度,我觉得顺序应该是CBA,如果看重看重收益,那B的优先级最高
    2.可通过预期货币价值分析,进行业务分级;大致维度如下:风险发生概率 风险损耗成本 技术改造陈本 技术改造时长(月) 改造后成本节省(月)

    作者回复: 很赞👍

    2018-07-05
    18
  • summer
    业务分级讨论的时候,产品说 A 也很重要,因为影响用户使用;B 也很重要,因为影响公司收入;C 也很重要,因为会导致客户投诉……这种情况下我们该如何处理业务分级?
    了解产品挣钱的底层商业逻辑,就可以知道怎么分级了。不是每一单都要赚钱的,在这里亏的,在别处或下次再挣回来。比如微信聊天业务不挣钱,但是影响面大,坏了口碑,大家不来玩了,商家凭什么来投广告。减少影响面,然后跪求被影响用户的原谅

    作者回复: 挺好的思路,根据商业模式的核心来判断

    2018-07-10
    17
  • 孙振超
    涉及到取舍时就需要参考公司的核心目标和愿景了,如果是和核心目标相关的优先级就高,和核心目标无关或关联度不大的优先级就低。
    如同最近的滴滴,在以扩规模增利润作为核心目标时必须会优先处理司机端和线路规划相关的业务,而对于增加成本降低利润的用户端和客服系统优先级肯定会比较低;当事故频发引发公司战略转向到安全第一时,原先一直没有得以优化的客服系统、警方查询对接系统优先级将会排到第一位。

    在异地多活时排定优先级时也是如此了,牺牲什么保证什么,都是和公司最为关注的内容和目标挂钩的。

    作者回复: 赞同👍

    2018-08-29
    4
  • Enjoystudy
    我们如果通过某种路由策略,比如用户id保证同一个用户的请求都路由到同一个机房就可以解决同步延时的问题

    作者回复: 这个机房挂了怎么办?

    2018-07-12
    1
    4
  • TH
    之前学到过一个应对这种多因素筛选的方法,不知道对不对:列出所有参与讨论的业务,以及考虑到的影响因素(访问量、影响使用、收益……),每个因素设定一个权值,每个业务针对每个因素进行打分(权值和打分均不允许有重复值),最后计算每个业务的加权和,得出核心业务

    作者回复: 打分最后会变成打架😂参考前面备选方案选择中介绍的内容

    2018-07-05
    3
  • 但莫

    多个场景都重要的情况可以进行层次分析,首先俩俩比较,得到分析矩阵,进行归一化处理,经过计算可以得到每种场景的重要性权重。

    当然,俩俩比较的时候判断哪个更重要就看评判人的喜好了,这一步可以通过头脑风暴的到一个平均值。


    记得之前的课程中介绍过另一种方法,一时没想起来名字。

    作者回复: 前面在评估备选方案的时候,我给出了"360度评估"和"按优先级选择"的两个技巧

    2018-07-05
    2
  • 成功
    B优先级最高,A第二,C第三。B要考虑跨城多活,A做同城多活,C不同机房就行

    作者回复: 如果是阿里,“用户第一”应该选A,所以不同公司有不同的标准,没有统一答案😄

    2018-07-09
    1
  • 凡凡
    对于业务分级,往往不会有固定的优先级,首先最重要的是明确各种情况的没在逻辑,如何影响用户,如何影响公司收入,如何导致客诉。明确内在逻辑之后,客诉一般要优先处理,不然对公司的声誉影响很大,也会造成公司业务部门对技术部门信任的崩塌。另外,外讨论的时候,需要看各种情况是否能够以迭代的方式,同步开展,小步幅行进,。现实情况,这往往也是居多的一种结果。

    作者回复: 是的,没有固定分级,和具体公司具体业务有关

    2018-07-08
    1
  • 空档滑行
    通常来说toC的应用,影响用户使用的应该是比较靠前的,尤其是产品还处于抢市场的阶段。
    to B的应用客户买的是专业性,相对来说用户体验可以往后排,用户能使用和公司收入还是比较重要的。客户相对固定,可以通过客服主动联系客户的方式来做部分挽回

    作者回复: 赞同,根据业务和公司判断

    2018-07-05
    1
  • 刹那间的永恒
    关于最后的思考题我认为首先确保用户体验才能扩大用户群体,同时一定程度上减少用户投诉以及间接性为公司增加收入;其次处理客户投诉效率同样也能为公司带来口碑,创造粉丝用户,所以我认为a>c>b

    作者回复: 没有绝对的答案,和公司的业务相关

    2018-07-05
    1
  • 浪子恒心
    能讲讲阿里的异地多活是怎么做的吗?

    作者回复: 网上资料很多

    2018-07-05
    1
  • liuliu
    我这里是集设计中使用了MQ做数据同步,但是消息是有顺序性的,给消息加了顺序标签,但是感觉顺序处理部分还是不好操作,如果一定要用MQ同步有序数据可行吗?

    作者回复: 很难做,在消费端做好些

    2019-10-19
  • godtrue
    业务分级讨论的时候,产品说 A 也很重要,因为影响用户使用;B 也很重要,因为影响公司收入;C 也很重要,因为会导致客户投诉……这种情况下我们该如何处理业务分级?
    鱼骨图+SWOT+决策树
    根据公司的具体情况来定,看那个是主要矛盾的主要方面,看那个对于公司的长远利益最大化。
    2019-08-31
  • 弄花香满衣
    数据库和消息同时同步数据,发生主键冲突mysql同步中断,这个怎么处理好呢

    作者回复: MySQL的话,可以用REPLACE INTO,或者ON DUPLICATE

    2019-07-31
  • 日光倾城
    “数据库同步走内网连接这种方式”请问跨城异地多活这种场景如何建立内网连接呢

    作者回复: VPN

    2019-07-29
  • 水月洞天
    可以从产品最初的定位来确定,如果平台是用来通过交易产生其他附加服务,则业务系统最重要。任何一个产品都有最初的一个核心想法构建的。
    2019-04-16
  • gkb111
    异地多活架构,业务分级,核心业务,数据分类,量,实时,唯一性,可恢复,同步方式,存储系统同步,消息队列同步,事务性和有序性,异常
    2019-04-12
  • 亚林
    程序员到这个阶段,就需要了解企业愿景,价值观,阶段性目标和商业模式了,根据这些东西对技术方案进行取舍了。
    2019-04-11
  • 张汉桂-东莞
    很明显B,C,A
    B来钱业务嘛,当然优先保证。
    C会招来投诉,服务不到位会流失用户,间接损失钱了呀。
    A虽说重要,但没有提及负面影响的后果,就当没有负面影响来处理咯。
    2019-03-10
  • 王肖武
    都是一些概念的罗列,我想知道类似于电商库存这个这样的业务是怎么做异地多活的,网上是有很多资料,但都不知道哪个更权威,都各自会有什么坑?

    作者回复: 我建议你再回去看看架构设计三原则

    2018-11-22
收起评论
30
返回
顶部