阅读:36328次   评论:31条   更新时间:2011-05-26    
Five Minutes 公司程延辉(小名康天) 介绍开心农场架构,social game的技术挑战,支持千万级DAU的social game技术架构。这是一个对于开发者来说,非常精彩,非常有实用性指导的一次演讲,详细介绍了很多技术内幕。

>>猛击这里下载演讲ppt<<



Five Minutes 公司的著名social game 开心农场,目前非常受用户欢迎,包括国外的Facebook,国内的开心网都是如此,是全球最大的social game,台下热烈掌声。呵呵。开心农场这个游戏从介绍看,相当成功,最早是08年9月在xiaonei上线,而后在51等平台推广,包括Facebook。现在已经有1570万游戏用户了,其中包括50万的Facebook用户。

开心农场架构主要难点:1。如何存储大规模的用户数据千万级2。如果应对大量访问每天数亿请求量3。如果应对数据的频繁修改,每秒数万次数据修改。

解决的方式

优化:

1。负载均衡,web服务器平行扩展。

2。服务器性能优化。

3。异步处理,缓存数据接口,Linux内核参数优化,挖掘PHP的效率,用fastcgi模式运行php,用EAccelerator加速。固定不变数据做成php配置文件,用C开发PHP扩展等。

数据库性能优化:

1。数据库分库分表,所有数据全部设计成 key-》value形式,不用join。

2。使用INNODB,经常操作的数据表中所有字段尽量设计成数值型,用update替代INSERT和DELETE操作

异步处理:整个系统最关键的部分,

原则:把客户端暂时不需要的数据进行异步处理。

实例:讲非核心数据先写入memcached,异步更新到数据库,合并数据库更新操作,Feed和Notification的异步发送。

利用客户端资源:Flash屏蔽重复操作和不必要请求,Flash进行一些计算减轻服务器的复旦,例如好友排序等。Flash缓存一些数据。

social game = social + game。实时互动(大负载)和非实时互动(大负载)。


服务器角色:场景服务器,逻辑服务器,admin服务器,gateway,架构逻辑还是挺复杂的,每天处理亿级请求的架构,完全和百万级不一样!完全能够通过平行扩展的方式应对,gateway和场景服务器都完全可以增加。

Blue Whale是他们们正在开发的解决长连接的social game架构。

开心农场在现场招聘:需要C++,Python, Flash AS3程序员。

程延辉的演讲获得了在场热烈的掌声。




  • 大小: 79.5 KB
  • 大小: 73.9 KB
评论 共 31 条 请登录后发表评论
31 楼 shake863 2010-03-09 22:47
我特别想知道 在这个架构中 python 担当什么角色,大家有知道的吗?

讲讲呗
30 楼 argan 2009-12-29 09:24
中规中矩吧,其实这里的异步更新和合并更新应该是不得已的选择,这种应用的访问更新的比例很大,还是挺佩服的
29 楼 Digger 2009-09-30 21:36
有兴趣的朋友一起skype聊聊 --》 http://javaeyeskype.group.javaeye.com/


skype : bluestone007

Join in group : http://javaeyeskype.group.javaeye.com/
28 楼 fanth 2009-07-23 14:11
PPT做得比较简单,有录音就好了。
27 楼 Durian 2009-07-11 13:24
虚心请教;什么是分库分表,key->value模式?
26 楼 jeftom 2009-07-09 17:36
看起来貌似很牛X呀。。。腾讯都用它的产品
25 楼 Ruanluping 2009-07-08 22:26
又在玩概念服了你们!!!
24 楼 liyanhui 2009-07-08 12:27
同求ppt 同求ppt 同求ppt 同求ppt 同求ppt 同求ppt 同求ppt
23 楼 anky_end 2009-07-07 11:04
mock1234 写道
如果让一堆搞数据库 MIS 编程的人来看这个架构,肯定会觉得特别神奇。这是因为,搞 MIS 的人即使做过不少产品,不论是对终端设计还是分布式服务器群的设计通常也都是外行。

