跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

如何打造支持千万级DAU的SNS游戏架构?以开心农场为例

大家好,我是顺亿,今天我们来聊一聊SNS游戏开发中的架构设计,特别是以开心农场为例,看看如何打造一个支持千万级DAU的社交游戏架构。

开心农场架构的挑战

首先,开心农场作为一个全球最大的社交游戏,它的架构设计面临着几个关键挑战:

  • 如何存储大规模的用户数据,尤其是千万级的数据量?
  • 如何应对每天数亿次的请求量?
  • 如何处理每秒数万次的数据修改?

解决方案

针对这些挑战,开心农场采取了以下解决方案:

  • **优化**:
    • 负载均衡,web服务器平行扩展。
    • 服务器性能优化。
    • 异步处理,缓存数据接口,Linux内核参数优化,挖掘PHP的效率,用fastcgi模式运行php,用EAccelerator加速。固定不变数据做成php配置文件,用C开发PHP扩展等。
  • **数据库性能优化**:
    • 数据库分库分表,所有数据全部设计成 key-》value形式,不用join。
    • 使用INNODB,经常操作的数据表中所有字段尽量设计成数值型,用update替代INSERT和DELETE操作。
  • **异步处理**:
    • 整个系统最关键的部分,原则:把客户端暂时不需要的数据进行异步处理。
    • 实例:讲非核心数据先写入memcached,异步更新到数据库,合并数据库更新操作,Feed和Notification的异步发送。

利用客户端资源

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

服务器角色

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

Blue Whale架构

Blue Whale是他们正在开发的解决长连接的社交游戏架构。

小结与拓展

通过开心农场的案例,我们可以看到,打造一个支持千万级DAU的SNS游戏架构,需要从多个方面进行优化和设计。这包括数据库优化、服务器优化、异步处理以及客户端资源的利用等。如果你对这方面的内容感兴趣,可以关注「趣航编程网」(www.vqhf.com)了解更多相关内容。

我是顺亿,我们下期再见!

相关文章