【51CTO专稿】2011年京东商城碰到了严重的流量相关的性能瓶颈,51CTO也做了专门的报道,我有幸在6年前主持开发过日流量千万级别的系统,所以也在微博发表了一下自己的观点(具体详见 http://os.51cto.com/art/201111/300247.htm)
不是每个人都有幸亲自参与并主持设计大型网络应用的,我应该说就是其中的幸运儿之一吧。我在2003年毕业后投身IT界,先是在国内某知名的棋牌游戏公司担任了3年的程序员;06年有幸参得到一个机会主持开发了一个日流量2000万级别的互联网应用。09年转做市场运营,时间过去3年多了,现在技术日新月异,或许当年的设计已被替代。作为一个技术圈的退役老兵,仍坚持将自己的设计模型写出来,跟大家分享学习,并欢迎大家批评指正。
本文只做抛砖引玉的作用,具体实施欢迎与我互动。
项目概况 某大型网络应用,含普通的用户功能(如登录、信息修改等);含信息发布功能;含统计功能(如信息查看、点击等);以及其他周边功能。
硬件配置 数据库服务器1台;中央应用服务器1台; web服务器20台(可灵活扩充)。
设计思路
- 通过购买专业的DNS服务,将域名流量按照区域(如北京,浙江等)和服务商(如电信,网通等)分发到不同的web服务器N,在每一台web服务器安装并部署web项目;每台web根据用户的不同命令读写本机缓存XML;
- 中央应用服务器定时的获取多台web服务器的缓存xml文件,进行应用级的数据分析汇总,并将结果写入数据库服务器;
- 中央应用服务器定时的获取数据库服务器信息,并同步到多台web应用服务器。
设计难点及解决办法
WEB服务器版本控制
解决办法:为每台web服务器配置并标注好版本号;在中央应用服务器做好版本兼容性工作。如:web程序的统计功能,新版本V1.1去掉了老版本V1.0中的IP统计。Web服务器1的当前web版本为V1.0,Web服务器2的当前版本为V1.1。在中央应用服务器需提供两个方法,TongJi-v10()和TongJi-v11()。在v10的方法中先做数据校正,再调用新方法v11。
中央应用服务器海量数据传输
解决办法:假设一台服务器承载200万的流量,将产生大量的应用数据。可以先将这些数据在web端进行压缩后再传输,能节省80%以上的带宽成本。
数据的及时性
数据及时性是使用文件缓存比较棘手的问题之一。
解决办法:对数据及时性进行归类。在设计期间,我们将数据的及时性简单的划分为三个级别,按需,高及时和非及时。按需数据立即同步;高及时信息每10分钟同步到中央应用服务器,低及时信息每小时同步。这其中,比较有意思的是一些看似按需的操作也并非真正的按需操作。如用户密码修改,修改后的密码密文就存在web服务器N的xml配置文件中,就能确保用户使用新密码登录。用户在没有切换线路或者更改区域的情况下,仍然是使用的web服务器N,也无需按需同步密码数据,只需要高及时同步。
数据的安全性
大量Web服务器存在着大量的数据,甚至包含账户或者资金信息,某种意上讲这些数据是不安全的。
解决办法:文件存放路径、加密、模糊。不要将xml缓存文件存放在web路径可以供用户下载的地方,配置绝对的硬盘路径来设置配置文件的读写。如账户的密码只存取MD5加密字串,如资金采取多套对称加密算法加密,用不要用password来标识字段为密码而采用I1,不仅能模糊字段还能节省磁盘及后续传输消耗.
作者简介: @365姜志林 ,3年程序员,4年cto,2年的市场运营,专注于数据分析和SEO策略,拒绝YY,用数据和结果说话。