看这类系统,首先要非常清楚终端系统的设计,和具体都有多少条通讯指令(指令的设计和解析),于是你就抓住具体的项目到底是不是个大系统了。而这个产品看似很大,实则很小。

对于服务器群的设计,其实并不复杂。有两个技术路线:1. 当复载迅速增大时,你可以换更加昂贵能力更巨大的服务器;2. 通过迅速增加一台几千块钱的廉价服务器就提高负载能力。这两种技术路线造就了两种人。一般,程序员只懂得第一种最想当然的思路,于是他看到第二种做法就会觉得非常神奇。

分布式设计我觉得考虑的东西就多了,第二种做法困难的多。

22 楼 tieshow 2009-07-06 18:24
有视频吗?
21 楼 jackeysion 2009-07-06 18:23
3623524 写道
corrie 写道
原来是他,面试过我一次。

你牛啊啊。到处面试。面试的结果怎么样?

他是面霸?
20 楼 3623524 2009-07-06 11:16
corrie 写道
原来是他,面试过我一次。

你牛啊啊。到处面试。面试的结果怎么样?
19 楼 sin_sin 2009-07-05 15:13
ppt作者是YlmF。。。这可以成为吐槽点么|||
18 楼 androider 2009-07-03 07:33
treblesoftware 写道
数据库分库分表,所有数据全部设计成 key-》value形式,不用join。


键对应值 ??? 映射起来 ?? 不太明白。


应该是专门针对大数据量,更大幅度的利用索引的。比如它上面提到的使用update,代替insert和delete,也可以看出是针对这种索引的,因为在索引数据里面删除或者新增一个数据是相当相当慢和耗资源的。

key-value模式,应该是将数据专门按照这种存储方式进行的设计。想想如果将自己以前的一些系统按照这种数据库方式设计,也确实是一个很好的方式,只是大部分应用根本就没有这么频繁的更改数据库数据,所以也是要因实际应用而决定。
17 楼 liu0107613 2009-06-30 21:52
不明白里面的,用update代替insert,delete,update可以代替delete,怎么代替insert.呢。难道是把每个用户的初始数据都做好了?这招真的不错啊。


能不能详细介绍,使用多少组服务器,没组服务器的DAU ,PV等数据也能Share一下。

不过架构还是不错的。

用memoryCached 异步更新数据是很不错的选择。。
16 楼 treblesoftware 2009-06-30 19:04
数据库分库分表,所有数据全部设计成 key-》value形式,不用join。


键对应值 ??? 映射起来 ?? 不太明白。
15 楼 NightTree 2009-06-30 09:52
1。数据库分库分表,所有数据全部设计成 key-》value形式,不用join。

这是啥意思?没有关联查询?
14 楼 zhw161541 2009-06-29 22:09
最精彩的就是这个了
13 楼 ouspec 2009-06-29 13:49
上传的PPT下载包已经更新,可以打开了。
12 楼 ahlon 2009-06-29 13:11
zip文件打开出错
11 楼 wxmfly 2009-06-29 12:42
这是这次会议最有料的topic了,
10 楼 corrie 2009-06-29 12:38
原来是他,面试过我一次。
9 楼 poemcode 2009-06-29 12:25
老熊 写道
第5页,当前DAU,请教一下这个DAU是什么意思?

可能是Daily Active User,中文术语就是每天活跃用户数
8 楼 老熊 2009-06-29 12:20
第5页,当前DAU,请教一下这个DAU是什么意思?
7 楼 lix23 2009-06-29 12:18
打开不了,zip包有问题
6 楼 tjc 2009-06-29 12:11
下载后无法打开!
5 楼 lurker0 2009-06-29 10:13
同求ppt
4 楼 Azi 2009-06-28 23:16
有没ppt?

发表评论

您还没有登录,请您登录后再发表评论

文章信息

Global site tag (gtag.js) - Google Analytics