第四周
互联网应用的挑战
不同于企业应用,互联网应用在开放网络上,获得访问量本就是应用价值的一种体现,因此,互联网应用天然就要在不安全的互联网上处理大访问量。
高并发
高并发是互联网应用的天然属性,不是要设计一个高并发系统,是要设计一个能处理高并发的系统。一个成功的互联网应用当然有大量的访问和流量,然而同时成本要求尽可能利用资源,用相对少量的机器支撑起应用,所以互联网应用通常是个高并发的系统——需要应对高并发的系统。
高可用
可用性一般用几个 9 来衡量,意思是(计划内)可用(正常提供服务)时间对运行时间的占比,比如 3 个 9,代表 99.9%。
描述 N 个 9 可用性级别年度宕机时间基本可用性 2 个 999%87.6 小时较高可用性 3 个 999.9%8.8 小时故障自动恢复的可用性 4 个 999.99%53 分钟极高可用性 5 个 999.999%5 分钟
海量数据
大量访问自然导致海量数据,海量数据催生数据仓库,数据挖掘,大数据生态圈。
网络 QoS
互联网应用提供的服务可以遍及全球,而全球发展的不均衡也体现在互联网服务质量的不同。要提供(近似)一致的服务体验,导致需要建立多点数据中心,靠近用户提供服务。
安全
互联网是开放环境,数据传输容易被窃听和攻击,在公网上暴露服务的互联网企业容易受到恶意攻击,安全环境恶劣。
需求变化快,发布频繁
和传统个人/企业软件不同,互联网产品需要快速适应市场,满足用户需求,其产品迭代快,发布频繁。因此对架构在应对变更隔离,持续集成和持续发布等非功能方面有更高要求。
渐进式发展
成功的互联网应用大多是由小而大渐进发展的结果。小应用可以快速变更,更好的适应市场,而一开始就投资巨大的应用,往往会因脱离市场而失败。
伸缩性
按技术方向,为应对高并发可分为垂直伸缩(scale-up)和水平伸缩(scale-out)。
垂直伸缩是指不修改应用的前提下,通过更强大的硬件平台获得更好的性能和并发性。其优点是不必改造原有应用,可在短时间内换用更强大的硬件实现。缺点是,存在物理极限,并且在拐点后单位成本将激增。
水平伸缩是指将应用改造成可通过增加机器的数量而提高并发性的应用。其优点是理论上可以实现无限扩展,但缺点是需要改造应用,而且改造难度大,在拐点前收益小。
互联网应用架构的演化
按出现的先后顺序可以分为:
单体应用
数据分离(文件系统,数据库服务器)
分布式缓存
集群
数据库读写分离
反向代理和 CDN
分布式文件系统和分布式数据库
NoSQL 和搜索引擎
业务拆分
微服务和(服务,数据)中台
大数据和智能化
架构模式
互联网应用的架构模式有:
水平分层:最常见的 N(3/4)层架构,CRUD 程序员的一生所爱
垂直分割:对应用进行模块划分形成高内聚,低耦合的应用。由于分割的复杂性,所以从单体出发,随业务的发展而演变划分是更容易成功的途径。
分布式:将应用的模块拆解并分别部署。通过分离计算和 IO 密集的组件,使得每部分都能最大化使用率,进而提高整个应用的性能和并发性。
集群:通过部署多副本和前置负载均衡提供更高的聚合性能和并发。
缓存和异步:几乎是高并发应用的银弹!多数情况都可以使用这两种模式来改善应用的瓶颈。
架构目标
架构的目标是实现:
高并发:对大量访问和短时间超高流量能平滑应对
高性能:提供可接受的性能。缓慢的首页访问将导致大量客户流失
高可用:宕机时间少,自恢复,减少布署中的人工环节,有冗余应对故障(从内存,磁盘,到机房)
可伸缩:是指可以增加资源来增强系统。使用更强的硬件(scale-up)或是更多的硬件(scale-out)。
可扩展:指能快速实现变更,不断扩展功能。其主要手段是事件驱动和分布式服务。
安全:在开放的网络上实现安全访问,即防窃听,防篡改,防伪造和防抵赖
架构技术
前端架构
APP 及 Web 开放技术
HTTP 优化技术
CDN
DNS
动静分离
反向代理
网关和应用架构
网关架构
负载均衡
动态页面静态化
业务拆分
服务架构
微服务框架
分布式消息队列
分布式缓存
分布式一致性服务
存储架构
分布式文件系统
分布式数据库
NoSQL 数据库
NewSQL 数据库
后台架构
大数据平台(Hadoop,Spark,Flink)
搜索引擎
推荐引擎
数据仓库
运维与安全架构
数据采集与展示
数据监控与报警
攻击与防护
数据加密与解密
评论