Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
当Webgame邂逅Erlang<br />庆亮(qingliangcn)<br />http://www.qingliangcn.com<br />http://twitter.com/qingliangcn<br />
我们经历过的和目前的状态(明朝传奇)<br />Webgame的特点<br />Erlang的优势<br />Erlang简介<br />Erlang的劣势<br />谁合适用Erlang?<br />我们遇到的问题<br />加入我们!<br...
完全从零开始,0 Erlang基础,0 AS3基础<br />1个半月开发原型<br />2个月调整底层(区域划分的大世界)<br />开发耗时7个月 (正式立项到上线收费)<br />上线2个月内进行了大规模的后端重构与性能优化<br />完...
如雨后春笋,每年300款以上的webgame问世<br />山寨,大量同质化的产品<br />快速,3-5个月出产品<br />失败率极高,95%失败<br />门槛低,3、5杆枪就敢搞<br />稳定、不卡就能赚钱!<br />Webgame...
变量大写开头<br />函数式语言<br />变量一次绑定<br />C = 2,<br />C2 = C + 2.<br />发消息<br />map_11000 ! restart.<br />经典数据类型:tuple<br />{a, b...
入门快:<br />3天入门<br />1天写个聊天服务器<br />一周就能搭框架(基于OTP)、写代码<br />虚拟机语言、跨平台、没有底层的内存操作、基本不会挂掉:9个9的稳定性、众多稳定的底层支持<br />天生面向并发、面向架构编程...
Erlang简介之架构<br />
类似于操作系统的调度原理<br />IO和scheduler完全分开的<br />smp支持良好,几乎是线性的性能提升<br />GC,无需关注内存回收,解放开发者<br />底层实现了众多优秀的功能点:<br />100+种内存分配方式<br...
Erlang容错、稳定的快速实现方案<br />简单易用,定义了最基础的几个principle<br />怎么用<br />application  ->  my_app.erl  (start)<br />supervisor   ->  m...
一个gen_server模板<br />
{ok, Socket} = gen_tcp:listen(80, [binary]).<br />{ok, Data} = gen_tcp:recv(Socket,  5000)<br />ok = gen_tcp:send(Socket)....
global名字服务:<br />global:send(map_server, {fight, FromRID,  ToRID}).<br />基于ets,一次消耗2-3us<br />完全无视网络位置<br />rpc服务:<br />rp...
nosql方式的接口<br />mnesia:read(table_name, key)<br />mnesia:write(table_name, record)<br />mnesia:delete(table_name, key)<br ...
分布式<br />监控树(supervisor)<br />稳定性、可靠性<br />
code:purge(mod_role).<br />code:load_file(mod_role).<br />更简单的方式: c:l(mod_role).<br />热更新<br />
小众语言,招人难,有问题多数需要独立解决<br />在游戏行业里几乎毫无积累<br />纯计算性能不够强劲<br />nif/driver/port/ei/c node<br />Function语言,冲击传统的编程思维方式<br />变量一次...
C nif接口,例如寻路、AI,可能有10倍差距!<br />C node<br />ei接口<br />driver /port 方式<br />都是C方式<br />hipe(编译成本机机器码),性能平均提升2-3倍<br />多机负载<b...
新项目<br />希望快速开发和上线<br />能独立解决问题<br />Nothing!<br />谁适合Erlang<br />
Protobuferlang版本性能低下<br />每秒编解码4-5w次(100%CPU)<br />解决方法:简化protobuf协议<br />地图频繁崩溃<br />try catch   get_stackstrace<br />分布式...
欢迎加入我们!<br />有东西可以学<br />有钱可以赚<br />we need you!<br />
谢谢<br />
Nächste SlideShare
Wird geladen in …5
×

当Webgame邂逅erlang

5.134 Aufrufe

Veröffentlicht am

webgame与erlang的一点聒噪

Veröffentlicht in: Technologie
  • Dating for everyone is here: ❶❶❶ http://bit.ly/39pMlLF ❶❶❶
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Sex in your area is here: ❶❶❶ http://bit.ly/39pMlLF ❶❶❶
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

当Webgame邂逅erlang

  1. 1. 当Webgame邂逅Erlang<br />庆亮(qingliangcn)<br />http://www.qingliangcn.com<br />http://twitter.com/qingliangcn<br />
  2. 2. 我们经历过的和目前的状态(明朝传奇)<br />Webgame的特点<br />Erlang的优势<br />Erlang简介<br />Erlang的劣势<br />谁合适用Erlang?<br />我们遇到的问题<br />加入我们!<br />当webgame邂逅Erlang<br />
  3. 3. 完全从零开始,0 Erlang基础,0 AS3基础<br />1个半月开发原型<br />2个月调整底层(区域划分的大世界)<br />开发耗时7个月 (正式立项到上线收费)<br />上线2个月内进行了大规模的后端重构与性能优化<br />完全重写了一次客户端的底层<br />最高在线2300,3台机器(=_=),CPUs %17<br />预计可能3000会出现瓶颈(目前的流失还无法达到),进一步优化的空间很大<br />http://web.4399.com/mccq/<br />我们经历过的和目前的状态<br />
  4. 4. 如雨后春笋,每年300款以上的webgame问世<br />山寨,大量同质化的产品<br />快速,3-5个月出产品<br />失败率极高,95%失败<br />门槛低,3、5杆枪就敢搞<br />稳定、不卡就能赚钱!<br />Webgame的特点<br />
  5. 5. 变量大写开头<br />函数式语言<br />变量一次绑定<br />C = 2,<br />C2 = C + 2.<br />发消息<br />map_11000 ! restart.<br />经典数据类型:tuple<br />{a, b} {a, b, c} <br />其他数据类型:atom、list、record、binary、pid<br />Erlang简介之语法<br />
  6. 6. 入门快:<br />3天入门<br />1天写个聊天服务器<br />一周就能搭框架(基于OTP)、写代码<br />虚拟机语言、跨平台、没有底层的内存操作、基本不会挂掉:9个9的稳定性、众多稳定的底层支持<br />天生面向并发、面向架构编程、轻松实现各种多层架构和分布式架构<br />热更新、热更新、热更新!<br />内置的Nosql支持,同样是分布式的!<br />Erlang优势<br />
  7. 7. Erlang简介之架构<br />
  8. 8. 类似于操作系统的调度原理<br />IO和scheduler完全分开的<br />smp支持良好,几乎是线性的性能提升<br />GC,无需关注内存回收,解放开发者<br />底层实现了众多优秀的功能点:<br />100+种内存分配方式<br />epoll<br />timer wheel<br />……<br />Erlang简介之特性<br />
  9. 9. Erlang容错、稳定的快速实现方案<br />简单易用,定义了最基础的几个principle<br />怎么用<br />application -> my_app.erl (start)<br />supervisor -> my_sup.erl (init)<br />gen_server -> my_server.erl (init handle_info …)<br />gen_event -> my_event.erl (handle_event)<br />gen_fsm -> my_fsm.erl (state1/state2/…)<br />Erlang之OTP<br />
  10. 10. 一个gen_server模板<br />
  11. 11. {ok, Socket} = gen_tcp:listen(80, [binary]).<br />{ok, Data} = gen_tcp:recv(Socket, 5000)<br />ok = gen_tcp:send(Socket).<br />gen_tcp:close(Socket).<br />erl +K true<br />Erlang之epoll<br />
  12. 12. global名字服务:<br />global:send(map_server, {fight, FromRID, ToRID}).<br />基于ets,一次消耗2-3us<br />完全无视网络位置<br />rpc服务:<br />rpc:x_call(NodeName, Module, Method, [Args]).<br />需要知道结点名<br />Erlang分布式之服务<br />
  13. 13. nosql方式的接口<br />mnesia:read(table_name, key)<br />mnesia:write(table_name, record)<br />mnesia:delete(table_name, key)<br />简单的查询<br />mnesia:match_object(table_name, #p_role{level=1, sex=0, _=‘_’})<br />mnesia:select(table_name, [{#p_role{level=‘$1’, _=‘_’}, [{$1, >, 20}], [‘$1’]}]).<br />分布式,访问完全透明<br />性能数据(本机,单核)<br />50W/s+ 脏读写<br />2.5W/s事务读写 <br />Erlang分布式之mnesia<br />
  14. 14. 分布式<br />监控树(supervisor)<br />稳定性、可靠性<br />
  15. 15. code:purge(mod_role).<br />code:load_file(mod_role).<br />更简单的方式: c:l(mod_role).<br />热更新<br />
  16. 16. 小众语言,招人难,有问题多数需要独立解决<br />在游戏行业里几乎毫无积累<br />纯计算性能不够强劲<br />nif/driver/port/ei/c node<br />Function语言,冲击传统的编程思维方式<br />变量一次绑定,长逻辑比较麻烦<br />try catch风格<br />do_request/do_request2/do_request3风格<br />吃内存<br />机器成本远小于技术与人力成本<br />Erlang劣势(都有办法处理)<br />
  17. 17. C nif接口,例如寻路、AI,可能有10倍差距!<br />C node<br />ei接口<br />driver /port 方式<br />都是C方式<br />hipe(编译成本机机器码),性能平均提升2-3倍<br />多机负载<br />纯计算的性能问题<br />
  18. 18. 新项目<br />希望快速开发和上线<br />能独立解决问题<br />Nothing!<br />谁适合Erlang<br />
  19. 19. Protobuferlang版本性能低下<br />每秒编解码4-5w次(100%CPU)<br />解决方法:简化protobuf协议<br />地图频繁崩溃<br />try catch get_stackstrace<br />分布式调试<br />center log server<br />gen_server info接口<br />简化架构,消息统一接口<br />遇到的问题<br />
  20. 20. 欢迎加入我们!<br />有东西可以学<br />有钱可以赚<br />we need you!<br />
  21. 21. 谢谢<br />

×