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

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集群

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

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

原创文章,作者:wure,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/252485.html

(0)
上一篇 2022年5月4日 10:40
下一篇 2022年5月4日 10:42

相关推荐

发表回复

登录后才能评论