把书读薄:大型网站技术架构-核心原理与案例分析(第一篇 概述)

1.大型网站架构演化

诉求:高可用,高性能,易扩展,可伸缩,安全。

1.1大型网站软件系统的特点

  • 高并发,大流量;
  • 高可用;
  • 海量数据;
  • 用户分布广泛,网络情况复杂;
  • 安全环境恶劣;
  • 需求快速变更,发布频繁;
  • 渐进式发展;

1.2大型网站架构演化发展历程

大型网站的问题:庞大用户,高并发访问,海量数据。
目标:解决以上问题

1.2.1初级阶段的网站架构

一台机器满足需求:数据库,应用服务器,文件服务器。

1.2.2应用服务器与数据库服务器分离

按服务特性不同拆分为多个服务器:应用服务器(计算型:高配置cpu);数据库服务器(存储计算型型:大硬盘大内存);文件服务器(存储型:大硬盘)

1.2.3使用缓存改善性能

2/8定律:关注或解决核心数据的性能。
本地缓存和集中式缓存-单机缓存。

1.2.4使用应用服务器集群改善网站的并发处理

高并发和海量数据问题解决手段:集群。
路由:负载均衡。

1.2.5数据库读写分离

缓存穿透(命不中,过期)以及写操作。

1.2.6使用反向代理和cdn加速网站响应

原因:网络环境复杂,不同地区差别很大。
目标:加速和减小后端负载。
手段:反向代理和cdn。
本质或原理:缓存(反向代理:本地缓存;cdn:用户最近的远程缓存)。

1.2.7使用分布式文件系统和分布式数据库系统

分布式数据库是数据库拆分的最后手段(按业务分库)。

1.2.8使用nosql和搜索引擎

可伸缩,分布式,高性能。

1.2.9业务拆分

微服务化。

1.2.10分布式

微服务化。

1.3大型网站架构演化的价值观

网站价值:能做什么而不是怎么做。

1.3.1大型网站架构技术的核心价值是随网站所需灵活应对

1.3.2驱动大型网站技术发展的主要力量是网站的业务发展

1.4网站架构设计误区

1.4.1一味追随大公司的解决方案

1.4.2为技术而技术

1.4.3企图用技术解决所有问题

技术是用来解决业务问题,业务应该通过业务手段去解决。

2. 大型网站架构模式

模式:重复发生的问题及解决方案。

2.1网站架构模式

问题:高并发,海量数据,高可靠。
目标:高性能,高可用,易伸缩,可扩展,安全。
解决方案:即网站架构模式。

2.1.1分层

横向切分。

2.1.2分割

垂直切分。

2.1.3分布式

切分基础上,不同机器上部署。
分布式方案:

  • 分布式应用和服务:
    分层和分割后的应用分布式部署。
    好处:改善性能和并发,加快开发和发布速度,减少数据库连接耗尽,服务复用,业务可扩展。

  • 分布式静态资源:
    动静分离

  • 分布式数据和存储:
    读写分离,nosql
  • 分布式计算:
  • 分布式配置:
  • 分布式锁:
  • 分布式文件:

2.1.4集群

横向扩展,灾备,可用性。

2.1.5缓存

提高性能的主要手段,也是减轻数据库压力的主要手段。
条件:数据热点不均匀,数据一段时间内不会很快过期

  • 浏览器缓存
  • cdn
  • 反向代理
  • 本地缓存
  • 分布式缓存

2.1.6异步

软件发展一个目标和驱动力:松耦合。

松耦合手段:分层,分割,分布式,异步。

系统内线程间队列异步,系统间队列异步。

异步消息队列特性:

  • 提高消息可用性:缓存,调节生产者和消费者速度不一致。
  • 加快网站响应速度:异步
  • 消除并发访问高峰:同一

缺点:用户体验,业务流程改造。

2.1.7冗余

互备容灾。

2.1.8自动化

主要集中在发布运维。

自动化发布:

  • 自动化代码管理
  • 自动化测试
  • 自动化安全检测
  • 自动化部署

自动化运维:

  • 自动化监控
  • 自动化报警
  • 自动化失效转移
  • 自动化失效恢复
  • 自动化降级
  • 自动化分配资源

2.1.9安全

身份认证:密码和手机验证码
网络:通信加密
机器人:验证码
xss,sql注入:转义
垃圾信息,敏感信息:过滤
交易信息和行为:风险监控

2.2架构模式在新浪微博的应用

2.3小结

3. 大型网站核心架构要素

架构:最高层次的规划,难以改变的决定。

软件架构:有关软件整体结构与组件的抽象描述,用于指导大型系统各个方面的设计。

关注:功能需求,架构要素(性能,可用性,伸缩性,扩展性,安全)。

3.1性能

  • 浏览器:浏览器缓存,页面压缩,合理布局页面,减少cookie传输。动静分离
  • 网络:
    cdn
  • 网关:
    反向代理缓存
  • 应用服务器端:
    分布式缓存和本地缓存
  • 应用:
    异步消息
  • 部署:
    集群,分布式
  • 代码层:
    多线程,内存优化
  • 数据库层:
    连接池,索引,缓存,sql优化,分库,分表,容器多硬盘,读写分离,nosql

3.2可用性

高可用:7*24可用
手段:冗余
应用服务器:集群
数据库:双击多机互备
其他质量保证:预发布验证,自动化测试,自动化发布,灰度发布。
衡量标准:出问题时系统整体是否可用

3.3伸缩

集群中服务器数量的增减
服务器伸缩:
数据库伸缩:分区
缓存服务器伸缩:一致性hash环

3.4扩展性

主要指功能扩展
衡量标准:增加新业务不影响原有功能

手段:

  • 列表内容
    事件驱动:消息队列
  • 分布式服务:业务拆分和复用

3.5安全性

原因:公网公开
衡量标准:针对现存和潜在的各种攻击与窃密手段,是否有可靠的应对策略

3.6小结

性能,可用性,伸缩性,扩展性,安全性是网站架构的核心元素

猜你喜欢

转载自blog.csdn.net/yangspgao/article/details/78315681