- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Erlang游戏开发.ppt - PowerPoint Presentation
Erlang游戏开发 一款social game开发 游戏介绍 功能 开垦 建造 收租 投资 偷窃 捡取 收费点 收费道具(卡片,特效,场景,自动值守) 开发语言? 开发时间? SNS平台 … 90个漫漫长夜 $ ls ./include/*.hrl src/*.erl | xargs wc -l ? ... ? ... 6139 总用量 选择mixi平台 产品现状 成功的代码,失败的产品 缺乏相应的运维推广 缺乏用户数据分析 缺乏更多收费点的开发 好的产品需要好的团队 产品 美工 Flash Server 暂忘利益,谈谈过程。 选择什么协议? HTTP AMF 自定义 选择HTTP(JSON): social game实时性要求低 HTTP简单,成熟 便于调试 使用开源的mochiweb mochiweb mochiweb 简单轻量高效,将Erlang思想贯彻的淋漓尽致,提供了处理HTTP/1.1的基本框架。 ? 需要一些额外工作:将URL映射到应用空间。 ? 简单方案: http://localhost/who/litaocheng 对应 _http_who_litaocheng.erl,通过list_to_existing_atom 判断某个URL是否可以处理。 交互流程 数据存储 social game 数据是核心,数据丢失,游戏没有了价值。 数据要存储在哪里 mysql,mnesia,redis? mysql 访问mysql 使用odbc访问mysql,效率较低 第三方driver,如erlang-mysql-driver,不够成熟,比如无法处理存储过程返回多个值 缺点:? mysql有些庞大,适合结构化数据。social game中的数据,需要频繁变化,更像一个对象。 mnesia Erlang自带的分布式数据库,与Erlang无缝结合,拥有很多不错的特性,如分布式,可配置内存及磁盘存储,存储任意Erlang Term等。 缺点: 数据文件大小限制,与其他语言交互不便,效率不是很好。 Mnesia也是一个不错的选择。 Redis 不仅仅是key-value: string list set zset Hash 特点 c实现,简洁高效 支持多种数据持久化存储方式(AOF,DUMP) 支持VM及Replication 将支持Cluster cache 是否需要引入memcached? 多种Erlang memcached Client需要评测 Redis数据放在内存中 Redis key支持expire 因此,Redis可以兼具cache的功能。 使用Redis作为Cache和持久化存储。 多级cache 静态资源采用nginx,用户浏览器cache 使用Erlang Process Directory,缓存从Redis获取的数据(erlang:put/2, erlang:get/1),HTTP Connection关闭,Process销毁,缓存释放 Redis充分利用内存,大量数据位于内存中(类似Memcached) 使用redis存储数据 每个用户一个key: [u., Uid, .data] key对应value为:Hash 其包含多个field: “bag”, “bui”, “user”, “msg”, “setting”, “extra”,用来存放背包,建筑,用户信息,消息,设置,额外信息。 数据通过Erlang的序列化函数term_to_binary/1转化成二进制存储。 使用Hash的原因 减少Redis中Key的占用 关系更加紧密的数据位于相同的field中 减少数据更新量,提高效率 便于扩展,增加新属性时增加field 线上redis运行状态 # redis-cli inforedis_version:1.3.14arch_bits:64multiplexing_api:epolluptime_in_seconds:2299743 uptime_in_days:26connected_clients:6used_memoryused_memory_human:66.75Mchanges_since_last_save:49533total_connections_received:66total_commands_processed:6373566db0:keys=140638,expires=0 引擎运行状态 # ./motownctl status motown@localhost is running up time:1728104 (20 days) connections: 5 查看内部状态: #
文档评论(0)