从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开始学架构
登录|注册

42 | 互联网架构模板:“网络层”技术

李运华 2018-08-02
除了复杂度,互联网业务发展的另外两个关键特点是“高性能”和“高可用”。通常情况下,我们在设计高可用和高性能系统的时候,主要关注点在系统本身的复杂度,然后通过各种手段来实现高可用和高性能的要求,例如我前面介绍的计算高性能架构模式、存储高可用架构模式等。但是当我们站在一个公司的的角度来思考架构的时候,单个系统的高可用和高性能并不等于整体业务的高可用和高性能,互联网业务的高性能和高可用需要从更高的角度去设计,这个高点就是“网络”,所以我将相关措施统一划归为“网络层”。注意这里的网络层和通常理解的如何搭建一个局域网这种概念不一样,这里强调的是站在网络层的角度整体设计架构,而不是某个具体网络的搭建。
接下来我将介绍互联网架构模板的“网络层”技术的几个关键架构设计点,部分内容专栏前面已经有深入阐述,今天作为概要的总结把它们归纳一下。

负载均衡

顾名思议,负载均衡就是将请求均衡地分配到多个系统上。使用负载均衡的原因也很简单:每个系统的处理能力是有限的,为了应对大容量的访问,必须使用多个系统。例如,一台 32 核 64GB 内存的机器,性能测试数据显示每秒处理 Hello World 的 HTTP 请求不超过 2 万,实际业务机器处理 HTTP 请求每秒可能才几百 QPS,而互联网业务并发超过 1 万是比较常见的,遇到双十一、过年发红包这些极端场景,每秒可以达到几十万的请求。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0开始学架构》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(24)

  • narry
    负载均衡和cdn基本是和业务无关,具有通用性,而每个业务对数据的一致性和事务要求都不一样,需要单独设计,所以无法将多机房和多中心作为基础服务对外提供

    作者回复: 赞同

    2018-08-02
    18
  • 许鑫
    想问下,类似支付宝的场景如何保证异地金额的强一致性

    作者回复: 我不清楚技术细节,从理论上来说,余额和库存异地强一致性会导致性能大幅下降,不适合互联网场景。支付宝有个TCC事务模型,你可以查一下资料。
    即使是银行,对并发性能要求没那么高,余额也难以做到异地强一致性,我了解一般都是做备份,异地强一致性太复杂

    2018-08-07
    1
    7
  • SMTCode
    CDN和LB是基于通用技术和协议,实现请求的调度与转发等功能。而多机房、多中心,是与业务强相关,对业务有很大侵入性的,只能是服务的实现者根据自己的侧重点,选择合适的技术,有针对性的实现服务的三高指标。

    作者回复: 正确👍

    2018-08-02
    6
  • J
    老师你好,请教一个问题,像车联网这种业务,拥有上百万的车载终端,车端会实时上传当前数据,同时服务器会需要控制单独某台车(下行消息),这种场景一般采用哪种架构呢?如果采用MQ的话,一般的消息中间件只能支持几千上万的队列,满足不了要求,请老师指点,谢谢🙏

    作者回复: 通常的做法是将连接管理和消息管理分开,消息队列存储需要下发的消息,连接管理从消息队列取消息然后下发,消息中标识要发给哪台车

    2018-09-04
    5
  • kyq叶鑫
    老师你好,你在评论或者专栏中多次说道金融类业务无法做到跨城强一致性,并以支付宝举例,我一直有一个疑问:那么如果一个支付宝用户走出其数据所在大区,支付宝是如何处理这个用户的数据,保证业务不出错的呢?
    望解惑。

    作者回复: 有全局路由会把用户路由到其数据归属的大区

    2018-12-05
    3
  • 呵呵
    大神问两个问题,1.假如有很多台nginx做负载均衡,那么请求是如何分发到这么多nginx服务上的?2. 对于支付宝的转账业务,需要数据强一致性,那是不是就无法做到跨城市区域存储相关的数据?

    作者回复: 1. 硬件负载均衡设备,F5了解一下
    2. 是的,跨城不行,但同城多机房可以基于paxos算法设计分布式一致性存储系统,例如oceanbase

    2018-08-27
    3
  • 凡凡
    多机房多中心,业务相关性太强,很难抽象绝对合适的模型,通用差。一般都是企业按照自己的特定业务,适当的做多中心,或者做到数据异地灾备,或者做到多中心服务。

    或许,现在的云服务厂商,会逐渐面向行业,抽象出多种多中心方案,也是可能得。

    毕竟云服务厂商在全球范围,已经有了很多机房,如果能抽象出来一定会做尝试的,不论用户多少,这是一种能力。

    作者回复: 是的,现在有金融云,游戏云,证券云等解决方案了

    2018-08-05
    2
  • 空档滑行
    负载均衡和cdn虽然复杂,但是局限于技术层面。多中心和多机房则是技术和业务都要涉及到改造,比如文中说的淘宝多中心业务,每个业务模块都要定制,所以提供通用服务是不现实的

    作者回复: 正确👍

    2018-08-02
    2
  • godtrue
    课后思考及问题
    1:为什么可以购买负载均衡和 CDN 服务,但却不能购买多机房和多中心服务?
    这个问题,我第一感觉是个伪问题,商业社会没什么不能买的,土地、房屋、武器、公司都能买卖,多机房和多中心服务更如是。
    当然也理解老师的意思,主要是站在架构师的角度来看,负载均衡和CDN与业务关联性小,花钱也相对少,买来直接就能用,需要的也多一些,所以,购买使用比较顺当自然。
    多机房和多中心服务,实现上和业务关联性大,除非订制化否则难以买来就用,如果自己的公司都发展到必须使用多机房和多中心了,招兵买马自己搞一套才是自然而然的想法。

    作者回复: 思考和回答很到位👍👍

    2019-09-04
    1
  • Darrykinger.com
    比较好奇:像支付宝银行这些实现异地多中心的情况是如何达到的?专门部署自己的传输路线?包括蚂蚁金融、以前用mysql实现异地多数据中心,发现延迟有点大,稍微不对的操作就不同步了、

    作者回复: 1. 有钱的公司买专线,非常有钱的公司自己搭建网络
    2. 有的数据不能实现多中心,但可以实现数据分区,例如分为南方,北方,西南,西北四个数据大区

    2018-08-07
    1
  • LB
    仔仔老师你好,有两个问题请帮忙解答:
    1.请问银行异地存取款的数据强一致性是怎么做到的?还可以在国外消费做到强一致性?
    2.银行常用的两地三中心是真正的多中心吗?如何判断?
    谢谢。

    作者回复: 1. 异地取款其实只是用户异地操作,系统还是会回到用户开户行判断余额;异地存款不需要校验余额,只需要校验账号,因此做异地存款是可以的,因为银行能收到物理上真正的钱,不用担心数据丢失的问题
    2. 两地三中心,是指同城两个机房是双活,异地机房是备份,当同城两个机房都挂掉,异地机房不能接管业务,只能用来备份恢复

    2018-08-06
    1
  • LouisLimTJ
    其实谷歌有些产品号称可以做到同城和跨城高可用了,比如cloud Spanner,当然我没有在这些产品针对高可用的问题进行针对性的测试。
    回到问题上来,主要第一. 想用的公司本来就少,方案贵;第二. 既然要用也是趋向自搭,可以针对业务进行定制化处理;第三. 个人看法,所提的问题层次最多是PaaS, 而既然同城跨城高可用跟业务有关,如果云平台技术实力强,不见得不可以考虑实现SaaS级别的跨城高可用

    作者回复: 希望云平台能解决,目前很多公司都有多活的需求,但技术上自己又实现不了

    2018-08-06
    1
  • LB
    仔仔老师,服务器中间件的连接数有限,例如WAS的连接池一共有几千。而咱们说的一台服务器都并发好几万,请问是怎么搞的?谢谢。

    作者回复: 一般说并发可以是并发连接,也可以是并发请求,nginx这类基于事件驱动架构的服务器,连接数和请求数都可以上万,以前的apache基于ppc模式,连接数受C10K问题限制,达不到上万

    2018-08-05
    1
  • 敬艺
    即使机房接入CDN,如果CDN支持的网络服务商不够的话,用户访问时不时出现超时。如CDN只接入电信和联通(一时很难覆盖所有网络服务商),用户使用移动网络,访问服务会出现超时。请问大致从几方面优化?

    作者回复: 接CDN一般都是三线都接的

    2018-08-05
    1
  • 正是那朵玫瑰
    华仔老师:
    1、DNS负载均衡不一定是地里级别的吧,如consul就实现了dns服务器,内部服务注册到consul,消费者调用服务可以通过dns服务器做负载均衡,服务故障下线也能及时更新!
    2、cdn和负载均衡应该是通用的技术吧,多机房和多中心跟业务强关联,没法抽象通用的东西来,就算能,使用起来也不灵活吧!

    作者回复: 1. 可以做你说的功能,但这样做不常见,出问题可能处理比较麻烦
    2. 正解

    2018-08-02
    1
  • 行者
    多中心和CDN复杂度不在一个量级。
    2019-03-10
  • ThinkingQuest
    dig baidu.com 实际上是看不到它这个域名用了多少个ip的吧。 因为它做了“智能解析”,根据地域,运营商等信息返回了特定的A记录地址。

    这个问题我一直挺疑惑的,就是“如何查询一个域名全部的dns地址解析”,这是不是一个无解问题呢?

    作者回复: 这个真不能由普通用户一下查出来的,就算运营商,也只是知道自己网络内的配置

    2018-11-20
  • 劉阳河
    老师,F5来分发100w的请求,是直接分发到服务器上吗?

    作者回复: 一般会先分发到nginx一类的软件负载均衡上

    2018-11-15
  • 正弋
    我们做了一个API网关,想咨询一下有什么好的办法能监控调用方到网关以及网关到后端服务之间的网络状况

    作者回复: 没有什么特别的技巧,就是打点统计

    2018-11-02
  • 文竹
    主要还是因为多机房和多中心的复杂性太高,一般公司很难独自运营或很少有这方面的需求。
    2018-08-26
收起评论
24
返回
顶部