《大型网站技术架构_核心原理与案例分析》阅读笔记02

网站架构模式:

1.分层

分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。大型网站架构中采用分层结构,将网站软件系统分为应用层、服务层和数据层,通过分层,可以更好地将一个庞大的软件系统切分成不同的部分,便于分工合作开发和维护;各层之间具有一定的独立性,只要维持调用接口不变,各层可以根据具体问题独立演化发展而不需要其他层必须做出相应调整。

 

分层这块,MVC设计模式应该最显著的一个例子,之前学过的JavaBean、Srevlet、JSP技术正是最好的体现。

2.分割

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

3.分布式

对于大型网站,分层和分割的-一个主要目的是为了切分后的模块便于分布式部署,即将不同模块部署在不同的服务器上,通过远程调用协同工作。分布式意味着可以使用更多的计算机完成同样的功能,计算机越多,CPU、内存、存储资源也就越多,能够处理的并发访问和数据量就越大,进而能够为更多的用户提供服务。分布式必须通过网络,可能会对性能造成比较严重的影响,服务器越多,宕机的可能性就越大,会导致网站的可用性降低,在分布式中保持数据一致性也非常困难。分布式方案有以下几种:分布式应用和服务,分布式静态资源,分布式数据和存储,以及分布式计算。

4.集群

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

5.缓存

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

6.异步

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

在网站架构的过程中使用异步消息队列,可以提高系统的可用性,加快网站响应速度,消除并发访问高峰,但是使用异步方式处理业务可能会对用户体验、业务流程造成影响,需要网站产品设计方面的支持。

7.冗余

网站需要7x24小时连续运行,但是服务器随时可能出现故障,特别是服务器规模比较大时,出现某台服务器宕机是必然事件。要想保证在服务器宕机的情况下网站依然可以继续服务,不丢失数据,就需要一定程度的服务器冗余运行,数据冗余备份,这样当某台服务器宕机时,可以将其上的服务和数据访问转移到其他机器上。

8.自动化

目前大型网站的自动化架构设计主要集中在发布运维方面,测试过程中用的越来越多,python自动化测试等在测试方面提供很大的便捷,提高了软件测试效率和准确性。在运维的过程中,也可以通过线上的自动化监控,对服务器进行心跳检测,并监控其各项性能指标和应用程序的关键数据指标,若发现异常、超出预设的阈值,就进行自动化报警。

9.安全

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

posted @ 2020-04-12 16:04  枫黎  阅读(99)  评论(0编辑  收藏  举报