大型网站技术架构小结


演化历程

图例可参考:

演化的价值观

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

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

误区

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

  • 为了技术而技术

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

架构模式 模式的关键在于模式的可重复性

  • 分层:横向切分

  • 分割:纵向切分

  • 分布式:分层和分割的主要目的是为了切分后的模块便于分布式部署。常用方案:

    • 分布式应用和服务

    • 分布式静态资源

    • 分布式数据和存储

    • 分布式计算

    • 分布式配置,分布式锁,分布式文件,等等

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

  • 缓存:将数据放距离计算最近的位置加快处理速度,改善性能第一手段,可以加快访问速度,减小后端负载压力。使用缓存 两个前提条件:1.数据访问热点不均衡;2.数据某时段内有效,不会很快过期

    • CDN

    • 反向代理

    • 本地缓存

    • 分布式缓存

    核心要素 架构是“最高层次的规划,难以改变的规定”。主要关注五个要素:

    • 性能

    • 可用性(Availability)

    • 伸缩性(Scalability)

    • 扩展性(Extensibility)

    • 安全性

    性能测试方法:

    • 性能测试

    • 负载测试

    • 压力测试

    • 稳定性测试

    性能优化,根据网站分层架构,可以分为三大类:

    • Web 前端性能优化

      • 保护网站安全

      • 通过配置缓存功能加速 Web 请求

      • 实现负载均衡

      • 减少 http 请求

      • 使用浏览器缓存

      • 启用压缩

      • CSS 放在页面最上面,Java 放在页面最下面

      • 减少 Cookie 传输

      • 浏览器访问优化

      • CDN 加速:本质是一个缓存,一般缓存静态资源

      • 反向代理

    • 应用服务器性能优化:主要手段有 缓存、集群、异步

      • 多线程(设计为无状态,使用局部对象,并发访问资源使用锁)

      • 资源复用(单例,对象池)

      • 数据结构

      • 垃圾回收

      • 分布式缓存(网站性能优化第一定律:优化考虑使用缓存优化性能)

      • 异步操作(消息队列,削峰作用)

      • 使用集群

      • 代码优化

    • 存储服务器性能优化

      • 机械硬盘 vs. 固态硬盘

      • B+ 树 vs. LSM 树

      • RAID vs. HDFS

      高可用

      • 高可用的网站架构:目的是保证服务器硬件故障时服务依然可用、数据依然保存并能够被访问,主要手段数据和服务的冗余备份及失效转移

      • 高可用的应用:显著特点是应用的无状态性

        • Session 复制

        • Session 绑定

        • 利用 Cookie 记录 Session

        • Session 服务器

        • 通过负载均衡进行无状态服务的失效转移

        • 应用服务器集群的 Session 管理

      • 高可用的服务:无状态的服务,可使用类似负载均衡的失效转移策略,此外还有如下策略

        • 分级管理

        • 超时设置

        • 异步调用

        • 服务降级

        • 幂等性设计

      • 高可用的数据:主要手段是数据备份和失效转移机制

        • 失效确认

        • 访问转移

        • 数据恢复

        • 冷备:缺点是不能保证数据最终一致和数据可用性

        • 热备:分为异步热备和同步热备

        • 数据一致性(Consisitency)

        • 数据可用性(Availibility)

        • 分区耐受性(Partition Tolerance)

        • CAP 原理

        • 数据备份

        • 失效转移:由以下三部分组成

      • 高可用网站的软件质量保证

        • 主干开发、分支发布

        • 分支开发、主干发布

        • 网站发布

        • 自动化测试

        • 预发布验证

        • 代码控制

        • 自动化发布

        • 灰度发布

      • 网站运行监控

        • 警报系统

        • 失效转移

        • 自动优雅降级

        • 用户行为日志采集(服务器端和客户端)

        • 服务器性能监控

        • 运行数据报告

        • 监控数据采集

        • 监控管理

        伸缩性 大型网站的“大型”是指:

        • 用户层面:大量用户及大量访问

        • 功能方面:功能庞杂,产品众多

        • 技术层面:网站需要部署大量的服务器

        伸缩性的分为如下几个方面

        • 网站架构的伸缩性设计

          • 纵向分离(分层后分离)

          • 横向分离(业务分割后分离)

          • 不同功能进行物理分离实现伸缩

          • 单一功能通过集群规模实现伸缩

        • 应用服务器集群的伸缩性设计

          • 轮询(Round Robin, RR)

          • 加权轮询(Weighted Round Robin, WRR)

          • 随机(Random)

          • 最少链接(Least Connections)

          • 源地址散列(Source Hashing)

          • HTTP 重定向负载均衡

          • DNS 域名解析负载均衡

          • 反向代理负载均衡(在 HTTP 协议层面,应用层负载均衡)

          • IP 负载均衡(在内核进程完成数据分发)

          • 数据链路层负载均衡(数据链路层修改 mac 地址,三角传输模式,LVS)

          • 负载均衡算法

        • 分布式缓存集群的伸缩性设计

          • Memcached 客户端(包括 API,路由算法,服务器列表,通信模块)

          • Memcached 服务器集群

          • Memcached 分布式缓存集群的访问模型

          • Memcached 分布式缓存集群的伸缩性挑战

          • 分布式缓存的一致性 Hash 算法(一致性 Hash 环,虚拟层)

        • 数据存储服务集群的伸缩性设计

          • 关系数据库集群的伸缩性设计

          • NoSQL 数据库的伸缩性设计

          可扩展 系统架构设计层面的“开闭原则”

          • 构建可扩展的网站架构

          • 利用分布式消息队列降低耦合性

            • 事件驱动架构(Event Driven Architecture)

            • 分布式消息队列

          • 利用分布式服务打造可复用的业务平台

            • Web Service 与企业级分布式服务

            • 大型网站分布式服务的特点

            • 分布式服务框架设计(Thrift, Dubbo)

          • 可扩展的数据结构(如 ColumnFamily 设计)

          • 利用开放平台建设网站生态圈

            安全 XSS 攻击和 SQL 注入攻击是构成网站应用攻击最主要的两种手段,此外还包括 CSRF,Session 劫持等手段。

            • 攻击与防御

              • Error Code

              • HTML 注释

              • 文件上传

              • 路径遍历

              • 表单 Token

              • 验证码

              • Referer Check

              • 避免被猜到数据库表结构信息

              • 消毒

              • 参数绑定

              • SQL 注入攻击

              • OS 注入攻击

              • 消毒(即对某些 html 危险字符转义)

              • HttpOnly

              • 反射型

              • 持久型

              • XSS 攻击:跨站点脚本攻击(Cross Site )

              • XSS 防御手段

              • 注入攻击

              • 注入防御

              • CSRF 攻击:跨站点请求伪造(Cross Site Request Forgery)

              • CSRF 防御:主要手段是识别请求者身份

              • 其他攻击和漏洞

              • Web 应用防火墙(ModSecurity)

              • 网站安全漏洞扫描

            • 信息过滤与反垃圾

              • 文本匹配

              • 分类算法

              • 黑名单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值