阅读:36427次
评论: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程序员。
程延辉的演讲获得了在场热烈的掌声。
>>猛击这里下载演讲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程序员。
程延辉的演讲获得了在场热烈的掌声。
31 楼 shake863 2010-03-09 22:47
讲讲呗
30 楼 argan 2009-12-29 09:24
29 楼 Digger 2009-09-30 21:36
skype : bluestone007
Join in group : http://javaeyeskype.group.javaeye.com/
28 楼 fanth 2009-07-23 14:11
27 楼 Durian 2009-07-11 13:24
26 楼 jeftom 2009-07-09 17:36
25 楼 Ruanluping 2009-07-08 22:26
24 楼 liyanhui 2009-07-08 12:27
23 楼 anky_end 2009-07-07 11:04
看这类系统,首先要非常清楚终端系统的设计,和具体都有多少条通讯指令(指令的设计和解析),于是你就抓住具体的项目到底是不是个大系统了。而这个产品看似很大,实则很小。
对于服务器群的设计,其实并不复杂。有两个技术路线:1. 当复载迅速增大时,你可以换更加昂贵能力更巨大的服务器;2. 通过迅速增加一台几千块钱的廉价服务器就提高负载能力。这两种技术路线造就了两种人。一般,程序员只懂得第一种最想当然的思路,于是他看到第二种做法就会觉得非常神奇。
分布式设计我觉得考虑的东西就多了,第二种做法困难的多。
22 楼 tieshow 2009-07-06 18:24
21 楼 jackeysion 2009-07-06 18:23
你牛啊啊。到处面试。面试的结果怎么样?
他是面霸?
20 楼 3623524 2009-07-06 11:16
你牛啊啊。到处面试。面试的结果怎么样?
19 楼 sin_sin 2009-07-05 15:13
18 楼 androider 2009-07-03 07:33
键对应值 ??? 映射起来 ?? 不太明白。
应该是专门针对大数据量,更大幅度的利用索引的。比如它上面提到的使用update,代替insert和delete,也可以看出是针对这种索引的,因为在索引数据里面删除或者新增一个数据是相当相当慢和耗资源的。
key-value模式,应该是将数据专门按照这种存储方式进行的设计。想想如果将自己以前的一些系统按照这种数据库方式设计,也确实是一个很好的方式,只是大部分应用根本就没有这么频繁的更改数据库数据,所以也是要因实际应用而决定。
17 楼 liu0107613 2009-06-30 21:52
能不能详细介绍,使用多少组服务器,没组服务器的DAU ,PV等数据也能Share一下。
不过架构还是不错的。
用memoryCached 异步更新数据是很不错的选择。。
16 楼 treblesoftware 2009-06-30 19:04
键对应值 ??? 映射起来 ?? 不太明白。
15 楼 NightTree 2009-06-30 09:52
这是啥意思?没有关联查询?
14 楼 zhw161541 2009-06-29 22:09
13 楼 ouspec 2009-06-29 13:49
12 楼 ahlon 2009-06-29 13:11
11 楼 wxmfly 2009-06-29 12:42
10 楼 corrie 2009-06-29 12:38
9 楼 poemcode 2009-06-29 12:25
可能是Daily Active User,中文术语就是每天活跃用户数
8 楼 老熊 2009-06-29 12:20
7 楼 lix23 2009-06-29 12:18
6 楼 tjc 2009-06-29 12:11
5 楼 lurker0 2009-06-29 10:13
4 楼 Azi 2009-06-28 23:16