手机之家网站架构--对话高春辉

news/2024/5/9 11:31:19/文章来源:https://blog.csdn.net/chinalinuxzend/article/details/3502801
原贴:http://www.dbanotes.net/arch/imobile_web_arch_gaochunhui.html

手机之家网站架构--对话高春辉

这次去北京参加 CSDN SD 2.0 ,没发现高春辉的身影,原来是忙着做手机之家的架构升级呢。

从老高的近期工作总结中看到:

目前的技术状况是基于自行设计的 PHP 框架,跑在 PHP 5.2 + MySQL 5.1 下,PHP 使用 Fastcgi 模式,WebServer 选择了 Nginx。搜索功能基于 Lucene 开发。缓存代理使用 Varnish。

对老高进行了一次非正式采访,聊了不少内容,整理了一下和大家分享。(谁是高春辉? 这个不要介绍了吧,请 Google! )

1) 历史情况

Fenng: 原来大约是用什么? 框架用的什么?
高春辉: 你说老系统?Apache 1.3 , DB 是 MySQL 4.0。新框架是团队自己写的,定制了一些东西吧,主要强调的是性能和方便、简单。另外把针对 YSlow 的优化也做进去了。
Fenng: 单说现在用的框架,大约投入了多少个人/天 ?
高春辉: 从全年开始考虑写,一直不断的写 -- 具体时间不好说。反正是不少了 :)
Fenng: 看了你 Blog 中的描述,有个小疑惑:没使用面向 DB 的 Cache 层?
高春辉: 我文中说的 Data accessor 就算是了。目前是拿 PHP 做的,Client+Server 集成在一起。后面第二期准备拿 Java 来写 Server 端。

2) 遭遇 PHP Bug

Fenng: 你提到的 502 错误不会是 PHP Fastcgi 内存爆了的原因吧?
高春辉: 不是,是 PHPAPC Bug 的问题。换新版就好了,你可以看 PHP 5.2.7 的 Buglist。里面列了一个在 Fastcgi 下父进程不能执行 shutdown module 方法的问题。主要是这个原因。APC 也有问题,它的Lock在大并发下非常容易挂掉。换上还没发布的测试版就好了。现在挺稳定的。一台机器跑了700万次请求了。
Fenng: 你遇到的是这个问题吧?
Bug 45423
高春辉: Yes Here is the APC bug link : http://pecl.php.net/bugs/bug.php?id=5280 还附带这个问题。当时发现原因之后,非常郁闷,呵呵。
Fenng: 现在用 5.2.8 了?
高春辉: 嗯。5.2.7/5.2.8 反正没啥区别,就修正了一个bug。

3) DB 压力

Fenng: "原有的两台数据库平均总和超过 2000QPS 的查询次数,目前仅有 150+150+250= 550QPS 左右了" 这个 150+150+250 怎么来得? 三台?
高春辉: 现在变成三台机器了 :)
Fenng: 哈
高春辉: 是原来的 1/4 吧 。
Fenng: 你 Blog 中提到 "由于新系统未经大规模流量实际验证,即使再有信心", 前面有没有做过压力测试?
高春辉: 做过,但是那个问题不是马上就暴露的。而是要运行一段时间才会出。所以我强调的是实际验证。

4) 过程挑战

Fenng: 问个比较俗 的事儿,最近一段时间给你压力最大的事儿是啥? 招聘?项目发布?
高春辉: 人!
Fenng: 人员协调?还是人力招聘?
高春辉: 人永远是问题,好的人不够用, 差一点的人不想用,呵呵。
Fenng: 国内 PHP 好手还是太少吧?
高春辉: 嗯。太多人缺乏对大规模的研究和实践了。而且这次有些思路的转变是对 Java 的引入。之前是考虑 99% PHP 实现。现在考虑 PHP 只做前端。JAVA 做服务器后端。 这样混合编程才算是比较发挥各自的优势。
Fenng: 你们有很多事务的东西?
高春辉: 不是事务多,而是 PHP 本身就不适合做服务器端的内容。包括性能也很慢。比如开始发给你的链接(Fenng 注:之前发给我一个 Session 信息统计的地址),那个 Session Server 就是拿 Java 做的。之前 PHP 的版本,一次请求要两位数(ms)以上,现在一次只要1.5ms,差距很大。

5) 再说网站架构

Fenng:提供给我一份网站架构拓扑图吧 ?
高春辉:这是实际的,包括 IP 了,供参考吧:

imobile_web_arch.png

Fenng: 你们网站规模都这么大了!
高春辉: (笑)

