天天看点

1.大型网站架构的演化

大型互联网系统的特点

高并发,发流量:面对大量并发用户

高可用:7 * 24 小时不间断服务

海量数据:需要存储,管理海量数据

用户分布广泛,网络情况复杂:运营商通信可能困难,网络地域网络情况不同,国际网络延迟

安全问题:被攻击,信息泄露

渐进式发展:网站都是从无到有,从小到大发展起来的,不要刻意为了 大型网站架构而设计大型网站架构,所有的系统升级都是为了业务,业务一定,追求稳定,只有业务需要发生改变,才做出改变

  1. 初始阶段网络架构:应用程序、文件、数据库存在一台服务器上
  2. 应用服务和数据服务分离:应用程序、文件、数据库 存在不同服务器上
  3. 增加缓存:网站内容访问遵循 二八定律,因此,将经常访问的数据放在缓存里,增加缓存
  4. 搭建应用程序集群:将应用程序 搭建成集群结构的,就是将应用程序原封不动拷贝到多个服务器上,使用 负载均衡服务器 调节
  5. 数据库读写分离:缓存存在 不命中、缓存过期的情况,那么用户多了,数据库就有压力,因此,使用 数据库主从 进行读写分离
  6. 使用反向代理和CDN

    反向代理的使用:将一些静态的页面或者资源放在反向代理服务器(一般是中心机房)上,用户访问的时候就不用转发请求到 应用程序服务器,直接将静态资源返回给用户

    CDN:由于用户一般是先和运营商交互,因此,企业可以将一些不经常改变的静态资源放在运营商服务器上,这样就不要再请求 企业服务器了

  7. 分布式文件系统和分布式数据库系统

    分布式文件系统:单一服务器无法满足需求

    分布式数据库系统:

    一般情况,数据库拆分的依据是不同的业务,也就是说,不同的业务才会拆分数据库。

    只有当数据单表太大,才使用分布式数据库

  8. 使用 NoSql和搜索引擎

    当对数据存储和数据检索的需求复杂时,

    需要使用非关系型数据库

    非数据库查询技术,例如搜索引擎

  9. 业务拆分:将不同业务拆分(例如:购物、商铺、订单……),分别放在不同服务器,通过使用 消息队列转发消息
  10. 分布式服务:将业务拆分独立部署,同时,将相同的业务,或者是相同的代码块拿出来复用,复用的业务再装入到一个服务器中,让这个复用的服务器来与数据库、缓存、搜索引擎等等来交互

云计算:

大型网站,例如阿里、华为、腾讯 等等公司的技术相对成熟,无论是安全性还是稳定性,他们已经做好了一些架构,普通的小型网站只需要付钱,使用他们做好的架构即可,如果想有更高的性能,只需要付更多的钱。

网站架构设计的问题:

网站都是从无到有,从小到大做起的

驱动网站发展的动力,是 业务,而不是为了更新的技术,不是为了使用更新的技术

小型网站不要追求大网站的解决方案,适合自己才是最好的

不要为了技术而技术,技术是为了业务而产生的,业务的提出也产生了更好的技术

不要一味用技术来解决所有问题,问题不一定都是技术不够新而产生的,例如 安全问题,可能是业务的问题,不要一味使用新框架来解决

继续阅读