大型网站架构之大型网站架构模式

140 阅读4分钟

大型网站架构模式

什么是模式呢?(模式就是针对特定问题目前行业的解决方案)
模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的核心。借助模式我们可以减少很多重复的工作。

大型互联网公司在实践过程中提出了很多的解决方案,以实现网站高性能、高可用、 易伸缩、可扩展、安全等各种技术架构目标。

1.分层
将系统在横向维度上切分成几个部分,每个部分负责相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完成的系统。
在大型的网站架构中,通常分为:(分层本质上是逻辑上分层,但是结合一些技术可以实现在物理上更深层层次的分层)

  • 应用层:具体负责业务和视图展示,如网站首页及搜索输入和结果展示
  • 服务层:为应用层提供服务支持,如用户管理服务,购物车服务等
  • 数据层:提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等

分层这种模式大大提升了系统可扩展性、易维护性。

2.分割
分层是将软件在横向方面进行切分,那么分割就是在纵向方面对软件进行切分。
通常上根据业务进行分割,例如将购物、论坛、搜索 、广告分割成不同的应用,由独立的团队负责,部署在不同的服务器上。

3.分布式
某种意义上来说,分层和分割的一个主要目的是为了切分后的模块便于分布式部署,
即将不同的模块部署在不同的服务器上,通过远程调用协同工作。
在网站应用中,常用的分布式方案有:

  • 分布式应用和服务:将分层和分割后的应用和服务模块分布式部署。
  • 分布式静态资源:网站的静态资源如JS,CSS,图片资源等资源独立分布式部署,并采用独立的域名,即动静分离。
  • 分布式数据和存储:传统的关系数据库进行分布式或者Nosql数据库。
  • 分布式计算:使用诸如Hadoop以及MapReduce分布式计算框架进行此类批处理计算。

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

5.缓存
缓存就是将数据存放在距离计算最近的位置以加快处理速度。
通常有以下缓存:

  • CDN:部署在网络服务商,通常在这里缓存一些静态资源,如视频网站和门户网会将热点视频或热点内容缓存在CDN。
  • 反向代理:部署在网站的前端,用户的请求到达网站的数据中心时,最先会来到反向代理服务器,这里也会进行缓存。
  • 本地缓存:在应用服务器缓存着热点数据,避免频繁访问数据库。
  • 分布式缓存:将数据缓存在一个专门的分布式缓存集群中,应用程序通过网络通信访问缓存数据。

使用缓存通常要满足一下条件:
1.部分数据会被频繁访问
2.数据在某段时期内是有效的不会很快过期

6.异步
业务之间的消息传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段通过共享数据的方式异步执行进行协作。
异步的方式有多线程、消息队列等方式来实现。

7.冗余
为了保证网站会因为部分服务器宕机而导致不能对外提供服务,需要一定程度的服务器冗余运行,数据冗余备份。

8.自动化
在无人值守的情况下网站可以正常运行,一切都可以自动化是网站的理想状态。
这些自动化包括:
发布过程自动化、自动化代码管理、自动化测试、自动化安全检测、自动化部署
自动化监控、自动化报警、自动化失效转移、自动化失效恢复、自动化降级、自动化分配资源

9.安全
通过密码和手机验证码进行身份认证;登录、交易等操作对网络通信进行加密;
对敏感信息进行加密处理;访问是进行权限管理等等。

以新浪微博的架构为例

在这里插入图片描述

在这里插入图片描述