Introduction

  为了解决大型网站面临的高并发访问、海量数据处理、高可用运行等一系列问题与挑战,大型互联网公司在实践中提出了许多解决方案,以实现网站高性能、高可用、易伸缩、可扩展、安全等各种技术架构目标,逐渐形成饿大型网站架构模式。

大型网站架构模式

第二章节 网站架构模式

分层

  在横向维度上切分成几个部门,每个部分负责相对单一职责,然后通过上层对下层的依赖和调用组成一个完整的系统。

网站三层架构

  挑战:合理规划层次边界和接口,严格遵循分层架构的约束,禁止扩层次调用(应用层调用数据层)及逆向调用(数据层调用服务层,或者服务层调用应用层)。


分割

  在纵向方向对业务进行切分,将服务和数据等不同功能和服务分割开来,包装成高内聚低耦合的模块单元

  1. 有助于开发和维护
  2. 不同模块分布式部署,提高网站并发处理和功能扩展能力

分布式

  不同模块部署在不同服务器,通过远程调用协同工作。

  问题: 1. 网络通信 2. 宕机故障转移 3. 数据一致性 4. 开发管理维护困难

常用分布式方案: 1. 分布式应用和服务:将分层和分割后的应用和服务模块分布式部署 2. 分布式静态资源:js、css、图片等资源分布式部署 3. 分布式数据和存储 4. 分布式计算:Hadoop及MapReduce分布式计算框架


集群

  多台服务器部署相同应用构成一个集群,通过负载均衡设备共同提供服务。


缓存

  分类:

  1. CDN,内容分发网络–静态网站资源
  2. 反向代理
  3. 本地缓存
  4. 分布式缓存

  前提条件:

  1. 数据访问热点不均衡
  2. 数据在某个时间段内有效,不会很快过期,否则产生脏数据

异步

  业务之间的消息传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过共享数据的方式异步执行进行操作。

  1. 提供系统可用性
  2. 加快网站响应速度
  3. 消除并发访问高峰

冗余

自动化

  1. 自动化发布
  2. 自动化代码管理
  3. 自动化测试
  4. 自动化安全监测
  5. 自动化部署
  6. 自动化监控
  7. 自动化报警
  8. 自动化失效转移
  9. 自动化失效恢复
  10. 自动化降级
  11. 自动化分配资源

安全

  1. 密码+手机验证码进行身份验证
  2. 登陆、交易等通信户数加密
  3. 敏感数据加密
  4. XSS攻击、SQL注入
  5. 垃圾、敏感信息过滤等

小结

  好的设计绝不是模仿,不是生搬硬套摸个模式,而是对问题深刻理解之上的创造和创新。即使是‘微创新’,也是让人耳目一新的似曾相识。山寨与创新的最大区别不在于是否抄袭,是否模仿,而在于对问题和需求是否真正理解与把握。