建议收藏 大型网站技术架构-入门梳理( 二 )

  • 应用服务器性能优化:主要手段有 缓存、集群、异步分布式缓存(网站性能优化第一定律:优化考虑使用缓存优化性能)异步操作(消息队列,削峰作用)使用集群代码优化多线程(设计为无状态,使用局部对象,并发访问资源使用锁)资源复用(单例,对象池)数据结构垃圾回收
  • 存储服务器性能优化机械硬盘 vs. 固态硬盘B+ 树 vs. LSM 树RAID vs. HDFS
  • 高可用
    • 高可用的网站架构:目的是保证服务器硬件故障时服务依然可用、数据依然保存并能够被访问,主要手段数据和服务的冗余备份及失效转移
    • 高可用的应用:显著特点是应用的无状态性通过负载均衡进行无状态服务的失效转移应用服务器集群的 Session 管理Session 复制Session 绑定利用 Cookie 记录 SessionSession 服务器
    • 高可用的服务:无状态的服务,可使用类似负载均衡的失效转移策略,此外还有如下策略分级管理超时设置异步调用服务降级幂等性设计
    • 高可用的数据:主要手段是数据备份和失效转移机制CAP 原理数据一致性(Consisitency)数据可用性(Availibility)分区耐受性(Partition Tolerance)数据备份冷备:缺点是不能保证数据最终一致和数据可用性热备:分为异步热备和同步热备失效转移:由以下三部分组成失效确认访问转移数据恢复
    • 高可用网站的软件质量保证网站发布自动化测试预发布验证代码控制主干开发、分支发布分支开发、主干发布自动化发布灰度发布
    • 网站运行监控监控数据采集用户行为日志采集(服务器端和客户端)服务器性能监控运行数据报告监控管理警报系统失效转移自动优雅降级
    伸缩性大型网站的“大型”是指:
    • 用户层面:大量用户及大量访问
    • 功能方面:功能庞杂,产品众多
    • 技术层面:网站需要部署大量的服务器
    伸缩性的分为如下几个方面
    • 网站架构的伸缩性设计不同功能进行物理分离实现伸缩纵向分离(分层后分离)横向分离(业务分割后分离)单一功能通过集群规模实现伸缩
    • 应用服务器集群的伸缩性设计HTTP 重定向负载均衡DNS 域名解析负载均衡反向代理负载均衡(在 HTTP 协议层面,应用层负载均衡)IP 负载均衡(在内核进程完成数据分发)数据链路层负载均衡(数据链路层修改 mac 地址,三角传输模式,LVS)负载均衡算法轮询(Round Robin, RR)加权轮询(Weighted Round Robin, WRR)随机(Random)最少链接(Least Connections)源地址散列(Source Hashing)
    • 分布式缓存集群的伸缩性设计Memcached 分布式缓存集群的访问模型Memcached 客户端(包括 API,路由算法,服务器列表,通信模块)Memcached 服务器集群Memcached 分布式缓存集群的伸缩性挑战分布式缓存的一致性 Hash 算法(一致性 Hash 环,虚拟层)
    • 数据存储服务集群的伸缩性设计关系数据库集群的伸缩性设计NoSQL 数据库的伸缩性设计
    可扩展系统架构设计层面的“开闭原则”
    • 构建可扩展的网站架构
    • 利用分布式消息队列降低耦合性事件驱动架构(Event Driven Architecture)分布式消息队列
    • 利用分布式服务打造可复用的业务平台Web Service 与企业级分布式服务大型网站分布式服务的特点分布式服务框架设计(Thrift, Dubbo)
    • 可扩展的数据结构(如 ColumnFamily 设计)
    • 利用开放平台建设网站生态圈
    安全XSS 攻击和 SQL 注入攻击是构成网站应用攻击最主要的两种手段,此外还包括 CSRF,Session 劫持等手段 。