« March 2009 | Main | May 2009 »

April 29, 2009

一次足够了

一次就够了

本来我都忘了这个故事了,不过,因缘巧合,看来还是值得讲一下。

这个故事是我和tinyfool刚刚开始创业时候的事情。众所周知,我们做了一家站内搜索的服务商,主要靠按月收服务费盈利。

某年某月某日,碰到一个客户。此客户在行业内很有名,也有钱。是某著名外企旗下网站。我们当然非常欢喜,这个生意显然是个赚钱又赚声望的事,也就特别的留意。

客户负责技术的人,曾经在某个会议上认识,这又让我们觉得不错,熟人好办事嘛。合作就这么开始了。

没花多少时间,一切顺利的上线测试。按照我们的习惯,免费试用15天,之后开始收费。这位老兄就说了,能不能多让我们试一段时间,比如*半年*什么的。我们当时就一楞,还有这么提要求的?

不过听听解释,也合理,诸如公司大,要汇报,决策比较麻烦,等等。此君几乎就是拍着胸脯说,咱是朋友嘛...

我们思量了一下,觉得也未必真能用半年时间吧,且就这样吧。反正早晚的事嘛。

随后,搜索效果很好,流量暴涨。我们的带宽被用光了,于是我们又买了一些带宽。不过付款这事看起来还是没什么消息。

后来又涨,我们实在是买不起了,于是跟对方协商,能不能先付一部分款。那位老兄也不含糊,当即答应准备一台机器,放在他们机房里,这样通过内网访问,没什么带宽压力了。

好吧,是个办法。转天,新机器就位,我们把服务部署上去了一套。

此网站更多的频道开始用上我们的搜索,客服,支持,都好一阵忙乱。我们还跑了几趟,和他们部门的一些同事开会,讨论怎么用搜索。此间再次提到付款问题,不过还是老样子,再让我们用几天。另外还应承,我们母公司还有不少其他网站,也可以介绍用你们的东西,别着急。

听起来不错。

半年时间,说快不快,说慢不慢,就这么到了。

某一天,我们突然发现流量下降了。某个频道的搜索完全没有流量了。还以为是对方网站出问题了,赶快联系。那位老兄没接电话。后来找到了他们部门的程序员,说了说情况,当时觉得有点奇怪,躲躲闪闪的。过了2天,也没见变化。我们考虑要找到这个"好朋友"问个究竟。手机仍然是没人接。于是我们请前台转他的座机试试看,竟然有人接了。

听到了我的声音,对方明显慌乱。一通问,跟我们猜的差不多。人家号称自己做了一套。不用我们的了。然后这人就又跟消失了一样了。

我这才明白,原来上来人家要先"试"半年是什么意思。

做了这么多年生意,我和tiny在这行也有点小名气。自认为朋友不少,我们两个人为人也算爽快。其实,如果开始直说"我们想自己做,付半年的钱,行不行?"那我们当然很欢迎。服务嘛,本来就是可以随时停止的,也有客户是这么做的,希望我们帮他们度过过渡期,大家合作愉快。或者,实在不愿意付钱,也直说"我们想自己做,就这半年没的用,能不能帮我个忙?"我们估计也同意。多个朋友,没坏处。

可惜,他选了最没意思的一个办法。

虽然很气人,也亏了不少钱,不过,事情最后这样了,也就这样了。我甚至没跟别人说过这事,就让他过去了吧,谁做生意还不碰几次钉子,虽然我到现在也不能理解一个大公司干嘛要占2个苦哈哈的创业者的便宜。

--------------------时间的分隔线---------------------------

为什么我今天突然想起来写这个事呢?

早晨,我接了一个朋友的电话,问我,是不是tiny比较懂iphone的开发,说他有个朋友,有一些开发问题想请教。我说没问题,tiny解答不了的,我还有几个朋友都做这个,我也可以介绍。

然后我这个朋友说,那个人说有tiny的电话,但是不太好意思打。我就多嘴问了句是谁。结果竟然是前文所述的那位"好朋友"

于是我说,这个还是算了吧,我也不想和他打交道了。我的朋友告诉我,对方说,之前合作过,但是我们能力有限,支持不了他们的应用,最后没有用。这个可给我气坏了,您占了便宜,不说好话也就算了,也没必要这么诋毁我们吧?

我说,我们系统是否能支持,我这里有当年所有服务的log,一看就知道了。没出现过不能支持的事,既然他这么说,那就让他滚蛋吧。


半个小时之后,我们公司电话响了,找tiny。这位"好朋友"终于亲自现身了,先道了个歉,说当时觉得我们的服务太贵了,所以没用。tiny说,我们的服务从来都是按照报价来的,当时你们的应该是XX元,哪里贵了?对方立刻表示是误会,误会。 (注意,半个小时之内,已经由支持不了,变成价格贵了)然后就开始请教他的iphone开发问题,还要请tiny当面给他们的程序员讲讲。

我简直被雷倒了。


后来tiny跟我说,他这样该得到教训了吧?最后还是要来找咱们。

而我估计,他不仅没得到教训,甚至连后悔都没有。因为,他占了便宜,最后还仍然可以厚着脸皮来找我们帮忙。他从来也没亏什么。

这样的事,真是一次足够了。我这辈子也不想再跟他有任何关系,我也不希望我的朋友们再遭遇一次了,故为记。

April 3, 2009

beta沙龙-手机之家架构的发展和变化

