Java基础、中级、高级、架构面试资料

B/S架构网站的web设计变迁史

业余杂谈 herman 2924浏览 0评论
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

web开发变迁

  1. 静态站点

    • 只包含一些静态页面,内容形式主要是html
    • 用户自己手工上传内容(如:rsync)
    • 一个http服务器(如:apache httpd、nginx)
    • 页面比较小
  2. 简单动态化站点

    • 提供一些cgi脚本,做一些动态内容展示(如:获取当前时间)
    • 页面比较小
  3. 复杂动态站点

    • 采用高级语言渲染页面,提供比较丰富的页面内容
    • 页面比较大
  4. 集中数据管理

    • 统一管理网站的数据、用户提交的数据

web部署变迁

  1. 单机部署

    • http服务器,纯静态内容
    • http服务器+cgi,cgi站点
    • http服务器+php,脚本站点
    • http服务器+proxy+动态内容生成服务器(servlet服务器,nodejs),动态内容站点
    • http服务器+proxy+动态内容生成服务器+db,动态内容站点,数据db存储
  2. 多机部署:解决单机性能瓶颈

    • 负载均衡

      • http重定向:暴露入口URL,该URL根据不同请求过来返回不同的具体内容地址

        • 引入问题

          • 性能差:两次请求才能真实拿到内容
          • 体验差:用户感知页面跳转
      • 反向代理(七层负载均衡):暴露代理服务器,接受请求并将请求转发给web服务器,服务器处理完返回给代理服务器,代理服务器将结果返回给用户; - 优点

        • 性能比http重定向好
        • 用户无感知

          • 引入问题
        • 同一个请求可能分发到不同的web服务器

          • 一致性路由:采用cookie定位
          • 集中式共享数据:如session、data
        • 代理服务器单点依赖
      • ip负载均衡(四层负载均衡):LVS通过规则修改用户请求包的来源和目标ip地址和端口转发给web服务器,webv服务器将请求处理完后将包返回给LVS,LVS重新修改包的返回ip和端口返回给用户,形式有以下几种:LVS-NAT、LVS-RD(直接路由)、LVS-TUN(IP隧道) - 优点

        • 性能比反向代理好

          • 引入问题
        • 同反向代理
      • DNS负载:一个域名配置多个ip地址,通过dns做到负载均衡

        • 优点

          • 简单
          • 性能好
        • 不足

          • 路由规则无法定义
          • DNS生效延长,依赖外部
      • DNS/GSLB负载均衡:部署一个Local DNS(LDNS),该LDNS去获取具体的DNS地址返回给用户,用户去请求该DNS的内容,一般用在静态内容分发上

        • 优点

          • 性能好
          • 支持路由策略
        • 不足

          • 搭建、维护成本高
  3. 异地部署:解决区域访问性能问题

    • 单中心,多区域:
    • 双中心,多区域
    • 对等部署
  4. 全球部署:解决全球访问性能问题 基本同3,需要关注国家政策问题带来的部署影响


web缓存机制

  • 数据库缓存机制

    • 内部缓存(mysql)

      • 索引
      • 数据库连接线程池缓存
      • Innodb缓存
    • 分库分表分区,解决单表性能问题
    • 多机部署,解决单机性能问题

      • 主从部署
      • 读写分离部署
      • 主主互备部署
    • 数据同步,解决数据一致性问题

      • mysql自带同步(binlog)
      • 自己解析binlog:多线程解析,提供并发写入
  • 中间缓存,解决热点数据问题2/8原则

    • 对数据库的优化 -减少数据库读操作

      • 每个web主机对数据做cache

        • 不足:数据在每台机器都保留一份,重复浪费
      • 集中式单机缓存:单点故障
      • 集中式缓存集群
      • 控制空节点查询:做一个全量数据key信息,先查询对应cache信息,再走db

        • 减少数据库写操作
      • 合并请求

        • cache纪录所有sql的操作,当操作达到一定的量,合并请求为一个写入db
        • mysql通过innodb_flush_log_at_trx_commit调整写入磁盘的策略
    • 引入NOSQL存储(数据库到一定量瓶颈无法突破,所以对非一致性强烈要求的纪录才用nosql存储)
  • web资源缓存机制

    • httpd协议机制

      • ETag
      • Cache-Control
      • 自定义head头策略

总结:

  • 单机部署:http服务器、动态服务器、db
  • 垂直拆分:http服务器单机、动态服务器单机、db单机
  • 水平扩展:http服务器集群、动态服务器集群、db集群
  • db瓶颈扩展:http服务器集群、动态服务器集群、cache集群、db集群
  • db瓶颈扩展2:http服务器集群、动态服务器集群、cache集群、nosql集群、db集群
  • 业务分离:LVS、业务1集群、业务N集群、cache集群、nosql集群、db集群
  • 服务化:LVS、业务1web集群、业务Nweb集群、业务1服务集群、业务N服务集群、cache集群、nosql集群、db集群
  • http资源缓存:CDN、LVS、业务1web集群、业务Nweb集群、业务1服务集群、业务N服务集群、cache集群、nosql集群、db集群

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » B/S架构网站的web设计变迁史