`

大型网站技术架构 读书笔记

 
阅读更多
web 前端 优化

浏览器
  减少http请求  合并css js  图片
  浏览器缓存
    缓存更新 —  更新文件名
                         逐量更新  防止服务器压力突然增大
  启用压缩  gz
  页面渲染  css最上面  js最下面
  减少cookie    css js带cookie没意义   启用不同域名 这样请求静态资源就不会带上cookie


CDN加速  网络链路层优化


反向代理服务器  缓存



应用服务器
   分布式缓存  memcache
       缓存穿透   对取不到的值也缓存   防止攻击


磁盘
  机械磁盘  顺序读快   随机读慢
     数据库系统   2层索引B+树     3层
     Nosql   LSM树  N阶合并数  先操作内存中的树  超过阈值才与磁盘树合并


  RAID 廉价磁盘冗余列阵
   N块磁盘  
   RAID0   写入磁盘时  分成N份并发写入 读取, 读写快     无备份
   RAID1   同时写入2块磁盘  备份
   RAID10    RAID0  RAID1  结合  所有磁盘分成2份  并发写  同时备份
   RAID3  分成N-1份  写入N-1块磁盘  第N块记录效验数据  (第N块相当于备份所有数据)  N磁盘容易坏
   RAID5  和RAID3相似  但不是固定写入第N块  循环写入所有磁盘  备份数据平均分布到所有磁盘
   RAID6  和RAID5类似  但数据只写入N-2块磁盘  2块磁盘做备份 循环写


HDFS 服务器集群规模的备份


无状态服务
   session管理
      session复制    机器数量上去后   开销大
      session绑定stick     单点失败
      cookie 记录session     cookie大小限制  每次都要传输cookie  关闭cookie不正常
      session服务器       分布式缓存  数据库


服务 高可用
  分级管理       核心服务  非核心
  设置请求超时     请求会占用太长时间   占用连接资源
  异步调用  减少等待时间    有些业务没法异步 必须确认成功才能往下走
  服务降级  拒绝服务   关闭功能
  幂等设计    防止重复调用


高可用 数据 
   缓存高可用   缓存是不是必要  是提供缓存可用  还是  加强数据库

   CAP
    分区耐受性        P    数据不会丢失   分区
    可访问性           A    数据可用
    数据一致性       C    分区数据不一致
              数据强一致
              数据用户一致      分区不一致  但同一用户看的到一致
              数据最终一致


数据备份
    冷备   简单  廉价     不能保证数据最终一致     不能保证可用(恢复备份要花时间)

    热备    异步写入(一个写入就算成功)master slave   同步写入(全部写入才算成功)无主从



失效转移
   失效确认      心跳检测  访问失败报告
   访问转移
   数据恢复     恢复可用数据副本个数



软件质量保证
  网站发布       切掉流量  再部署     恢复流量
  自动化测试
  预发布验证  smoke test    外部用户无法访问      处理错误  fast failed
  vcs  
       主干开发 分支发布    主干反应整个应用状态   便于管理 控制 持续集成, 并行开发时, 发布周期不同,主干可能是半成品状态(一部分做完了,一部分没做完)
       分支开发 主干发布     分支独立  互不干扰
  自动化发布  train 模型
   灰度发布  用户测试  AB测试


运行监控
    用户行为日志收集
        服务器端日志   浏览器端js日志收集
    性能监控    CPU MEM IO
    运行数据报告    缓存命中率  响应时间   业务数据

监控管理
    系统报警
    失效转移
    自动优雅降级
   


  
伸缩性设计  scalability
    物理分离
       单一服务器-》数据库分离-》缓存分离-》静态资源分离

    分层分离
    业务分离


    单一功能服务器集群


服务器负载均衡
    http重定向负载均衡
    dns域名解析负载均衡
        Dns有缓存  生效要时间
        实践中作为第一级负载均衡
    反向代理负载均衡
        缺点  所有请求 响应的中转站   性能瓶颈
    IP负载均衡
         修改网络包IP地址
    数据链路层负载均衡
         修改mac地址,响应数据回去时不改IP不经过负载均衡服务器(进来时会经过) 代表产品 LVS

负载均衡算法
    轮询  round robin
    加权轮询  weighted round robin
    Random
    Least connections
    Source IP hashing



缓存服务器集群
    memcache
        客户端API hash 分布
         缺点 扩容的时候缓存需要重新计算offset 大部分会miss   解决办法 访问量少的时候扩容  模仿访问来预热缓存

   
    一致性hash算法
         有2的32次方个节点的环,集群服务器分布在环上,根据key算出对应的hash,看环上离此hash值最近的节点,放置数据。  当新加入服务器节点时,影响的只是一部分(key hash上次最近节点的数据),原有节点在环上分布越多,影响越少。
         缺点是新加入的节点只分散了离它最近服务器的压力,解决办法是把一个物理节点虚拟成N个节点,分布到环上。这样新加入的机器可以分担N个节点的压力
         通常使用二叉树查找


数据缓存服务器集群
    关系数据库
        主从读写分离
        业务数据分库(跨库不能join)
        数据多分片
            扩容时数据需要迁移,一致性,可访问性。 解决办法,每个mysql实例上有多个子表, 新加服务器时,对一部分子表做同步复制,复制完成后,修改路由

    invalid notification


    nosql
        hbase  由若干HRegion组成,每个HRegion存储一段key range的数据,当数据多时,key range分裂,分布到不同服务器做数据迁移



扩展性  extensibility
    开闭原则
    低耦合系统

    降低耦合的方式   分布式队列    分布式服务

    分布式队列
        事件驱动

    分布式服务
        巨无霸系统
            编译部署困难
            代码分支管理困难
            新增业务困难

        纵向拆分
             新业务为一个独立的web app
       横向拆分
             复用的业务拆分出来  部署为分布式服务

       分布式服务特点
           负载均衡
           失效转移
           高效远程通信
           对应用最少侵入
           版本管理
           实时监控
     



网站安全
    xss攻击   cross site script
        危险字符转义
    sql注入
        参数消毒, sql预编译和参数绑定
    csrf攻击  cross site request forgery
        token  页面请求参数中嵌入随机数, 服务器端验证随机数
        验证码
        referer check

    error code
    html注释
    文件上传执行
    路径遍历


web 应用防火墙
网站安全漏洞扫描
信息加密技术 密钥安全管理
    单向散列加密   md5 sha  加盐
    对称加密算法  DES  RC
    非对称加密   RSA  信息安全传输(公钥加密,私钥解密)  数字签名(私钥加密,公钥解密)


密钥安全管理
   密钥 算法  放在独立服务器
   解密算法在应用系统, 密钥在独立服务器


信息过滤 反垃圾
    文本匹配    trie算法   多级hash表   降噪处理
    分类算法   Bayes算法
    黑名单


电子商务风险控制
    账户风险    黑客盗用  恶意注册账号
    买家风险    恶意下单  抢购低价商品  欺诈退款
    卖家风险   虚假发货 炒作信用    侵权品
    交易风险   信用卡盗刷  支付欺诈


风控



分布式存储系统故障
    瞬时故障 - 网络不好,GC,线程忙,  可自行恢复
           自行重试
    临时故障 - 网卡松动,系统升级,停机维护,内存坏,cpu过热,   人工干预恢复
           读 - 路由到正常服务器, 写 - 临时存储服务器
    永久故障 - 硬盘损坏,数据丢失
            备份服务器做替换



秒杀系统架构
    设计部署专门的秒杀系统

     技术挑战
            现有业务的冲击,高并发下数据库负载,网络带宽增加,直接访问下单的url
            独立部署,            秒杀页面静态化,      临时租借带宽,CDN,        页面url加入随机数

             页面购买按钮变亮,静态化页面里加入js控制, 静态页面刷新会动态请求js(文件小)


              秒杀商品只有一个,保证只有一个用户买到。
                      放少量用户进入系统,其余直接显示秒杀结束页面





前端架构
    CDN  动静分离 图片服务  反向代理  DNS

应用层架构
    开发框架 页面渲染 负载均衡 session管理 动态页面静态化 业务拆分 虚拟化服务器

服务层架构
    分布式消息 分布式服务 分布式缓存 分布式配置

存储层架构
    分布式文件 关系数据库 nosql 数据同步

后台架构
    搜索引擎 数据仓库  推荐系统

数据采集与监控
    浏览器数据采集 服务器业务数据采集 服务器性能数据采集 系统监控 系统报警

安全架构
    web攻击 数据保护

数据中心机房架构
    机房架构 机柜架构 服务器架构
0
0
分享到:
评论

相关推荐

    《大型网站技术架构》读书笔记.pdf

    《大型网站技术架构》读书笔记思维导图,初始架构、服务数据分离、缓存改善性能、服务器集群化、数据库读写分离、反向代理CDN、分布式FS/DBS、NOSQL和搜索引擎、业务切分

    大型网站技术架构+读书笔记

    大型网站技术架构_核心原理与案例分析_李智慧 pdf

    大型网站技术架构笔记

    李智慧老师的大型网站技术架构的读书笔记

    大型网站技术架构:摘要与读书笔记.docx

    站在更高的维度做架构,来自一线互联网大厂的经验总结,少走弯路少踩坑,值得拥有。

    大型网站系统与Java中间件实践读书笔记(二)

    【大型网站系统与Java中间件实践读书笔记(二)】 大型网站系统是指处理海量数据、应对高并发访问、以及应对复杂业务逻辑的网络应用。在这些系统中,Java中间件扮演着关键角色,帮助实现系统的扩展性和高效运行。...

    大型分布式网站架构设计与实践.pdf

    文是学习大型分布式网站架构的技术总结。对架构一个高性能,高可用,可伸缩,可扩展的分布式网站进行了概要性描述,并给出一个架构参考。一部分为读书笔记,一部分是个人经验总结。对大型分布式网站架构有很好的参考...

    CCNA中文读书笔记

    【CCNA中文读书笔记】是一份详尽的网络技术学习资料,主要针对Cisco Certified Network Associate(CCNA)认证考试进行整理。这份笔记包含了CCNA学习的各个重要章节,旨在帮助学习者深入理解网络基础概念,熟悉Cisco...

    《架构师》读书笔记模板.pptx

    【架构师】读书笔记模板是针对《架构师》杂志202x年第7期的一份详细学习记录。这本书关注的是IT行业中与架构设计相关的热点问题、理论探讨以及技术趋势,特别是针对云原生、大数据分析和数据架构的变革。通过思维...

    计算机网络读书笔记

    根据给定的“计算机网络读书笔记”文件信息,以下是对其中一些关键知识点的详细解析: ### 计算机网络概述 计算机网络是通过通信设备和线路将地理位置分散、功能独立的多个计算机系统互联起来,以功能完善的网络...

    Springboot017学生读书笔记共享_论文.lw.doc

    《Springboot实现学生读书笔记共享平台》 在当今数字化时代,知识分享与交流的重要性日益凸显。...关键词:读书笔记共享平台,Java语言,Springboot框架,B/S架构,软件开发流程,用户交互,知识分享,资源管理。

    CCNA读书笔记红头发版

    通过以上内容可以看出,《CCNA读书笔记红头发版》详细介绍了网络互联的基础概念和技术,尤其是对于OSI参考模型的解释,为读者提供了深入理解网络工作原理的机会。这对于IT行业的学习者来说是非常宝贵的知识财富。

    SQL SEVER 2005 读书笔记

    ### SQL Server 2005 读书笔记 #### 一、SQL Server 2005 概览 **SQL Server 2005** 是微软公司发布的一款企业级数据库管理系统,它是在 SQL Server 2000 基础上的重大升级版本。此版本在性能、安全性、可管理性等...

    信息系统项目管理师读书笔记

    ### 信息系统项目管理师读书笔记 #### 一、项目整体管理 **项目整体管理**是信息系统项目管理的核心组成部分,它负责定义、标识、协调、整合项目管理的所有过程,确保项目达到预期的结果。主要包括以下几个关键...

    ASP.NET笔记

    这不仅简化了跨系统间的数据交换,还促进了微服务架构的发展。 #### 六、ASP.NET与数据库的集成 数据库是Web应用的重要组成部分,负责存储和管理数据。ASP.NET支持多种数据库系统,包括: - **Oracle**:作为业界...

    《人月神话》读书笔记_MF1632020_管登荣1

    在大型项目中,设立系统架构师的角色,将设计与实现分离,有助于实现这一目标。 最后,书中指出在系统设计中,应以用户需求为导向,避免技术驱动的设计,确保整个系统反映出单一而连贯的设计思路。这样不仅能够提升...

    Reading-Notes:读书笔记们

    学习笔记都在这里了 好好学习,天天向上!生命不息,阅读不止! 本仓库参考以下书籍或资料 JavaScript高级程序设计(第三版) ...大型网站技术架构核心原理与案例分析 锋利的jQuery JavaScript设计模式与开发实践

    j2ee开发全程的实录

    在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)是用于构建企业级应用程序的框架,它由Oracle公司提供并被广泛应用于大型分布式系统、Web应用和后端服务的开发。本实录将深入探讨J2EE开发的全过程,包括但...

    ORACLE我的深深的体会很不错的学习资料

    这份"ORACLE我的深深的体会很不错的学习资料"压缩包,显然包含了一些关于Oracle数据库的学习资源,可能是教程、笔记、实战案例或者问题解答,对于想要深入理解和掌握Oracle技术的人来说是一份宝贵的资料。...

    计算机基础知识及应用

    ### 计算机基础知识及应用...以上就是CCNA中文读书笔记第1章的主要内容总结,涵盖了互连网络的基础概念、关键技术以及OSI参考模型的详细介绍。通过对这些知识点的学习,有助于深入理解计算机网络的工作原理和技术细节。

Global site tag (gtag.js) - Google Analytics