最新大型网站技术架构探讨

时间:2022-11-21 03:20:56 作者:壹号 字数:8195字

BeetleSoft

“大型”网站技术架构探讨

余浩东 2011年6月CE v6.3

大型网站架构的目标与挑战 网站架构演变及其技术脉络 架构设计理论与原则 讨论及总结

BeetleSoft 大型网站技术架构探讨[2]

大型网站架构的目标与挑战■何谓“大型”网站?没有统一的判断标准,流量大小是一个重要指标

网站

日均流量[IP/PV] IP≈ 5,972,587 PV≈ 9,376,962 IP≈229,680,000 PV≈2,955,981,600 IP≈25,680,000 PV≈222,132,000 IP≈5,532,000 PV≈25,723,800

IP≈300,000 PV≈747,000

日均流量至少IP>1,000,000才算大型网站BeetleSoft 大型网站技术架构探讨[3]

大型网站架构的目标与挑战■何谓“大型”网站?

网站内容是否“动态”才是关键BeetleSoft 大型网站技术架构探讨[4]

大型网站架构的目标与挑战■网站架构目标与挑战

负载均衡 数据备份 异地容灾 。。。 高速缓存 并行计算 异地镜像 。。。

每个目标背后面临着技术、设计、维护等诸多方面的挑战。 而目标本身的期望值也会根据实际情况进行调整,这也意味着网站架构建设是个不断调整的过程。BeetleSoft 大型网站技术架构探讨[5]

开发框架 多层设计 业务分割 。。。

大型网站架构的目标与挑战 网站架构演变及其技术脉络 架构设计理论与原则 讨论及总结

BeetleSoft 大型网站技术架构探讨[6]

网站架构演变及其技术脉络■[Step1]Web动静态资源分离及其与DB物理分离

优点:“简单”、安全性提高 缺点:存在单点,谈不上高可用性(high availability架构目标) 技术点:应用设计要保证可扩展(framework很重要Spring/Beetle)、Web Server动/静态资源分离 Web Server(ApacheNginxIISJBoss…)、 Database Server(MysqlOracleRedis…)

BeetleSoft 大型网站技术架构探讨[7]

网站架构演变及其技术脉络■[Step1]技术点—Web动静态资源分离

img,doc,js,css等静态资源使用单独的Web HTTP Server处理请求 动态页面静态化处理

BeetleSoft 大型网站技术架构探讨[8]

网站架构演变及其技术脉络■[Step2]采取缓存处理减少对网 站的访问

减少对Web应用 服务器的请求

减少对数据库 的查询

减少文件系 统I/O操作 优点:简单有效、维护方便 缺点:依然存在单点 技术点:客户端(浏览器)缓存、前端页面缓存、页面片段缓存、本地数据缓存/数据库缓存BeetleSoft 大型网站技术架构探讨[9]

网站架构演变及其技术脉络■[Step2]技术点—客户端(浏览器)缓存技术点说明 根据HTTP协议特性,修改Header参数(Cache-Control、Expires、Pragma、LastModified、Etag),让浏览器来缓存页面(一些优秀开发框架会对此做透明的封装, 例如:Beetle

)/Protocols/rfc2616/rfc2616-sec14.html 使用HTTP1.1协议,由于http pipelining技术特性,能够使用get请求的决不采取post 请求 为了节约带宽,压缩页面(Content-Encoding: gzip);页面各个元素能“小”即“ 小”,例如:js包压缩,js合并,图片压缩等 会话状态信息采取Cookie代替传统使用服务器Sessions对象存储习惯做法;使用Ajax 实现页面局部刷新 如果可能,可采取浏览器插件技术突破浏览器功能限制,将原本在服务 器端运算,尽量迁到浏览器端。ActiveX/Applet/Flash/…. HTML5 最值得期待,她的出现必定改变整个Web世界能够让浏览器缓存的数据一定要缓存;浏览器能够处理的 运算,决不放在服务器端来处理。BeetleSoft 大型网站技术架构探讨[10]

网站架构演变及其技术脉络■[Step2]技术点—前端页面缓存

…… 此处隐藏1182字 ……

CDN(Content Delivery Network)内容分发网络 将网站的内容分发到最接近用户的网络“边缘”,使用户可以就近 获取,从而解决互联网网络拥挤的状况,提高用户访问的响应速度。 适合静态内容很多(如:静态页面、图片、视频等)及页面内容实 时性要求不高的网站,如:新闻类门户网站 CDN构建可以做的很简单,也可以很复杂,主要根据自己网站实际 情况而定BeetleSoft 大型网站技术架构探讨[18]

网站架构演变及其技术脉络■[Step4]技术点—分布式缓存

本地缓存性能优秀,但容量有限,无伸缩性 采用分布式缓存方案突破容量限制,具备良好伸缩性;但分布式涉 及远程网络通信消耗其性能本地缓存来得优秀,并可涉及节点状态维 护及数据复制问题,其稳定性和可靠性是个挑战。 目前流行分布式缓存方案:memcached、membase、redis等, 基本上当前的NoSQL方案都可以用来做分布式缓存方案BeetleSoft 大型网站技术架构探讨[19]

网站架构演变及其技术脉络■[Step4]技术点—分库 读写分离(简单有效,前面已介绍) 垂直分区

良好的松耦合的模块化设计是垂直分库的前提BeetleSoft 大型网站技术架构探讨[20]

网站架构演变及其技术脉络■[Step4]技术点—分库 水平分区(Shard)

分片Key识别(划分检索依据)是关键是否还有其它招?用NoSql数据库部分替换关系数据库BeetleSoft 大型网站技术架构探讨[21]