这次beta沙龙请了高春辉的团队来讲他们的经验。本来我是希望老高讲,不过他说最近的系统主要是许超前在带人开发,所以实际的演讲人是许超前。

国内最早让大家意识到网站的发展阶段的文档大概就是于敦德翻译的LiveJournal发展历程的ppt。这次许超前的演讲非常类似LiveJournal的那篇。


手机之家用了7年时间,发展到1000万以上用户,3000万以上帖子,1.1TB附件,每天780万以上的PV这个规模。这个数字虽然比不上大型互联网公司,但是对一个只有几个人的技术团队,已经是一个很令人骄傲的数字了。

LiveJournal在发展中一边用着开源软件,一边造轮子,最后造出来了memcached这个简单而强大的工具,最终成了这一代网站开发离不开的东西。

这次演讲有意思的部分就是从memcached相关的事情开始的。

一 关于memcached的应用和管理。

memcached确实是个简单,好用,见效快的东西。不过简单也有简单的问题,程序员各有各的习惯,结果导致key很不规范,用什么方式的都有。这个问题恐怕用过memcached的人都深有体会。当然,用开发规范来限制程序员的行为是一个办法,但这不是技术的方法。技术的方法,是增加一个层。于是手机之家开发了一个cache管理器,把程序员和memcached隔离开,由这个层来统一管理缓存。

这是个不错的思想。当key被一个中间层接管了之后,事实上就可以给被缓存的对象实现更复杂的结构了。memcached是扁平的,只有一层。数据保存的方法仍然可以保持一层,但是通过对key的结构设计,就可以实现多层的结构,甚至在层和层之间实现继承关系,或是树结构。手机之家称之为namespace。通过这种方式,可以批量的管理和控制缓存对象。

换言之,索引结构可以复杂,但存放对象本身的地方是个key-value型的。friendfeed关于mysql应用的文档也提到了这种方法。用这种方法,可以在一个比较小的索引库中进行各种操作,无论是遍历还是查找,甚至处理一个节点下所有的值。最终得到key-value库的key。这个思路应该可以用于很多地方。

手机之家在cache上下的功夫很多,演讲稿中很多页是在讲cache系统的演变。对他们的应用方式来说,如果cache被击穿了,所有的压力到达了数据库,那么性能就会急剧下降,所以对cache的管理变的尤其重要。手机之家的这种尝试确实解决了很多问题。

二 仍然和cache有关

完成了前面说的cache管理器,他们还想更近一步,把数据访问,缓存,尤其是对库的切分整个包装起来,给程序员一个透明的接口。这样程序员不用关心到底存在多少个库,怎么分布,是否需要从cache中取数据等等细节问题。

这也是个常见问题。所有从数据库取数据的地方都要先从memcached读一次,代码很难看,也很罗嗦。这个包装完成之后,这就是一个能提高生产力的工具了。直接有效,也确实节约了开发成本。这个被他们称做DAL,很俗的名字啊:D

三 这样用java

php用来做以上的2个部件,效果并不好,效率很低。事实上php就不是干这个用的。最后他们用java+nio实现了一个性能不错的服务。把所有问题都解决了。

用在网页上java/jsp确实不如jsp,但是用来做服务器还是很合适的。我询问过他们是否在GC的时候遇到性能问题,答案是目前还没有。如果稳妥起见,对于这种方案,我更愿意采用C,不过考虑到团队情况,和java程序员比C更容易找到,手机之家用java来开发也是一个折中方案。

总结手机之家经验分享的意义,我觉得在于,我们很少有机会看到一个网站从0做到接近千万的PV。就算在一个大的互联网工作过,所看到也只不过是冰山一角,很难有操刀动手的机会。手机之家的成长用了7年,老高始终在带着团队做优化。这种经验很难获得。

我们常常讲,做网站好像爬山,一个陡坡,一个缓坡。我见过很多网站在50万pv之下就被技术卡住了。很多很多的公司,就在某一次上坡的时候死了。

沙龙结束后,晚上,我和老高在gtalk上又聊了很久。我觉得他们做出来的这套方案,对很多公司都有帮助。至少跨越几个困难阶段。这就好像memcached带来的,在没有memcached的时候,很多网站抗不住10万这个级别的pv,有了memcached,哪怕用的很糟糕,50万这个级别也能到了。老高这个方案或许能让很多网站进入"百万俱乐部"。

说起来做互联网,中国人比外国人难很多。我们面对的用户规模比他们大的多,但是广告价值小的多。我们做一个网站,可能在第一年就碰上了第一次性能极限,但这时候钱还没有影。外国人可能3年才到达,但是人家已经赚了不少钱,也有足够的资源来解决问题。对中国的互联网来说,有一些这种解决方案确实很有帮助。

当然,未来还是未知的。老高和手机之家是如何期待这个产品的未来的?是开源,还是做解决方案?不管怎么说,至少我相信,他们做一个不错的轮子,应该不至于只给自己用。

更细致的还是请看他们的ppt吧

手机之家还在招聘 PHP/Java 人手,有意者给老高发邮件: gaochunhui@gmail.com


其他相关的:

大辉的:手机之家的架构分享
余晟的:老高之野望
老高的:与"手机之家新系统介绍及架构分享"有关

about me:
me.jpg
CC License. Some rights reserved.
署名·非商业用途·保持一致
本站之所有未作特别说明的内容均使用 创作共用协议.
POWERED_BY_MT_3.2