架构师第四课总结
一、互联网系统面临哪些挑战
高并发,大流量
高可用
海量数据
用户分布广泛,网络情况复杂
安全环境恶劣
需求快速变更,发布频繁
渐进式发展
二、如何应对这些挑战
2.1 垂直伸缩
通过升级硬件和网络吞吐能力可以实现垂直伸缩。优点是不需要改变应用架构,所以通常被认为是最简单方案。
缺点是达到某个程度后,增加计算能力需要的更多的花费。有物理极限,操作系统的设计或者应用程序自身制约着最多只能达到某个点。
2.2 水平伸缩
水平伸缩是指通过增加服务器提升计算能力的一类架构方法。水平伸缩可以克服垂直伸缩的缺点。
三、互联网架构演化
3.1 最简单的互联网架构
只有应用程序和数据库和文件服务器,并且都部署在一台服务器上。
3.2 应用数据分离
应用程序、数据库,文件服务器部署在不同的服务器上。
3.3 使用缓存
应用程序增加本地缓存和分布式缓存来提高性能,较少对数据库的访问。
3.4 应用服务器集群
应用程序服务器是是一个集群,应用程序之上要有负载均衡服务来选择请求走哪个应用服务器。
3.5 数据库读写分离
数据库做读写分离
3.6 使用反向代理和CDN加速网站访问
使用CDN加速用户访问,CDN离用户进,访问速度快。
3.7 使用分布式文件系统和分布式数据库系统
使用分布式文件系统和分布式数据库
3.8 使用Nosql和搜索引擎
不用的业务类型选择不同的存储
3.9 业务拆分
对业务进行拆分
3.10 微服务和中台化
微服务拆分,提炼公共服务。
3.11 大数据与智能化
建立大数据,数据驱动开发。
四、互联网架构模式
4.1 分层
将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层依赖和调用组成一个完整的系统。
4.2 分割
分割是纵向方面对软件进行切分。
4.3 分布式
将不同模块部署在不同的服务器上,通过远程调用协同工作。
分布式应用和服务,分布式静态资源,分布式数据和存储,分布式计算。
4.4 集群
多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。
4.5 缓存
缓存是将数据存放在距离计算最近的位置以加快处理速度。CDN,方向代理,本地缓存,远程缓存
4.6 异步
将一个业务操作分成多个阶段,每个阶段之间通过共享数据而不是直接调用的方法进行协作。
提高系统的可用性
加快网站响应速度
消除并发访问高峰
4.7 冗余
需要一定程度的服务器冗余运行,数据冗余备份。
4.8 自动化
一切都可以自动化是网站的理想状态。
4.9 安全
对于网站的XSS攻击,SQL注入进行编码转化等相应处理,对于垃圾信息,敏感信息进行过滤,对于转账交易等重要操作根据交易模式和交易信息进行风险控制。
五、如何衡量一个系统架构设计
5.1 高性能
性能是互联网的一个重要指标。性能问题是系统架构升级优化的触发器。任何架构设计方案都必须考虑可能会带来的性能问题。性能问题几乎无处不在,优化网站的性能的手段也非常多,从用户端到数据库,从代码到机房部署,影响用户请求的所有环节都可以进行性能优化。
5.2 高可用
高可用设计的目标就是当服务宕机的时候,服务或者应用依然可用。系统高可用主要的手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份,任何一台服务器宕机都不会影响应用的整体可用,也不会导致数据丢失。
5.3 可伸缩
可伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问的压力和不断增长的数据存储需求(这里除了着增加服务器还有在空闲时减少服务器,节约成本)。
主要标准是,是够可以用多台服务器构建集群,是否容易向集群中增加新的服务器。加入新的服务器后是够可以提供和原来的服务器无差别的武器。集群中可容纳的总的服务器数量是否有限制。
5.4 可扩展
系统增加新的业务产品时,是否可以实现对现有产品透明无影响,不需要任何改动或者很少的改动既有业务功能就可以上线新产品。不同产品之间是否很少耦合,一个产品改动对其他产品无影响。
可扩展架构的主要手段是事件驱动架构和分布式服务。
5.5 安全
互联网是开放的,任何人在任何地方都可以访问的系统。系统的安全架构就是保护系统不受恶意访问和攻击,保护网站的中药数据不被窃取。
衡量系统安全架构的标准就是针对现存和潜在的各种攻击与窃密手段,是否有可靠的应对策略。
评论