写点什么

week4 代码重构 作业和学习总结

用户头像
杨斌
关注
发布于: 2020 年 11 月 15 日

作业一:

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。



答案:大型互联网应用系统使用了技术如下方案:分层、分割、分布式、集群、缓存、异步、冗余、自动化、安全等技术手段。主要解决互联网系统高性能,高可用,易扩展,可伸缩、安全等目标,被很多互联网应用重复使用的一些解决方案,这些解决方案是互联网软件系统的重要组成部分

分层

分层是企业应用常见的一种架构模式,将系统在横向维度上切分成几个部分、每个部分负责一部分相对比较单一的职责,然后通过上层对下层依赖和调用组成一个完整的系统。

如分成视图层、应用层、服务层、基础服务层、存储层分布在不同的服务器上,实现分布式集群架构

分割

分割就是在纵向防方面对软件进行切分

软件越大,功能越复杂,服务和数据处理的种类也越多,将这些不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,一方面有助于软件的开发和维护,另一方面,便于不同模式的分布式部署,提高网站的并发处理能力和功能扩展能力

如:电商网站:首页,搜索页,搜素结果页,商品详情页,购物车页、订单支付页

分布式

对于大型网站,分层和分割的一个主要目的是为了切分后的模块便于分布式部署,既将不同的模块部署在不同的服务器上,通过远程调用协同工作。分布式意味着解决同样的问题可以使用更多的计算机,计算机越多,cpu,内存,存储资源也越多,能够处理的并发访问和数据量就越大,如

  • ‍分布式应用和服务

  • ‍分布式静态资源

  • ‍分布式数据和存储

  • ‍分布式计算

集群

使用分布式虽然已经将分层分割后的模块独立部署,单是对于用户访问集中的模块,比如网站的首页,还是需要将独立部署的服务器集群化,既多台服务器部署相同的应用构成一个集群,通过负载均衡设备共同对外提供服务

缓存

缓存就是将数据存放在距离计算最近的位置以加速处理速度。缓存是改善软件性能的第一手段,现在cpu越来越快的一个重要因素就是使用了更多的缓存,在复杂的软件设计中,缓存几乎无处不在。大型网站架构设计很多方面都适用了缓存设计

  • CDN

  • ‍方向代理

  • ‍本地缓存

  • ‍远程缓存

异步

计算机软件发展的一个重要目标和驱动力量是降低软件耦合性。事物之间越少直接关联,那么就越少被彼此影响,越可以独立发展。大型网站架构中,系统解耦合的手段处理前面提到的分层、分割,分布式等手段,还有一个重要手段是异步,就是将一个业务操作分成多个阶段,每个阶段之间通过共享数据而不是直接调用的方法进行协作

  • ‍提高系统的可用性

  • ‍加快网站响应速度

  • ‍消除并发访问高峰

冗余

互联网应用需要7X24小时连续运行,但是服务器总是由可能出现故障,特别是服务器规模较大的时候,服务器宕机是必然事件。想要保证服务器宕机的情况下网站依然可以继续提供服务,数据不会丢失,就需要一定程度的服务器冗余运行,数据冗余备份

自动化

在无人值守的情况下运行,一切都可以自动化是网站的理想状态。目前互联网的自动化架构设计主要集中在运维方面。

安全

互联网的开放特性使得其从诞生起就面对巨大的安全挑战,网站在安全架构方面也积累了许多模式;通过密码和手机验证码进行身份认证;登陆、交易等操作需要对网络的通讯进行加密,网站服务器上存储的敏感数据如用户信息等也进行加密处理;为了防止机器人程序滥用网站资源供给网站,网站使用验证码进行设别;对于常见的用于攻击的XSS攻击、SQL注入,进行编码转换等相应处理;对于垃圾信息,敏感信息进行过滤;对转账交易等重要操作根据交易模式和交易信息进行风险控制

 

作业二:

根据当周学习情况,完成一篇学习总结

第4周 系统架构



4.1 系统架构:系统技术挑战与方案

互联网系统架构的挑战:

  • 高并发、大流量

  • 高可用

  • 海量数据

  • 用户分布广泛、网络情况复杂

  • 安全环境恶略

  • 需求快速变更、发布频繁:微服务架构

  • 渐进式发展

 

应对高并发的两个技术方向:

  • 垂直伸缩:增强单一服务器的能力

  • 达到某个程度后,增加计算能力需 要的更多的花费

  • 垂直伸缩有物理极限

  • 操作系统的设计或者应用程序自身 制约着垂直伸缩最多只能达到某个点

  • 水平伸缩:增加服务器提升计算能力

  • 水平伸缩是指通过增加服务器提升计算能力的一类架构方法

  • 水平伸缩被认为是伸缩性的圣杯,水平伸缩可以克服垂直伸缩带来的单位计算成本随计 算能力增加而迅速飙升的问题。

  • 另外,水平伸缩总是可以增加更多服务器,这样,就不会像垂直伸缩那样遭遇到单台服 务器的极限









4.2 分布式架构演化

互联网架构演化:

  • 单一应用服务器

  • 应用数据分离(第一阶段)

  • 使用缓存改善系统性能(第二阶段)

  • 使用应用服务器集群改善系统的并发处理能力(第三阶段)

  • 数据库读写分离(第四阶段),主从分离

  • 使用反向代理和CDN加速网络响应(第五阶段)

  • 使用分布式文件系统和分布式数据库(第六阶段)

  • 使用NoSQL和搜索引擎(第七阶段)

  • 业务拆分(第八阶段)

  • 微服务和中台化(第九阶段)

  • 大数据与智能化(第十阶段)

 

如下图:

单一应用服务器





应用数据分离(第一阶段)





使用缓存改善系统性能(第二阶段)





使用应用服务器集群改善系统的并发处理能力(第三阶段)





数据库读写分离(第四阶段),主从分离





使用反向代理和CDN加速网络响应(第五阶段)





使用分布式文件系统和分布式数据库(第六阶段)





使用NoSQL和搜索引擎(第七阶段)





业务拆分(第八阶段)





微服务和中台化(第九阶段)





大数据与智能化(第十阶段)





4.3 架构模式与要素

互联网架构模式

架构模式





分层





视图层、应用层、服务层、基础服务层、存储层分布在不同的服务器上,实现分布式集群架构

分割





电商网站:首页,搜索页,搜素结果页,商品详情页,购物车页、订单支付页

分布式





集群





缓存





异步





冗余





自动化





安全





互联网架构的核心要素

高性能





高可用





可伸缩





NoSQL数据库

可扩展





微服务架构

安全





一个典型的互联网架构





前端架构





网关以及应用架构





服务层架构





存储层架构





运维和安全





4.4 案例:维基百科技术架构





十几个人维护,全球第六大访问量

 

4.5 案例:淘宝业务发展及技术架构

 

taobao.pdf

 

4.6 案例:宅米网技术变迁

创业公司 CTO

大学校园 便利店

 

初始架构





假期进行了重构





3.0





数据多了之后,对数据的处理





团队





改造后团队





再次调整组织架构





  • 投产团队自驱动的闭环

  • 去完成目标而不是完成工作

  • 加班既不是目的也不是手段

  • 亡羊补牢,没事不要瞎折腾

  • 只有优秀的员工才能创建出优秀的企业

  • 为员工的成长买单

  • 先关注人、后关注事

  • 快乐工作



用户头像

杨斌

关注

还未添加个人签名 2020.03.17 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
总结很丰富,大赞
2020 年 11 月 16 日 18:27
回复
没有更多了
week4 代码重构 作业和学习总结