第四周学习心得
1.系统架构概述:互联网系统面临怎样的挑战?
20年前,系统架构采用微软、oracle、ibm、用友、金蝶等提供的系统架构方案。20年前是银行、零售巨头的架构解决方案。
最近20年来厂商和解决方案发生很大变化。因为应用方式变化(面向互联网的应用)、另外google、百度、阿里提供了更适合互联网应用的架构解决方案、互联网系统和以前的系统面对的问题不同,解决方案不同。
高并发(用户越来越多、访问越多、处理的和存储的越多、对系统资源消耗带来更大挑战cpu/内存/硬盘等)、大流量。
互联网分布式系统的高并发、高性能、高可用其实不是并列的。
高可用:系统7*24小时不间断服务。程序升级、机器不可用(比如内存硬盘故障)、网络不可用、应用服务不可用,但是系统还是要可用的。
用户分布广泛、网络情况复杂、用户终端千差万别。
安全环境恶劣。传统的内部系统,系统应用环境相对安全。
需求快速变更、发布频繁。
渐进式发展。无法一开始规划好全部的功能和非功能需求。所有大型互联网都是从小网站渐进式发展过来的的。
2.互联网架构演化
架构演化第零阶段:最简单的互联网应用架构
架构演化第一阶段:应用数据分离
架构演化第二阶段:使用缓存改善系统性能
架构演化第三阶段:使用应用服务器集群改善系统的并发处理能力
架构演化第四阶段:数据库读写分离
架构演化第五阶段:使用反向代理和CDN 加速网站响应
架构演化第六阶段:使用分布式文件系统和分布式数据库系统
架构演化第七阶段:使用NoSQL 和搜索引擎
架构演化第八阶段:业务拆分
架构演化第九阶段:微服务及中台化
架构演化第十阶段大数据与智能化
3.互联网架构模式
每一个模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的核心。这样,你就能一次又一次的使用该方案而不必做重复工作。
模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用。互联网架构模式就是试图去描述那些为解决互联网系统高性能、高可用、易扩展、可伸缩、安全等目标,被很多互联网应用重复使用的一些解决方案,这些解决方案是互联网软件系统的重要组成部分。
4.互联网系统架构核心要素
4.1高性能
性能是互联网的一个重要指标,除非是没得选择,否则用户无法忍受一个响应缓慢的应用。一个打开缓慢应用会导致严重的用户流失,很多时候系统性能问题是系统架构升级优化的触发器。可以说性能是互联网系统架构设计的一个重要方面,任何架构设计方案都必须考虑可能会带来的性能问题。
也正是因为性能问题几乎无处不在,所以优化网站性能的手段也非常多,从用户端到数据库,从代码到机房部署,影响用户请求的所有环节都可以进行性能优化。
4.2高可用
因为互联网分布式系统使用的服务器硬件通常是普通的商用服务器,这些服务器的设计目标本身并不保证高可用,也就是说,很有可能会出现服务器硬件故障,也就是俗称的服务器宕机。大型互联网系统通常都会有上万台服务器,每天都必定会有一些服务器宕机,因此系统高可用架构设计的前提是必然会出现服务器宕机,而高可用设计的目标就是当服务器宕机的时候,服务或者应用依然可用。
系统高可用的主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份,任何一台服务器宕机都不会影响应用的整体可用,也不会导致数据丢失。
4.3可伸缩
大型互联网应用通过集群的方式将多台服务器组成一个整体共同提供服务。所谓伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。
衡量架构伸缩性的主要标准就是是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器。加入新的服务器后是否可以提供和原来的服务器无差别的服务。集群中可容纳的总的服务器数量是否有限制。
4.4可扩展
不同于其他架构要素主要关注非功能性需求,扩展性架构直接关注系统的功能需求。互联网应用快速发展,功能不断扩展,如何设计系统的架构使其能够快速响应需求变化,是系统可扩展架构主要的目的。
衡量系统架构扩展性好坏的主要标准就是在系统增加新的业务产品时,是否可以实现对现有产品透明无影响,不需要任何改动或者很少改动既有业务功能就可以上线新产品。不同产品之间是否很少耦合,一个产品改动对其他产品无影响,其他产品和功能不需要受牵连进行改动。
可扩展架构的主要手段是事件驱动架构和分布式服务。
4.5安全
互联网是开放的,任何人在任何地方都可以访问系统。系统的安全架构就是保护系统不受恶意访问和攻击,保护网站的重要数据不被窃取。
衡量系统安全架构的标准就是针对现存和潜在的各种攻击与窃密手段,是否有可靠的应对策略。
5.互联网架构技术一览
5.1前端架构
App 及Web 开发技术
浏览器及HTTP 优化技术
CDN
动静分离
图片服务
反向代理
DNS
5.2网关及应用层架构
•网关及应用层架构
• 网关架构
• 负载均衡
• 动态页面静态化
• 业务拆分
5.3服务层架构
微服务框架
分布式消息队列
分布式缓存
分布式一致性(锁)服务
5.4存储层架构
分布式文件
分布式关系数据库
NoSQL 数据库
5.5后台架构
大数据平台
搜索引擎
推荐引擎
数据仓库
5.6运维与安全
数据采集与展示
数据监控与报警
攻击与防护
数据加密与解密
评论