从 0 开始学架构
李运华
网名“华仔”,前阿里资深技术专家(P9)
152573 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 66 讲
结束语 (1讲)
结课测试 (1讲)
从 0 开始学架构
15
15
1.0x
00:00/00:00
登录|注册

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

用途和限制
业务上的妥协和兼容
时延带来的影响
风险
优点
软件和硬件负载均衡的区别
缺点
优点
未来发展的方向
负载均衡、CDN、多机房和多中心的应用
网络层技术的重要性
多中心设计的复杂性
数据一致性和数据事务性的保证
多中心的要求和难点
多机房作为前提
跨国多机房
跨城多机房
同城多机房
单机房的局限性
CDN服务商和云计算厂家提供的服务
CDN的发展和重要性
解决用户网络访问的“最后一公里”效应
Nginx、LVS、F5
DNS
网络层的设计角度
高性能和高可用的关键特点
总结
多中心
多机房
CDN
负载均衡
互联网架构模板的“网络层”技术

该思维导图由 AI 生成,仅供参考

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

负载均衡

顾名思议,负载均衡就是将请求均衡地分配到多个系统上。使用负载均衡的原因也很简单:每个系统的处理能力是有限的,为了应对大容量的访问,必须使用多个系统。例如,一台 32 核 64GB 内存的机器,性能测试数据显示每秒处理 Hello World 的 HTTP 请求不超过 2 万,实际业务机器处理 HTTP 请求每秒可能才几百 QPS,而互联网业务并发超过 1 万是比较常见的,遇到双十一、过年发红包这些极端场景,每秒可以达到几十万的请求。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

互联网架构模板中的“网络层”技术是互联网业务发展的关键特点之一。本文介绍了负载均衡、CDN和多机房等关键架构设计点。负载均衡通过将请求均衡地分配到多个系统上来实现高性能和高可用,包括DNS、Nginx、LVS、F5等方式。CDN则通过将内容缓存在离用户最近的地方来解决用户网络访问时的“最后一公里”效应,加速用户访问。多机房设计则是为了提高业务的高可用性,包括同城多机房、跨城多机房和跨国多机房等策略。此外,文章还介绍了多中心设计的复杂性和关键在于“数据一致性”和“数据事务性”如何保证。文章指出,多中心设计的难度高,需要基于业务的特性进行详细的分析和设计。最后,文章提出了一个思考题:为什么可以购买负载均衡和CDN服务,但却不能购买多机房和多中心服务?这引发了对于互联网架构设计的深度思考和讨论。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学架构》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(35)

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

    作者回复: 赞同

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

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

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

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

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

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

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

    作者回复: 正确👍

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

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

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

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

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

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

    2018-08-27
    2
    6
  • 凡凡
    多机房多中心,业务相关性太强,很难抽象绝对合适的模型,通用差。一般都是企业按照自己的特定业务,适当的做多中心,或者做到数据异地灾备,或者做到多中心服务。 或许,现在的云服务厂商,会逐渐面向行业,抽象出多种多中心方案,也是可能得。 毕竟云服务厂商在全球范围,已经有了很多机房,如果能抽象出来一定会做尝试的,不论用户多少,这是一种能力。

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

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

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

    2018-08-05
    5
收起评论
显示
设置
留言
35
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部