通过分布式设计及文件级数据缓存打造千万级别WEB应用

原创
运维 系统运维 分布式
不是每个人都有幸亲自参与并主持设计大型网络应用的,我应该说就是其中的幸运儿之一吧,在06年有幸参得到一个机会主持开发了一个日流量2000万级别的互联网应用。作为一个技术圈的退役老兵,仍坚持将自己的设计模型写出来,跟大家分享学习,并欢迎大家批评指正。

【51CTO专稿】2011年京东商城碰到了严重的流量相关的性能瓶颈,51CTO也做了专门的报道,我有幸在6年前主持开发过日流量千万级别的系统,所以也在微博发表了一下自己的观点(具体详见 http://os.51cto.com/art/201111/300247.htm

不是每个人都有幸亲自参与并主持设计大型网络应用的,我应该说就是其中的幸运儿之一吧。我在2003年毕业后投身IT界,先是在国内某知名的棋牌游戏公司担任了3年的程序员;06年有幸参得到一个机会主持开发了一个日流量2000万级别的互联网应用。09年转做市场运营,时间过去3年多了,现在技术日新月异,或许当年的设计已被替代。作为一个技术圈的退役老兵,仍坚持将自己的设计模型写出来,跟大家分享学习,并欢迎大家批评指正。

本文只做抛砖引玉的作用,具体实施欢迎与我互动。

项目概况        某大型网络应用,含普通的用户功能(如登录、信息修改等);含信息发布功能;含统计功能(如信息查看、点击等);以及其他周边功能。

硬件配置        数据库服务器1台;中央应用服务器1台; web服务器20台(可灵活扩充)。

设计思路

  1. 通过购买专业的DNS服务,将域名流量按照区域(如北京,浙江等)和服务商(如电信,网通等)分发到不同的web服务器N,在每一台web服务器安装并部署web项目;每台web根据用户的不同命令读写本机缓存XML;
  2. 中央应用服务器定时的获取多台web服务器的缓存xml文件,进行应用级的数据分析汇总,并将结果写入数据库服务器;
  3. 中央应用服务器定时的获取数据库服务器信息,并同步到多台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,用数据和结果说话。 

责任编辑:yangsai 来源: 51CTO.com
相关推荐

2011-11-03 10:07:09

ASP.NET

2017-12-12 14:51:15

分布式缓存设计

2022-04-07 17:13:09

缓存算法服务端

2019-10-29 14:22:44

阿里云云计算认证测试

2018-12-14 10:06:22

缓存分布式系统

2023-05-05 06:13:51

分布式多级缓存系统

2009-02-10 08:57:01

分布式缓存.Net开发

2023-05-12 11:52:21

缓存场景性能

2022-02-22 10:29:24

分布式架构高可用

2013-01-07 10:29:31

大数据

2015-05-26 11:18:06

分布式系统可扩展性

2018-10-29 12:51:35

分布式存储元数据

2019-02-18 11:16:12

Redis分布式缓存

2013-06-13 11:29:14

分布式分布式缓存

2023-02-28 07:01:11

分布式缓存平台

2017-09-27 10:53:53

分布式数据集SparkRDD

2011-11-29 09:49:16

数据库其他数据库NoSQL

2022-10-24 09:56:09

seleniumGrid分布式

2016-11-08 21:18:22

百度

2016-11-11 20:23:17

分布式集群万亿量级计算百度
点赞
收藏

51CTO技术栈公众号