目录结构

    • 一、分布式架构的原理:
      • 1. 高并发,大流量
      • 2. 高可靠,高可用
      • 3. 海量数据存储
      • 4. 用户分布广,网络情况复杂
      • 5. 网络安全环境恶劣
      • 6. 需求变更频繁,版本迭代快
    • 二、大型网站的发展演变过程(淘宝)
      • 1. 原始阶段
      • 2. 应用服务和数据分离
      • 3. 加入缓存 提升网站访问速度
      • 4. 使用服务器集群避免单点故障
      • 5. 使用数据库集群
      • 6. 使用cdn加速网站响应
      • 7. 使用分布式文件系统
      • 8. 使用分布式搜索引擎
      • 9. 业务拆分
      • 10. 使用分布式框架解决服务治理问题

一、分布式架构的原理:

1. 高并发,大流量

google的日平均pv(35亿),page view,日平均独立访问(ip),3亿。qq/wx的最大在线用户数2019年春节8亿。

2. 高可靠,高可用

系统全年365天不间断运行。阿里云服务器提供99.9999%,一年不超过32秒的服务中断。

集群备份,异地容灾

3. 海量数据存储

facebook每天上传照片10亿张。腾讯每天8亿张。海量数据存储需要硬件和软件支持。(磁盘阵列,HDFS(mapreduce),分布式文件系统,TFS 阿里和腾讯自建的分布式文件系统。)

服务器的部署场景:

  • 本地部署 (自己建机房,自己买机房的配套设备,安全性高)
  • 公有云 (普通的中小型企业和普通用户)
  • 私有云(通过专线访问,安全性高于公有云)
  1. 入住酒店,房间就是公有云,弹性扩展,不需要自己维护。
  2. 租房相当于私有云,房间是专属你。
  3. 本地化部署。自己买房,自己装修,安全自己负责。

4. 用户分布广,网络情况复杂

用户分布在全世界,每个国家的网络情况不同。针对不同的网络,提供不同的服务。

5. 网络安全环境恶劣

互联网是开放性的,大型的知名网站每天都在遭受网络攻击。

6. 需求变更频繁,版本迭代快

用户达到5000W经过了多少时间(获客):

名称时间
电话75年
广播38年
电视13年
互联网4年
Facebook3年
Google+88天
王者荣耀24天

版本更新
好的系统不是设计出来的,是改出来的。

二、大型网站的发展演变过程(淘宝)

1. 原始阶段

淘宝网站诞生在马云家里,去国外买了一个电商网站(php+mysql),只有一台服务器。

2. 应用服务和数据分离

随着业务扩展,用户量上升,一台服务性能不够,需要把数据库和文件存储拆分。

3. 加入缓存 提升网站访问速度

在互联网有个规律,二八定律,经常访问的数据只占20%,80%的数据不经常访问,一般将20%的数据放入到缓存中。提高缓存的命中率。

4. 使用服务器集群避免单点故障


软件的负载均衡使用的是nginx
有钱的企业,购买硬件的负载均衡(F5)

5. 使用数据库集群


mycat实现数据库的读写分离,和分库分表

6. 使用cdn加速网站响应

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。

7. 使用分布式文件系统

文件服务器存在单点故障,并且存在容量限制
使用hdfs分布式文件系统,理论上没有容量限制,并且提供附件副本的备份。

8. 使用分布式搜索引擎

解决海量数据的快速搜索,例如淘宝的商品搜索,github的代码搜索,百度的新闻搜索,Lucene,slor,ES(elasctic search)

9. 业务拆分

之前的垂直架构项目,修改一个模块,整个项目需要重新打包部署,并且各个模块相互依赖。存在资源浪费。
每个业务独自建立一个工程,修改单个业务的时候,只需重新编译上线单独的服务器,对其他服务器不影响。

10. 使用分布式框架解决服务治理问题

上面的业务拆分,后果就是出现了一大堆的各种服务,没有一个人能够理清。