魔兽世界(World of Warcraft)的背后

《魔兽世界》(World of Warcraft )对于暴雪公司(Blizzard)来说是最为重要的一款产品。开发团队对于外界来说无疑有着神奇的色彩。这篇 An Inside Look At The Universe Of Warcraft 给我们带来不少关于《魔兽世界》开发团队的信息。暴雪开发团队也是采取三层的管理方式(还好不是更多层),但是实际的汇报是根据具体的小团队而异的。他们心目中理想的的团队规模是 5-8 人,当然实际上这是办不到的事情。

目前这棵摇钱树程序代码量有 550 万行之多,程序开发人员有 32 位,当然都是顶级工程师。平台服务部有 245 人,其中 QA 部门自从游戏上线后处理了 18 万个 BUG,惊人!程序差不多似乎千锤百炼了。

《魔兽世界》目前使用大约 13250 台刀片服务器 ,75000 个核的CPU ,内存使用超过 112TB 。服务器数其实并不是特别庞大(国内有些游戏公司,比如盛大,服务器数量也差不多这样)。 不过相信随着接下来几款重量级游戏升级版本的推出,服务器数量会暴增。数据大约有 1.3 PB。服务器分布在 10 个 IDC ,不到 70 个人运营,人力产出很惊人。维护战网的人有 150 个左右。这里面有个有趣的观点是,游戏公司对于服务的可用性要求的看法与电子商务公司的并非一致,只要不是每周都有问题,一个月遇到一次问题似乎不大。算不上致命的问题,应该是用户忠诚度更高的缘故吧。看看国内的戏剧性起伏就知道了。

另外,据我了解,魔兽计费的数据库是采用的 Oracle RDBMS 。2006 年的时候大概是跑在 RedHat 上,单个 DB 超过 1T 的数据,且据说要迁移到 HP 平台。但还不了解如何跨多个 IDC 同步 DB 数据,或许简单的分片就成了,这是面向游戏的应用设计上唯一不费力的地方。

Note: 先大致描述个轮廓,等以后了解更多再逐渐补充。

EOF

此文作者:, 位于 Arch 分类 标签: , on .
转载须以超链接形式标明文章原始出处和作者信息及版权声明.

