第四周总结
互联网系统面临的挑战
高并发,大流量
高可用,7x24小时不间断
海量数据的存储和管理
用户分布广泛,网络情况复杂
安全环境恶劣
需求快速变更,发布频繁
应对高并发挑战的两个方向
垂直伸缩:升级硬件和网络吞吐能力
优点:前期成本低,方案简单,直接提升硬件配置即可
缺点:达到某个临界点后成本快速上升,存在物理极限
水平伸缩:增加服务器
优点:克服了垂直伸缩到达某个临界点成本急剧上升的问题,并且几乎不存在极限
缺点:在系统设计阶段要考虑到水平伸缩遇到的问题,要能设计出容易扩展的架构,设计复杂度增加
互联网架构的演化
0阶段
应用服务器上面部署了应用程序,数据库,文件系统等,一台服务器包含了所有组件
1阶段
应用数据分离,应用程序,文件系统,数据库分别部署在不同的服务器上面
2阶段
使用缓存改善系统性能,包括本地缓存和远程分布式缓存
3阶段
使用应用服务器集群改善系统的并发能力
4阶段
数据库读写分离,提升数据库的并发能力
5阶段
使用反向代理和CDN等缓存技术加快网站访问响应速度,减少后端服务器的访问压力
6阶段
前面已经使用了缓存技术,没有命中缓存的请求到达后端服务器后,瓶颈主要是磁盘IO,也就是数据库和文件系统,在这一阶段主要是使用分布式文件系统和分布式数据库
7阶段
进一步减少对磁盘的访问,提升访问速度,使用搜索引擎和NoSql技术
8阶段
业务拆分,分布式应用
9阶段
微服务及中台化,将通用业务功能微服务化
10阶段
大数据与智能化,数据驱动
互联网架构模式与要素
架构模式
每一个模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的核心。
互联网架构模式就是试图去描述那些为解决互联网系统高性能、高可用、易扩展、可伸 缩、安全等目标,被很多互联网应用重复使用的一些解决方案,这些解决方案是互联网 软件系统的重要组成部分
分层
将系统在横向维度上切分成几个部分, 每个部分负责一部分相对比较单一的职责,然后通过上层对下层依赖和调用组成一个完 整的系统。
分割
如果说分层是将软件在横向方面进行切分,那么分割就是在纵向方面对软件进行切分
将这些不同的功能和服务分割开来,包装成高内聚低耦合的模块单元
分布式
分层和分割的一个主要目的是为了切分后的模块便于分布式部署,即将不同模块部署在不同的服务器上,通过远程调用协同工作。
分布式意味着解决同样的问题可以使用更多的计算机,计算机越多,CPU、内存、存储资源也就越多,能够处理的并发访问和数据量就越大
分布式具体有以下几个场景:
分布式应用和服务
分布式静态资
分布式数据和存储
分布式计算
集群
使用分布式虽然已经将分层和分割后的模块独立部署,但是对于用户访问集中的模块, 比如网站的首页,还需要将独立部署的服务器集群化,即多台服务器部署相同应用构成 一个集群,通过负载均衡设备共同对外提供服务。
缓存
缓存就是将数据存放在距离计算最近的位置以加快处理速度。缓存是改善软件性能的第一手段
缓存应用主要有以下几点:
CDN
反向代理
本地缓存
远程缓存
异步
是将一个业务操作分成多个阶段,每个阶段之间通过共享数据而不是直接调用的方法进行协作,降低软件耦合性。
异步带来的好处:
提高系统可用性
加快网站响应速度
消除并发访问高峰
冗余
互联网应用需要7×24小时连续运行,但是服务器总有可能会出现故障,特别是服务器规 模比较大的时候,服务器宕机是必然事件。要想保证在服务器宕机的情况下网站依然可 以继续服务,数据不会丢失,就需要一定程度的服务器冗余运行,数据冗余备份
自动化
在无人值守的情况下网站可以正常运行,一切都可以自动化是网站的理想状态。
安全
通过密码和手机校验码进行身份认证
登录、交易等操作需要对网络通讯进行加密,敏感数据加密
处理为了防止机器人程序滥用网络资源供给网站,网站使用验证码进行识别
对于常见的用于攻击网站的XSS攻击,SQL注入,进行编码转换等相应处理;
对于垃圾信息、敏感信息进行过滤;
对转账交易等重要操作根据交易模式和交易信息进行风险控制
核心要素
高可用
高可用设计的目标就 是当服务器宕机的时候,服务或者应用依然可用。
系统高可用的主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多 台服务器上互相备份,任何一台服务器宕机都不会影响应用的整体可用,也不会导致数据丢失
可伸缩
通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求
衡量架构伸缩性的主要标准就是是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器。加入新的服务器后是否可以提供和原来的服务器无差别的服务。集群中可容纳的总的服务器数量是否有限制
可扩展
扩展性架构直接关注系统的功能需求。
在系统增加新的业务产品时,对现有产品透明无影响,不需要任何改动或者很少改动既有业务功能就可以上线新产品。 不同产品之间是否很少耦合,一个产品改动对其他产品无影响,其他产品和功能不需要受牵连进行改动
可扩展架构的主要手段是事件驱动架构和分布式服务
安全
系统的安全架构就是保护系统不受恶意访问和攻击,保护网站的重要数据不被窃取
互联网技术
总体架构
前端架构
App及Web开发技术
浏览器及HTTP优化技术
CDN
动静分离
图片服务
反向代理
DNS
网关及应用层架构
网关架构
负载均衡
动态页面静态化
业务拆分
服务层架构
微服务框架
分布式消息队列
分布式缓存
分布式一致性(锁)服务
存储层架构
分布式文件
分布式关系数据库
NoSQL 数据库
后台架构
大数据平台
搜索引擎
推荐引擎
数据仓库
运维与安全
数据采集与展示
数据监控与报警
攻击与防护
数据加密与解密
评论