web开发变迁
-
静态站点
- 只包含一些静态页面,内容形式主要是html
- 用户自己手工上传内容(如:rsync)
- 一个http服务器(如:apache httpd、nginx)
- 页面比较小
-
简单动态化站点
- 提供一些cgi脚本,做一些动态内容展示(如:获取当前时间)
- 页面比较小
-
复杂动态站点
- 采用高级语言渲染页面,提供比较丰富的页面内容
- 页面比较大
-
集中数据管理
- 统一管理网站的数据、用户提交的数据
web部署变迁
-
单机部署
- http服务器,纯静态内容
- http服务器+cgi,cgi站点
- http服务器+php,脚本站点
- http服务器+proxy+动态内容生成服务器(servlet服务器,nodejs),动态内容站点
- http服务器+proxy+动态内容生成服务器+db,动态内容站点,数据db存储
-
多机部署:解决单机性能瓶颈
-
负载均衡
-
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的内容,一般用在静态内容分发上
-
优点
- 性能好
- 支持路由策略
-
不足
- 搭建、维护成本高
-
优点
-
http重定向:暴露入口URL,该URL根据不同请求过来返回不同的具体内容地址
-
负载均衡
-
异地部署:解决区域访问性能问题
- 单中心,多区域:
- 双中心,多区域
- 对等部署
-
全球部署:解决全球访问性能问题 基本同3,需要关注国家政策问题带来的部署影响
web缓存机制
-
数据库缓存机制
-
内部缓存(mysql)
- 索引
- 数据库连接线程池缓存
- Innodb缓存
- 分库分表分区,解决单表性能问题
-
多机部署,解决单机性能问题
- 主从部署
- 读写分离部署
- 主主互备部署
-
数据同步,解决数据一致性问题
- mysql自带同步(binlog)
- 自己解析binlog:多线程解析,提供并发写入
-
内部缓存(mysql)
-
中间缓存,解决热点数据问题2/8原则
-
对数据库的优化 -减少数据库读操作
-
每个web主机对数据做cache
- 不足:数据在每台机器都保留一份,重复浪费
- 集中式单机缓存:单点故障
- 集中式缓存集群
-
控制空节点查询:做一个全量数据key信息,先查询对应cache信息,再走db
- 减少数据库写操作
-
合并请求
- cache纪录所有sql的操作,当操作达到一定的量,合并请求为一个写入db
- mysql通过innodb_flush_log_at_trx_commit调整写入磁盘的策略
-
每个web主机对数据做cache
- 引入NOSQL存储(数据库到一定量瓶颈无法突破,所以对非一致性强烈要求的纪录才用nosql存储)
-
对数据库的优化 -减少数据库读操作
-
web资源缓存机制
-
httpd协议机制
- ETag
- Cache-Control
- 自定义head头策略
-
httpd协议机制
总结:
- 单机部署: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设计变迁史
原创文章,作者:wure,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/252485.html