Fenng: 考虑到安全问题,我只把缩略图放到网站上吧。估计没人能看清楚 :)
高春辉: 好。我们目前还是做了一些感觉比较不错的小东西的。比如 Data accessor、Session server、YUI compress server 等等吧。
Fenng: YUI compress server 应该是借鉴了 Yahoo YUI, 然后针对静态文件进行压缩的吧?
高春辉: 就是用 YUI Compressor 做的,只是做成了一个 Daemon 服务,而不是命令行的方式来处理。
Fenng: Data accessor 或者其他组件是否准备开源?
高春辉: 关键是只有到规模才需要它。恐怕大部分网站还是觉得麻烦得多吧。
Fenng: 统计分析和监控也是自己写程序?
高春辉: 那倒还没来得及下大功夫,只是做了一些简单的脚本。

6) 图片处理问题

Fenng: 提一个小建议:我发现主题频道这里的图片仍然有拉伸,我个人觉得拉伸是网站必须要慎重对待的问题,用户体验非常不好。
高春辉: 应该是 Imagemagick 使用的问题。 我还在继续修正,不过相信不是大问题。
Fenng: 这么说图片处理用了 Imagemagick ?
高春辉: 嗯。有图形处理后端 Server。

高春辉: 你可以看看手机之家论坛(http://bbs.imobile.com.cn/)的页面源代码...
Fenng: 现在(网站)的速度可真不是一般的快...YSlow 上的表现惊人, 差不多是国内网站我看到的最高分了。
高春辉: 其实全都都是动态请求,包括你看到的任何一个图片/JavaScript/CSS ...
Fenng: 你们的图片都是如何处理的?我看到似乎是动态拿过来?在DB里?然后Cache到缓存里么?
高春辉: 全部放到数据库里。作为备份。你在前台看到的都是动态处理的,通过 ID 进行关联。前面有两级缓存。数据库的内容相当于备份。这么做的我认为的好处是不用备份上百万个小文件了。而只是备份几百个大文件就行了。速度会提高非常多;而且那种静态损坏的几率就没有了,因为数据库本身会做数据的校验,我们也都保留的验证数据。

Fenng: 这是个反潮流的做法啊,我的猜测是每天数据量变化不大?
高春辉: 目前一天顶多也就是几百兆的增加,应该是可以承受的。而且即使量大也没关系,我可以具体到一个表拆到一个机器上跑。
Fenng: 可这样的话 EXIF 信息就不用了?
高春辉: 所有的信息都可以有一个 Metainfo 表进行保存。而且可以从新生成,假设你的文件信息解析程序有更新的话。
Fenng: 这是我这几年来看到的第一例。不过合适就好。
高春辉: Metainfo表,当然也可以由各应用自己解析自己保存。目前 FileStorage 已经保存了 1.1TB 的文件数据了。当前拆成了 256 个小表,每个表4G左右大小。
Fenng: 文件层用什么文件系统?XFS?
高春辉: 数据库都是 CentOS 5.2 64 bit 的系统。文件系统用 Ext3。其实没你想像的那么大的 I/O 压力,只要两级缓存有了。根本到不了数据库这里。而且前端的两级缓存都是可以多台机器一起跑冗余的。
只要配置就行了。以后备份和故障恢复也很简单。
Fenng: 这一点很有趣。 突破传统思维 :)
高春辉: 也是基于之前的教训而琢磨的方法,呵。

7) 对待 NFS 的态度

Fenng: 这次架构升级还有什么补充一下?
高春辉: 刚才还忘了说,我们这次以后坚决拒绝 NFS ...
Fenng: 为何?
高春辉: 主要是太容易单点了。 IO对一个机器压力大。这本来就不是个分布式的解决方法。

最后帮老高做个广告,他那边还在招人,需要 PHP/Java 方面的好手,如果有兴趣请访问他的 Blog 并发邮件给他:gaochunhui@gmail.com 。

--EOF--

| Permalink | TrackBacks (0) | | Edit

<script src="http://w.sharethis.com/widget/?tabs=web%2Cpost%2Cemail&charset=utf-8&style=default&publisher=abd89f47-864f-4619-8ecd-501d8d2e9b58" type=text/javascript></script> ShareThis <script language=javascript src="http://www.postreach.com/ccengine/display_iframe?perlink=http://www.dbanotes.net/arch/imobile_web_arch_gaochunhui.html&url=http://www.dbanotes.net/" type=text/javascript></script>
0201
clickcommentsMokugift: Plant a Tree
Generator | Trampoline | 外贸英才网 | Vinyl fence
Vertical Packaging Machine | Digital Blood Pressure Monitor