27 thoughts on “魔兽世界(World of Warcraft)的背后

  1. meteormatt.wordpress.com

    是不是九城和暴雪美国用的服务器不一样?
    我好像记得九城以前从一开始就老说自己用的是惠普HP至强服务器的…
    至于对不对我就不清楚了.
    但是感觉九城的水平不像是能搞定RedHat的样子.
    具体的建议大家去艾泽拉斯国家地理杂志上去看看.
    好像是NGA的样子..

    Reply
  2. dawnh

    18w个bug?如果按程序代码行数算,那得一行代码出多少个bug啊?哈哈,玩笑,这18w个bug可能有很多是脚本剧情带来的,程序bug不太可能这么多。

    Reply
  3. fei

    这时候就发现游戏和web不一样的地方了……
    突然对游戏圈的同行们心生向往了……
    只要坏了后能修好就行。
    而web基本上是“不能坏”……

    Reply
  4. 酱油党

    可以确认的是:
    1. HP刀片
    2. Oracle RAC + RHAS + x64
    3. RAC在刀片上很糟糕,貌似迁移到HP小型机。
    早期9c搞定红帽水平还是有的。
    最早solaris x86从7开始
    后来web主流是FreeBSD(高负载静态), Solaris x86 (后来迁移到RHAS),也有win2k跑wow bbs(某程序员2周写完,然后全是bug,改了很长时间)
    wow么,blz有自己的一套标准,9c跟着走而已。不按照合同办事是要被搞死的。

    Reply
  5. hoterran

    07年在blizzard.com上看到oracle dba 的招聘贴,心动不已。
    盛大也就计费用oracle。机器2w+了。
    游戏服务器win居多,基本上重启一下就行了,性能基本不考虑,肥了m$。

    Reply
  6. Anonymous Coward

    IBM 刀片,HP 小型机,EMC,SUN 磁带机,RHEL,Oracle,网易大概是这些。

    Reply
  7. big bear

    九城是HP AMD刀片,HP 8620 UNIX,今年上半年最后一个分区上了IBM Intel 刀片
    网易是 IBM Intel刀片,用了最新的N系四核,UNIX仍然是HP,但升级到了8640,每台蛮配32个Core 1.6GHz,大概28台
    Oracle只用了DBEE和 partition,没有跑RAC,据说可能用类似veritas实现高可用性的,这个fenng再确认一下
    DB直接用暴雪远程维护,九城压根冒得权利管控,所以当年骂九城都是骂错的

    Reply
  8. Fenng

    @big bear
    其实,RAC… 在线 OLTP 很少有跑 RAC 的. 负责任的说.
    暴雪的DB的确是远程维护的,但现在网易也有不少 Oracle DBA

    Reply
  9. Marty

    RAC不太可能吧,或者是说有周边的统计和报表业务用了RAC机器
    DBA玩WOW的比率据说很高哦:)不过都是修仙玩家

    Reply
  10. Anonymous Coward

    Veritas 很有可能,因为我听 boss 们提起过……
    不止数据库,所有机器都是暴雪自己远程维护的。

    Reply
  11. 路过党

    何止是远程维护,中国人进出机房都的老美远程确认。
    当然老美DBA也出过一次大错误
    维护时候没有考虑当地时间,按照美国时间进行维护中国数据库。结果时间中国下午的高峰,所有区全部挂掉。
    WOW结构很简单
    前端无盘都是HP刀片,才开始时候好像是4G内存。后端是SAN存储阵列。管理都是HP的ILO口。
    wow的官网和BBS是九城自己维护的,这也是九城仅有的一点权力。
    最开始连客服申请恢复数据都要老美批准。
    PS
    酱油党,我们应该认识的。

    Reply
  12. 路过党

    数据同步方面
    老美也被国内的网通和电信划分给搞郁闷了。
    九城只好在小网通弄了些机器让老美走那边中转到北京,然后再转回到美国。

    Reply
  13. Fenng

    @路过党
    网通和电信的鸿沟,给 DNSPod 一个很大的成长机会。这是一家有可能壮大的公司。

    Reply
  14. Ding Deng

    智能 DNS 的问题在于,客户端使用的网络线路与其使用的 DNS 服务器并不总是一致的。

    Reply
  15. jcooooool

    big bear
    貌似是HP RX8640 Server
    智能DNS最大的问题是,谁手头有中国境内最精确的IP地址信息?电信和网通都太不靠谱了,精确到市级都很难。

    Reply
  16. Ds.3783

    WOW绝大部分bug是策划的bug,真正产品的bug很少,但是也有主要是某些显卡的兼容性问题,或者某些插件引起消耗过多资源问题,又或者是某几个技能释放的时候产生变态强的攻击力导致游戏公平性失衡的问题 etc.

    Reply
  17. 路过党

    wow的BUG很多的,只是很多都没拿出来说。
    有游戏设计里面的代码逻辑问题
    有整个游戏架构也有很大的问题,后面做了大的调整。
    暴雪程序员接到BUG的态度很不好,认为我们是在忽悠他们。

    Reply
  18. 酱油党

    RAC 是存在的,不过都是本地,也就是每个区有一个自己的RAC。不存在全局化的RAC。早期来说,RAC 存在于在采购合同里面。
    八卦:因为DB问题,blz跑掉过一个DBA,说不高兴玩了。
    传说:早期网络也是一团糟,内外网全部搞在一个vlan里面,广播冲突什么的一堆。
    服务器硬件,可以很肯定地说,第一批刀片一定是HP Xeon 2.8G。iLO部署很自然,顺带着改造机房,搞点汤姆森插座啥的。标配有摄像头,网络监控。
    当然,因为打酱油打过头了,没有更加深入了解到里面的东西。
    路过党… 我知道你是谁了。我继续打酱油。

    Reply
  19. Fenng

    RAC ,其实并不适合这样的应用 :)
    可见任何技术架构都是在不断试错中改进的

    Reply
  20. Felix

    Good
    Website!
    I Truly
    Love How It Is Easy
    On My Eyes And The Data Are Well Written. I’m
    Wondering How I Might
    Be
    Notified Whenever
    A New Post Has Been Made. I
    Have
    Subscribed To Your Feed
    Which Must Do The Trick! Have A Great
    Day!

    Judi Bola Teraman Indonesia

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *