week4 代码重构 作业和学习总结
作业一:
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
答案:大型互联网应用系统使用了技术如下方案:分层、分割、分布式、集群、缓存、异步、冗余、自动化、安全等技术手段。主要解决互联网系统高性能,高可用,易扩展,可伸缩、安全等目标,被很多互联网应用重复使用的一些解决方案,这些解决方案是互联网软件系统的重要组成部分
分层
分层是企业应用常见的一种架构模式,将系统在横向维度上切分成几个部分、每个部分负责一部分相对比较单一的职责,然后通过上层对下层依赖和调用组成一个完整的系统。
如分成视图层、应用层、服务层、基础服务层、存储层分布在不同的服务器上,实现分布式集群架构
分割
分割就是在纵向防方面对软件进行切分
软件越大,功能越复杂,服务和数据处理的种类也越多,将这些不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,一方面有助于软件的开发和维护,另一方面,便于不同模式的分布式部署,提高网站的并发处理能力和功能扩展能力
如:电商网站:首页,搜索页,搜素结果页,商品详情页,购物车页、订单支付页
分布式
对于大型网站,分层和分割的一个主要目的是为了切分后的模块便于分布式部署,既将不同的模块部署在不同的服务器上,通过远程调用协同工作。分布式意味着解决同样的问题可以使用更多的计算机,计算机越多,cpu,内存,存储资源也越多,能够处理的并发访问和数据量就越大,如
分布式应用和服务
分布式静态资源
分布式数据和存储
分布式计算
集群
使用分布式虽然已经将分层分割后的模块独立部署,单是对于用户访问集中的模块,比如网站的首页,还是需要将独立部署的服务器集群化,既多台服务器部署相同的应用构成一个集群,通过负载均衡设备共同对外提供服务
缓存
缓存就是将数据存放在距离计算最近的位置以加速处理速度。缓存是改善软件性能的第一手段,现在cpu越来越快的一个重要因素就是使用了更多的缓存,在复杂的软件设计中,缓存几乎无处不在。大型网站架构设计很多方面都适用了缓存设计
CDN
方向代理
本地缓存
远程缓存
异步
计算机软件发展的一个重要目标和驱动力量是降低软件耦合性。事物之间越少直接关联,那么就越少被彼此影响,越可以独立发展。大型网站架构中,系统解耦合的手段处理前面提到的分层、分割,分布式等手段,还有一个重要手段是异步,就是将一个业务操作分成多个阶段,每个阶段之间通过共享数据而不是直接调用的方法进行协作
提高系统的可用性
加快网站响应速度
消除并发访问高峰
冗余
互联网应用需要7X24小时连续运行,但是服务器总是由可能出现故障,特别是服务器规模较大的时候,服务器宕机是必然事件。想要保证服务器宕机的情况下网站依然可以继续提供服务,数据不会丢失,就需要一定程度的服务器冗余运行,数据冗余备份
自动化
在无人值守的情况下运行,一切都可以自动化是网站的理想状态。目前互联网的自动化架构设计主要集中在运维方面。
安全
互联网的开放特性使得其从诞生起就面对巨大的安全挑战,网站在安全架构方面也积累了许多模式;通过密码和手机验证码进行身份认证;登陆、交易等操作需要对网络的通讯进行加密,网站服务器上存储的敏感数据如用户信息等也进行加密处理;为了防止机器人程序滥用网站资源供给网站,网站使用验证码进行设别;对于常见的用于攻击的XSS攻击、SQL注入,进行编码转换等相应处理;对于垃圾信息,敏感信息进行过滤;对转账交易等重要操作根据交易模式和交易信息进行风险控制
作业二:
根据当周学习情况,完成一篇学习总结
第4周 系统架构
4.1 系统架构:系统技术挑战与方案
互联网系统架构的挑战:
高并发、大流量
高可用
海量数据
用户分布广泛、网络情况复杂
安全环境恶略
需求快速变更、发布频繁:微服务架构
渐进式发展
应对高并发的两个技术方向:
垂直伸缩:增强单一服务器的能力
达到某个程度后,增加计算能力需 要的更多的花费
垂直伸缩有物理极限
操作系统的设计或者应用程序自身 制约着垂直伸缩最多只能达到某个点
水平伸缩:增加服务器提升计算能力
水平伸缩是指通过增加服务器提升计算能力的一类架构方法
水平伸缩被认为是伸缩性的圣杯,水平伸缩可以克服垂直伸缩带来的单位计算成本随计 算能力增加而迅速飙升的问题。
另外,水平伸缩总是可以增加更多服务器,这样,就不会像垂直伸缩那样遭遇到单台服 务器的极限
4.2 分布式架构演化
互联网架构演化:
单一应用服务器
应用数据分离(第一阶段)
使用缓存改善系统性能(第二阶段)
使用应用服务器集群改善系统的并发处理能力(第三阶段)
数据库读写分离(第四阶段),主从分离
使用反向代理和CDN加速网络响应(第五阶段)
使用分布式文件系统和分布式数据库(第六阶段)
使用NoSQL和搜索引擎(第七阶段)
业务拆分(第八阶段)
微服务和中台化(第九阶段)
大数据与智能化(第十阶段)
如下图:
单一应用服务器
应用数据分离(第一阶段)
使用缓存改善系统性能(第二阶段)
使用应用服务器集群改善系统的并发处理能力(第三阶段)
数据库读写分离(第四阶段),主从分离
使用反向代理和CDN加速网络响应(第五阶段)
使用分布式文件系统和分布式数据库(第六阶段)
使用NoSQL和搜索引擎(第七阶段)
业务拆分(第八阶段)
微服务和中台化(第九阶段)
大数据与智能化(第十阶段)
4.3 架构模式与要素
互联网架构模式
架构模式
分层
视图层、应用层、服务层、基础服务层、存储层分布在不同的服务器上,实现分布式集群架构
分割
电商网站:首页,搜索页,搜素结果页,商品详情页,购物车页、订单支付页
分布式
集群
缓存
异步
冗余
自动化
安全
互联网架构的核心要素
高性能
高可用
可伸缩
NoSQL数据库
可扩展
微服务架构
安全
一个典型的互联网架构
前端架构
网关以及应用架构
服务层架构
存储层架构
运维和安全
4.4 案例:维基百科技术架构
十几个人维护,全球第六大访问量
4.5 案例:淘宝业务发展及技术架构
4.6 案例:宅米网技术变迁
创业公司 CTO
大学校园 便利店
初始架构
假期进行了重构
3.0
数据多了之后,对数据的处理
团队
改造后团队
再次调整组织架构
投产团队自驱动的闭环
去完成目标而不是完成工作
加班既不是目的也不是手段
亡羊补牢,没事不要瞎折腾
只有优秀的员工才能创建出优秀的企业
为员工的成长买单
先关注人、后关注事
快乐工作
评论 (1 条评论)