自定义搜索

本文相关评论|Comments(11)

AWard Author Profile Page 的评论:

最恨邮票大的图...
这篇好文收藏下来慢慢读

大菠萝 的评论:

那个架构图也太小了吧,看不见,强烈要求放大图。

blogkid Author Profile Page 的评论:

看到说APC的问题,突然很感兴趣Facebook是不是也遇到了,是怎么解决的。

POPOEVER 的评论:

“这么做的我认为的好处是不用备份上百万个小文件了。而只是备份几百个大文件就行了。”话是这么说,但是这两者的维护成本呢?包括人员配备、故障修复等等的 ROI,我怎么觉得还是静态文件比较靠谱啊。不过这样做防盗链的成本是不是就降低了?

den 的评论:

对架构图比较感兴趣。。
能否分享一下。

dengjiuhong(at)gmail.com

xLight 的评论:

老高的Data accessor,很感兴趣

xi2008wang 的评论:

感觉这个对话很有技术价值^_^

xi2008wang 的评论:

15:31去访问手机之家时,出现这个:
"每日例行维护时间,请耐心等待,或者过一会再访问... :) "

怎么造成的?每天都要这样?
另外能否把图发布出来? IP可以打马赛克^_^

It学问吧 的评论:

分享

MC.Spring 的评论:

看完文章接着访问手机之家,竟然在例行维护。。。

omtv 的评论:

额。。。
那个架构图是在夸张。。。
太小了。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_831759.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面向用户的网站性能优化

原贴: http://www.dbanotes.net/arch/user_oriented_web_tuning.html面向用户的网站性能优化 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.dbanotes.net/arch/user_oriented_web_tuning.html 在互联网这个行业&…

31个用来测试你网站各项性能的免费在线工具

原贴:http://blog.chinaunix.net/u/9465/showart.php?id173605231个用来测试你网站各项性能的免费在线工具 网站代码验证 没人可以细致到保证自己的网站代码都是正确的&#xff0c;你可以通过以下测试来验证网站代码是否正确。 1 . WDG HTML Validator 一个很好的工具&#…

网站优化之减少HTTP请求

原贴:http://lovelaozang.cn/show-6786-1.html网站优化之减少HTTP请求 Submitted by 老臧 on 2009, January 12, 11:37 PM. 好好学习 相关文章 评论 今天给大家分享一些网站优化的一些经验&#xff0c;如有不对的地方欢迎批评指正或与我讨论。关于网站优化&#xff0c;可以从多…

10个精选免费网站分析工具

原贴&#xff1a;http://www.cnbeta.com/articles/75109.htm10个精选免费网站分析工具 感谢zhengyongmw的投递 新闻来源:译言 在本文中&#xff0c;你将发现10个精选的免费web分析工具和应用程序&#xff0c;他们可以帮助你收集和分析与你网站内容有关的数据。 什么是Web分析学…

学习豆瓣好榜样--网站架构

原贴:http://www.dbanotes.net/arch/douban_arch.html 学习豆瓣好榜样--网站架构 这次的 QCon 会议&#xff0c;《豆瓣网技术架构的发展历程》这个议题差不多是最受关注的。洪强宁在演讲开始告诫大家期望值不要太高&#xff0c;我还是相信不会有人觉得失望的。 先说几句题外话&…

小规模低性能低流量网站设计原则

原贴&#xff1a;http://www.dbanotes.net/arch/small_site_arch.html 小规模低性能低流量网站设计原则 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.dbanotes.net/arch/small_site_arch.html 到处都是什么大规模啊…

使用Varnish代替Squid做网站缓存加速器的详细解决方案[原创]

原贴:http://blog.s135.com/post/313/ 使用Varnish代替Squid做网站缓存加速器的详细解决方案 大 | 中 | 小 [2007-11-29 22:11 | by 张宴 ] [文章作者&#xff1a;张宴 本文版本&#xff1a;v1.2 最后修改&#xff1a;2008.01.02 转载请注明出处&#xff1a;http://blog.s135.…

简约而不简单:网站着陆页的设计(Landing Page Design)

着陆页是一个在线营销的概念&#xff0c;是指当访客点击一个搜索引擎优化的搜索结果进入的第一个页面或“着陆”页面。这是一个重要的页面&#xff0c;它和提供的产品或服务的广告有点类似&#xff0c;提供了与产品相关的精确的信息&#xff0c;告诉客户可以购买的产品或服务。…

大型高并发高负载网站的系统架构[转载]

