第四周学习总结
互联网系统面临怎么样的挑战?
高并发、大流量
高可用
系统7*24小时不间断服务。大型互联网站的宕机事件通常会成为新闻焦点
海量数据
需要存储、管理海量数据
用户分布广泛、网络情况复杂
安全环境恶劣
需求快速变更、发布频繁
渐进式发展
为了应对高并发挑战的两个技术方向
垂直伸缩
通过升级硬件和网络吞吐能力可以实现垂直伸缩。由于不需要改变应用架构,所以通常被认为是最简单的短期伸缩方案。
通过使用RAID(独立冗余磁盘阵列)增加I/O吞吐能力
通过切换到SSD(固态硬盘)改善I/O访问速度
通过增加内存减少I/O操作
通过升级网络接口或者增加网络接口提高网络吞吐能力
更新服务器使用更多的处理器或者超线程
水平伸缩
水平伸缩是指通过增加服务器提升计算能力的一类架构方法。水平伸缩被认为是伸缩性的圣杯。水平伸缩可以克服垂直伸缩带来的单位成本计算随计算能力增加而迅速飙升的问题。另外,水平伸缩总是可以增加跟多服务器,这样,就不会像垂直伸缩那样遭遇单台服务器的极限。
互联网架构演化
架构演化第零阶段:最简单的互联网应用架构
架构演化第一阶段:应用数据分离
架构演化第二阶段:使用缓存改善系统性能
架构演化第三阶段:使用应用服务器集群改善系统并发处理能力
架构演化第四阶段:数据库读写分离
架构演化第五阶段:使用反向代理和CDN加速网站响应
架构演化第六阶段:使用分布式文件系统和分布式数据库系统
架构演化第七阶段:使用NoSQL和搜索引擎
架构演化第八阶段:业务拆分
架构演化第九阶段:微服务及中台化
架构演化第十阶段:大数据与智能化
互联网架构模式
架构模式
每一个模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的核心。这样,你就能一次又一次的使用该方案而不必做重复工作。
模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用。
互联网架构模式就是试图去描述那些为解决互联网系统高性能、高可用、可扩展、安全性等目标,而被很多互联网系统重复使用的一些解决方案,这些解决方案是互联网软件系统的重要组成部分。
分层、分割、分布式、集群、缓存、异步、冗余、自动化、安全。
基于上述的一些解决方案,如何衡量一个系统的架构设计?
高性能
性能是互联网的一个重要指标,除非是没得选择,否则用户无法忍受一个响应缓慢的应用。一个打开缓慢的应用会导致严重的用户流失,很多时候系统性能问题是系统架构升级的触发器。可以说性能是互联网架构设计的一个重要方面,任何架构设计方案都必须考虑可能会带来的性能问题。
也正是因为性能问题无处不在,所以优化网站性能的手段也非常多,从用户端到数据库,从代码到机房部署,影响用户请求的所有环节都可以进行性能优化。
高可用
因为互联网分布式系统使用的服务器硬件通常是普通的商用服务器,这些服务器的设计目标本身并不保证高可用,也就是说,很有可能会出现服务器硬件故障,也就是俗称的服务器宕机。大型互联网系统通常都会有上万台服务器,每天都必定会有一些服务器宕机,因此系统高可用架构设计的前提是必然会出现服务器宕机,而高可用设计的目标就是当服务器宕机的时候,服务或者应用依然可用。
系统高可用的主要手段是冗余,应用部署在多台服务器上同时提供服务,数据存储在多台服务器上互相备份,任何一台服务器宕机都不会影响应用的整体可用,也不会导致数据丢失。
可伸缩
大型互联网系统通过集群的方式将多台服务器组成一个整体共同提供服务。所谓伸缩性是指通过不断向集群中添加服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。
衡量架构伸缩性的主要标准就是是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器。加入新的服务器后是否可以提供和原来的服务器无差别的服务。集群中可容纳的总的服务器数量是否有限制。
可扩展
不同于其它架构要素主要关注非功能需求,扩展性架构直接关注系统的功能需求。互联网应用快速发展,功能不断扩展,如何设计系统的架构使其能够快速响应需求变化,是系统可扩展架构主要的目的。
衡量系统架构扩展性好坏的主要标准就是系统增加新的业务产品时,是否可以实现对现有产品透明无影响,不需要任何改动或者很少改动既有业务功能就可以上线新产品。不同产品之间是否很少有耦合,一个产品改动对其它产品无影响,其它产品和功能不需要受牵连进行改动。
可扩展架构的主要手段是事件驱动架构和分布式服务。
安全
互联网是开放的,任何人在任何地方都可以访问系统。系统的安全架构就是保护系统不受恶意访问和攻击,保护网站的重要数据不被窃取。
衡量系统安全架构的标准就是针对现存和潜在的各种攻击手段与窃密手段,是否有可靠的应对策略。
互联网架构技术一览
前端架构
App及Web开发技术
浏览器及HTTP优化技术
CDN
动静分离
图片服务
反向代理
DNS
网关及应用层架构
网关架构
负载均衡
动态页面静态化
业务拆分
服务层架构
微服务框架
分布式消息队列
分布式缓存
分布式一致性(锁)服务
存储层架构
分布式文件
分布式关系数据库
NoSQL数据库
后台架构
大数据平台
搜索引擎
推荐引擎
数据仓库
运维与安全
数据采集与展示
数据监控与报警
攻击与防护
数据加密与解密
评论