大型网站架构演进读书笔记

不了解的词汇

  1. 数据库提供主从热设备
  2. 数据库读写分离
  3. 解决数据访问速度的方式:1.反向代理,2.CDN

基本知识

大型网站演化发展

  1. 应用服务器和数据服务分离
  2. 使用缓存改善网站性能
  3. 使用应用服务器集群改善网站的并发处理能力
  4. 数据库读写分离
  5. 使用反向代理和CDN家属网站响应
  6. 使用分布式文件系统和分布式数据库系统
  7. 使用NoSQL和搜索引擎
  8. 业务拆分
    1. 将大型网站拆分成不同的产品线,分归不同的业务团队负责(首页,商铺,订单,买家,卖家)
  9. 分布式服务
    1. 业务划分的颗粒变小,业务化成在不同的服务器上,业务连接数据库的规模太大。解决方案:提取公共业务,独立部署。

大型网站架构模式

要点:山寨和创新的最大区别不在于是否抄袭,是否模仿,而在于对问题和需求是否真正理解与把握
实现网站

  1. 分层
    将网站软件系统分为应用层,服务层,数据层
    应用层(也可以分为:界面层,业务逻辑层):负责业务和视图展示,如网站首页,搜索输入,结果展示
    服务层(也可以分为:数据接口层,数据处理层):为应用层提供服务支持,如用户管理服务,购物车服务
    数据层:提供数据访问服务,如数据库,缓存,文件,搜索引擎
    注意点:禁止跨层次调用,逆向调用

  2. 分割
    将业务分割成小粒度,将不同功能和服务分割开来,包装成低内聚,高耦合单元

  3. 分布式
    分层和分割只是为了分布式,将不同模块部署在不同的机器上,通过远程调用协调工作。
    产生的问题: 分布式调用需要依赖网络,可能对性能造成影响。服务器越多,服务器宕机概率越大。数据很难保持一致性。开发管理复杂
    分布式方案:
    分布式应用和服务: 将分层和分割之后的模块分布式部署
    分布式静态资源:网站静态资源(JS,CSS,图片)等资源独立分布式部署(动静分离)
    分布式数据和存储:关系型数据库,NoSQL分布式部署
    分布表示计算:Hadoop,MapReduce分布式计算框架负责移动计算
    分布式配置:支持线上服务器实时更新
    分布式锁:实现并发和协同
    分布式文件:支持云存储

  4. 集群

    将业务访问高的同一个服务部署在多台服务器上,通过集群,提供更好的并发服务,即便某台服务器宕机也能提供服务,提高系统的可用性

  5. 缓存
    CDN
    反向代理
    本地缓存
    分布式缓存
    使用条件:1.数据访问热点不均衡,某些数据频繁访问的应该放在缓存中。2.数据在某个时间段内有效,不会很快过期。

  6. 异步
    服务器集群通过分布式消息队列实现异步

  7. 冗余
    服务器冗余运行,数据冗余备份,访问和负载很小的服务也必须部署在不同的服务器上构成集群。
    数据库处理定期备份,存档备份,冷备份,业务访问高时候,主从备份(热备份)。还要应对不可抗拒的网络完全瘫痪,对整个系统数据进行备份。

  8. 自动化
    发布自动化:自动化代码管理+自动化测试+自动化安全监测+自动化部署+自动化监测+自动化报警+自动化失效转移+自动化失效恢复+自动化降级+自动化分配资源

  9. 安全
    身份验证:密码/手机验证
    安全通信:加密
    脚本资源攻击:验证码
    防止XSS,SQL注入:编码转化
    垃圾信息,敏感信息:过滤
    交易转账:风险控制

分布式文件系统

分布式数据库系统

  1. 数据库的存储
  2. 数据库检索

数据访问速度的方式

  • 反向代理 VS CDN
    • 相同点
      • 缓存,提高访问速度,减轻后端服务器的负载压力
    • 不同点
      • 反向代理:部署在网站的中心机房,当用户请求到达中心机房后,首先访问的服务器是反向代理服务器,如果反向服务器中缓存用户请求资源,就将结果返回给用户
      • CDN:部署在网络提供商的机房,用户请求网站服务时,可以从最近的网络提供商机房获取数据

你可能感兴趣的:(大型网站架构演进读书笔记)