鄙人先后在CERNET做过拨号接入&#xff0c;在Yahoo&3721搞过搜索前端&#xff0c;在猫扑处理过mop.com的架构升级&#xff0c;在6.cn视频网站从事开发工作&#xff0c;还在多年的工作中接触和开发过不少大中型网站的模块&#xff0c;因此在大型网站应对高负载和并发的解决方…

一步步学习SPD2010--第八章节--理解工作流(7)--创建网站工作流

一步步学习SPD2010--第八章节--理解工作流&#xff08;7&#xff09;--创建网站工作流 在之前版本的SP中&#xff0c;所有工作流都是以文档为中心。然而&#xff0c;不是所有的工作流都像那样。为了应对其他情况&#xff0c;SP2010现在支持网站工作流。网站工作流在SP网站上下文…

Hexo博客网站再配置

这两天整理网站方面的事&#xff0c;本地IIS部署&#xff0c;个人网站&#xff0c;发现我的hexo做的个人网站实在很单调&#xff0c;于是找来资料做进一步的配置。 一、网站图标 看一下hexo\themes\modernist\layout\_partial\head.ejs&#xff0c;找到这句&#xff1a; <li…

[前端]分享一个Bootstrap可视化布局的网站

如果你像我一样&#xff1a;是个前端渣&#xff0c;能看懂css和html&#xff0c;略懂Bootstarp&#xff0c;懒&#xff01; 当你每次都想独立完成一个web页面而不知道从哪里下手的时候&#xff0c;那么下面的这个网站&#xff0c;就是你所以需要的&#xff01; http://www.runo…

unity3D 在官方网站 下载资源 路径存储问题

第一步打开 官网 https://store.unity3d.com/account/users 或者 在unity3D软件中&#xff0c;单击 window 再单机 asset store 即可进入商店&#xff0c;在商店中可以找到免费的学习案例&#xff0c;如&#xff1a;Unity Sample UI&#xff0c;在搜索栏中输入Unity Sample …

你必须知道的,常用的机器学习相关网站!!!

很多人因为人工智能的大火&#xff0c;转变了职业规划或研究方向&#xff0c;开始了学习相关领域的知识之路&#xff0c;虽说人工智能领域应用很广泛&#xff0c;涉及到的知识的也很广泛&#xff0c;但机器学习作为基础知识是每个人必须要了解的知识。 机器学习的相关资料相信…

网站接入短信平台验证流程

以网站注册用户为例 前端页面,此处用到volicity前端验证,暂时不做深入 <form action"$!webPath/register_finish.htm" method"post" name"theForm" id"theForm"><table width"900" border"0" cellpaddin…

不知名网站编程(一)

不知名网站编程记录&#xff08;一&#xff09; function place(a) {c.fillStyle "red";c.fillRect(a,0,20,20);c.fillStyle "green";c.fillRect(a20,20,20,20);c.fillStyle "blue";c.fillRect(a40,40,20,20); }var a 0; while(a<200) {…

不知名网站编程(二)

不知名网站编程记录&#xff08;二&#xff09; var a 0; var b 0; while(b<6) {c.fillStyle "blue";c.fillRect(12*a,12*a,240-24*a,240-24*a);a 1;c.fillStyle "orange";c.fillRect(12*a,12*a,240-24*a,240-24*a);a 1;b 1; }var a 0; var b …

不知名网站编程(三)

不知名网站编程记录&#xff08;三&#xff09; var a 0; var b 0; do { c.fillStyle rgb(0,0,a);c.fillRect(b,b,20,20);a a 60;b b 20; }while(b<80);var a 0; var b 0; do {c.fillStyle rgb(255-1.2*a,255-0.6*a,a);c.fillRect(b,b,200-2*b,200-2*b);a a 6…

不知名网站编程(四)

不知名网站编程记录&#xff08;四&#xff09; var a 0; var b 0; do {c.fillStyle rgb(128a,0,128-a);c.fillRect(b,b,200-2*b,200-2*b);a a 32;b b 20; }while(b<80);var a 0; var b 100; do {c.fillStyle rgb(255-a,0,0);c.fillRect(0,0,b,b);a a 63;b b …

基于jsp技术的校园二手交易网站

【项目介绍】基于jsp的校园二手商品交易网站系统使用jsp技术进行开发&#xff0c;项目主要实现了一整套的校园二手交易逻辑&#xff0c; 主要功能如下&#xff08;包括但不限于&#xff0c;只列出主要功能&#xff09;&#xff1a;管理员模块 |-----用户管理 |-----商品管…