• 大型网站技术架构—核心原理与案例分析


    大型网站

    特点

    • 高并发,大流量
    • 高可用
    • 海量数据
    • 渐进式发展

    发展历程

    大型网站的发展随着业务需求渐进式变化。

    演化价值观

    业务发展是驱动大型网站技术发展的主要力量。伴随着业务的逐步发展,小网站慢慢演化为一个大型网站,而不可能从无到有搭建一个大型网站

    大型网站架构模式

    • 分层

      目的:分层架构便于将系统分开部署,分工合作开发和维护;便于调用可以复用的服务

    • 分割
      分割是纵向切分,按照网站的业务进行划分开来,将各模块包装成高内聚低耦合的单元。比如将网站业务划分为搜索,账户,登陆等。
      目的:便于开发和维护,不同模块之间不会干扰;便于模块的分布式部署,提高网站的并发能力和功能扩展能力。

    • 分布式
      分割分层的目的还是为了将系统切分后进行分布式部署。不同模块部署在不同服务器上,能够利用更多的计算机资源完成任务。

    问题:网络调用需要通过网络,影响性能;一台服务器宕机可能导致比无法提供服务,导致系统出现问题;数据的一致性问题。
    常用方案:分布式应用和服务;分布式静态资源;分布式数据和存储;分布式计算

    • 集群
      集群和分布式的区别在于集群里每台服务器不是相同的应用程序,有些应用经常要被访问,需要多台服务器分担响应的负担,通过负载均衡设备共同对外提供服务。
      目的:分担服务器负担,加快响应。

    • 缓存
      将数据存储在访问速度较快的节点上。
      实现方法:CDN,反向代理,本地缓存,分布式缓存;

    • 异步
      异步操作与同步区别在于调用其他方法之后,不需要等其返回结果,而直接执行下面的任务。
      目的:加快响应速度,消除并发高峰,提高系统可用性。但可能对业务流程造成影响。消息队列里的任务不一定能完成,但完成结果已经提前返回。

    • 冗余
      服务器冗余运行,数据库冗余备份(冷备份,热备份,灾备数据中心)。

    • 自动化
      自动化发布,自动化检测, 自动化测试,减少人为操作带来的失误、

    • 安全
      手机验证登陆,密码,验证码

    网站结构

    性能

    性能测试指标:响应时间,并发数量,负载能力,吞吐量,性能计数器(服务器或者操作系统的数据指标)
    性能测试方法:负载测试,压力测试,稳定性测试

    优化策略:环节分析(分析时延较长的环节),性能优化

    web前端性能优化

    1. 浏览器访问优化
      • 减少http请求。http无状态应用协议,通信链路连接建立成本较高。
      • 使用浏览器缓存。
      • 压缩
      • 减少Cookie传输
    2. CDN加速
    3. 反向代理
      保护服务器,在客户端和服务器端建立安全屏障。反向代理服务器上配置缓存服务,存储静态资源。

    应用服务器性能优化

    1. 缓存
      网站性能优化第一定律:优先考虑使用缓存优化性能。数据缓存建立在二八定律上,通常情况下80%的请求访问20%的数据。当出现 频繁修改数据,没有热点访问 缓存效率降低

    2. 分布式缓存架构

      • Jboss cache 互相同步
      • Memcached 不需要
    3. 异步操作
      使用消息队列实现操作异步化。当请求高峰期时,用户写入请求对数据库将造成巨大压力,造成响应缓慢。使用消息队列,用户请求发送后会立即得到反馈,请求进入消息队列后,由消费者进程读取消息执行相应的操作。以此实现异步操作。

    4. 集群

    5. 代码优化

      • 多线程处理多用户并发访问,每个用户请求用一个线程处理。原因:IO阻塞和多CPU,多线程可以最大限度使用CPU。

      • 资源复用减少开销大的系统资源的创建和销毁,数据库连接、网络通信连接、线程等。从编程角度分两种模式:单例模式和对象池。对象池复用对象实例,减少对象的创建以及资源消耗。

      • 数据结构 hash表加快数据的读写性能。

      • 垃圾回收机制 理解JVM中的垃圾回收机制,当内存中的对象失效后更快的收集,以释放内存。

    存储优化

    1. 机械硬盘 & 固态硬盘
      机械硬盘:马达驱动磁头臂,将磁头带到磁盘指定位置访问该位置数据,随机访问时效率低下,顺序访问时高。
      固态硬盘:可以快速随机访问,噪声、震动小。

    2. B+树 & LSM树

    3. RAID & HDFS
      RAID:数据分开并行写入多块磁盘中。
      HDFS:具有高度容错性的Hadoop分布式文件系统

    网站的高可用架构

    网站可用性度量和考核

    可用性度量:不可用时间描述,99%,全年有1%的时间不可用。
    可用性考核:对网站故障进行分类加权计算故障大小,故障时间*权重

    高可用的网站架构

    1. 硬件故障是常态,在保证硬件故障时服务仍然可用,数据依然保存能够被访问。
    2. 手段:数据和服务的冗余备份和失效转移。
    3. 高可用架构:网站结构分层,应用层、数据层、服务层。不同层部署在不同的集群上,同一层,可以再细粒度划分。
      • 应用层:使用负载均衡设备将一组服务器组成一个集群对外提供服务,当一台服务器不可用时候,从集群列表删除。保持集群整体的高可用。
      • 服务层:集群,应用层通过分布式服务调用框架访问服务层服务。
      • 数据层:冗余备份。

    高可用的应用

    1. 负载均衡实现无状态服务的失效转移
    2. 应用服务器集群的Session管理
      • session复制
      • session绑定
      • session服务器

    高可用的服务

    为各种业务提供基础公共服务。

    1. 分级管理 核心服务和应用使用更好的硬件
    2. 超时设置 服务响应超时时进行重试或者进行采用其他操作,防止继续占用系统资源
    3. 异步调用
    4. 服务降级 用户高并发访问某应用时候,可以拒绝不重要的服务或者关闭部分不重要的功能。
    5. 幂等性设计 应用调用服务如果成功,但是由于网络原因,应用没有得到及时响应,可能会重复调用,导致业务出现问题。比如转账。因此保证这些业务一次调用和多次调用的结果具有一致性。

    高可用的数据

    方法:冗余备份和失效转移

    1. 数据备份:
      • 热备份
        • 异步热备方式 异步写入从存储服务器
        • 同步热备方式 同步写入从存储服务器
      • 冷备份
    2. 失效转移
      步骤:失效确认,访问转移,数据恢复
      失效确认:心跳检测、应用程序访问失败报告。

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

    网站运行监控

    网站的伸缩性架构

    不改变网站的软硬件设计,仅仅通过改变部署的服务器的数量就扩大或者缩小网站的处理能力。

    1. 不同功能进行物理分离实现伸缩
    2. 单一功能通过集群规模实现伸缩

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

    1. HTTP重定向负载均衡。 评价:简单。负载均衡效果取决于重定向服务器的性能,并且客户端需要两次像服务器发送请求,性能较低。包括DNS域名解析实际上为三次发送请求。

    2. DNS域名解析负载均衡。评价:简单,省去了单独维护管理负载均衡服务器的麻烦,DNS服务器支持基于地理位置的域名解析,返回离用户最近的服务器的IP地址。缺点是DNS负载均衡的控制权在域名服务商,不易管理。通常DNS服务器作为第一层负载均衡服务器,返回的IP地址对应的服务器为第二层负载均衡服务器,而不是真正访问的服务器。

    3. 反向代理服务均衡。反向代理服务器作为负载均衡服务器,将访问请求分发到后面的web服务器。评价:优点简单,反向代理服务器和负载均衡服务器集成,缺点反向代理服务器可能成为性能瓶颈。

    4. IP负载均衡。修改访问的IP地址,请求包到达内网时修改IP地址,响应包出内网时改为原来的IP地址,对外透明。评价:优点部署简单,在内核进程中完成数据分发,性能较好。缺点响应包也需要经过负载均衡服务器,当有高并发访问时,负载均衡服务器出现瓶颈。

    5. 数据链路层负载均衡。

    6. 负载均衡算法
      轮询、加权轮询、随机、最少连接、原地址散列

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

    • 余数hash算法 无法实现伸缩
    • 一致性hash算法 可以实现伸缩,但不能完成绝对的负载均衡
    • 虚拟层上实现hash算法 能够基本实现负载均衡

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

    网站的可扩展架构

    网站的安全架构

    1. 攻击防御
      • XSS攻击 跨站点脚本攻击 反射型、持久性;诱使用户点击含有恶意脚本的链接,执行响应操作
      • CSRF攻击 跨站点请求伪造 ,伪造用户请求,诱使用户以合法身份进行非法操作
      • SQL注入
    2. 信息加密
      • 单向散列加密 密码保存
      • 对称加密
      • 非对称加密
      • 密钥管理 分布式存储密钥,将密钥切片分开存储。
    3. 信息过滤与反垃圾
      • 文本匹配 Trie树
      • 反垃圾 分类算法(贝叶斯等)
      • 黑名单 布隆过滤器
    4. 风险控制
      • 风险:买家,卖家,平台,交易四种风险。
      • 控制:规则引擎,统计模型

    网站技术架构图

  • 相关阅读:
    springboot 和 spring clould 的版本匹配问题
    行到水穷处,坐看云起时!
    转: 从单体应用 -> SOA--> 微服务 ,服务治理 [熔断,限流,降级,服务恢复,服务容错,监控等等]---> RPC ---> 下一代技术[Service Mesh]
    spring-boot自定义线程池
    千与千寻的内容抓手
    哲学三问
    简约的人生
    关于中间件整理
    此心光明,亦复何言!
    能容的下你身边比你优秀的人---是一种修行
  • 原文地址:https://www.cnblogs.com/a1225234/p/10449113.html
Copyright © 2020-2023  润新知