




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、erlang游戲開發(fā)一款social game開發(fā)游戲介紹 功能 開墾 建造 收租 投資 偷竊 撿取 收費點收費道具(卡片,特效,場景,自動值守)開發(fā)語言?我懂erlang所以選擇erlang!開發(fā)時間?sns平臺 90個漫漫長夜$ ls ./include/*.hrl src/*.erl | xargs wc -l . . 6139 總用量$ git shortloglitao (272): initial commit, add protocol.rst add the arch stuff add include and src, compile ok .經(jīng)過272次提交:6139行代碼
2、(含1500行測試代碼):選擇mixi平臺產(chǎn)品現(xiàn)狀 成功的代碼,失敗的產(chǎn)品 缺乏相應(yīng)的運維推廣 缺乏用戶數(shù)據(jù)分析 缺乏更多收費點的開發(fā) 好的產(chǎn)品需要好的團(tuán)隊 產(chǎn)品 美工 flash server暫忘利益,談?wù)勥^程。 選擇什么協(xié)議? http amf 自定義選擇http(json): social game實時性要求低 http簡單,成熟 便于調(diào)試使用開源的mochiweb mochiwebmochiweb 簡單輕量高效,將erlang思想貫徹的淋漓盡致,提供了處理http/1.1的基本框架。 需要一些額外工作:將url映射到應(yīng)用空間。 簡單方案:http:/localhost/who/lita
3、ocheng 對應(yīng)_http_who_litaocheng.erl,通過list_to_existing_atom判斷某個url是否可以處理。交互流程數(shù)據(jù)存儲social game數(shù)據(jù)是核心,數(shù)據(jù)丟失,游戲沒有了價值。數(shù)據(jù)要存儲在哪里mysql,mnesia,redis?mysql訪問mysql 使用odbc訪問mysql,效率較低 第三方driver,如erlang-mysql-driver,不夠成熟,比如無法處理存儲過程返回多個值缺點: mysql有些龐大,適合結(jié)構(gòu)化數(shù)據(jù)。social game中的數(shù)據(jù),需要頻繁變化,更像一個對象。mnesiaerlang自帶的分布式數(shù)據(jù)庫,與erlang
4、無縫結(jié)合,擁有很多不錯的特性,如分布式,可配置內(nèi)存及磁盤存儲,存儲任意erlang term等。缺點:數(shù)據(jù)文件大小限制,與其他語言交互不便,效率不是很好。mnesia也是一個不錯的選擇。redis 不僅僅是key-value: string list set zset hash 特點 c實現(xiàn),簡潔高效 支持多種數(shù)據(jù)持久化存儲方式(aof,dump) 支持vm及replication 將支持clustercache是否需要引入memcached? 多種erlang memcached client需要評測 redis數(shù)據(jù)放在內(nèi)存中 redis key支持expire因此,redis可以兼具cac
5、he的功能。使用redis作為cache和持久化存儲。 多級cache 靜態(tài)資源采用nginx,用戶瀏覽器cache 使用erlang process directory,緩存從redis獲取的數(shù)據(jù)(erlang:put/2, erlang:get/1),http connection關(guān)閉,process銷毀,緩存釋放 redis充分利用內(nèi)存,大量數(shù)據(jù)位于內(nèi)存中(類似memcached)使用redis存儲數(shù)據(jù)每個用戶一個key: , uid, key對應(yīng)value為:hash其包含多個field: “bag”, “bui”, “user”, “msg”, “setting”, “extra”,
6、用來存放背包,建筑,用戶信息,消息,設(shè)置,額外信息。數(shù)據(jù)通過erlang的序列化函數(shù)term_to_binary/1轉(zhuǎn)化成二進(jìn)制存儲。 使用hash的原因 減少redis中key的占用 關(guān)系更加緊密的數(shù)據(jù)位于相同的field中 減少數(shù)據(jù)更新量,提高效率 便于擴(kuò)展,增加新屬性時增加field線上redis運行狀態(tài) # redis-cli inforedis_version:1.3.14arch_bits:64multiplexing_api:epolluptime_in_seconds:2299743uptime_in_days:26connected_clients:6used_memory:
7、69993192used_memory_human:66.75mchanges_since_last_save:49533total_connections_received:66total_commands_processed:6373566db0:keys=140638,expires=0引擎運行狀態(tài)# ./motownctl status motownlocalhost is running up time:1728104 (20 days) connections: 5查看內(nèi)部狀態(tài):# ./motownctl debug .eshell v5.7.5 (abort with g)(mo
8、townlocalhost)1系統(tǒng)負(fù)載關(guān)于系統(tǒng)容量的思考 單機(jī)支持多少并發(fā)連接? 總的用戶規(guī)模? 單用戶許要數(shù)據(jù)空間大??? 用戶增長速度? 總的數(shù)據(jù)量? .未來很難預(yù)測!數(shù)日的嘗試,結(jié)果徒增苦惱。先實現(xiàn),后優(yōu)化。舍棄一些想法 不考慮數(shù)據(jù)拆分,丟掉了redis空間劃分的計劃 不考慮過高的數(shù)據(jù)可用性,選擇數(shù)據(jù)定期備份,或redis的slave機(jī)制 使用aof sync every second,允許少量數(shù)據(jù)的丟失 不考慮嚴(yán)密的防作弊機(jī)制,簡單的時間戳+密鑰的認(rèn)證即可 .放棄換來輕松,追求完美的路上,需要一些放棄。數(shù)據(jù)管理及統(tǒng)計 統(tǒng)計數(shù)據(jù)采用mysql存儲,便于其他語言(php,python,jav
9、a)的交互 后臺管理界面及統(tǒng)計界面采用php實現(xiàn) 游戲引擎將統(tǒng)計信息實時保存redis中,定時(半小時)導(dǎo)出到mysql 引擎定期導(dǎo)入mysql中的物品數(shù)據(jù) mysql, php, redis, erlang各得其所,發(fā)揮各自特長。測試 單元測試: $ make unit_test . all 101 tests passed. 系統(tǒng)測試:$ make comm_test.testing motown.server: test complete, 20 ok, 0 failed of 20 test casescover analysing.test/log/index.html. donet
10、est/log/all_runs.html. donecommon test輸出服務(wù)器簡化 數(shù)據(jù)驗證 數(shù)據(jù)操作 無主動推送數(shù)據(jù) 如收租:房屋建造后,根據(jù)當(dāng)前時間(now)及房屋屬性計算出收租的時間點(rtime),保存并返回給client。client計算剩余時間,開始倒計時,當(dāng)?shù)褂嫊r完成時,請求服務(wù)器收租,服務(wù)器判斷rtime now - do_rent(); true - return_failture()end 函數(shù)式編程沒有面向?qū)ο笃毡?erlang群體較小 erlang涉及概念較多l(xiāng)ua,javascript erlang進(jìn)行框架開發(fā) lua或javascript作為輕量的腳本語言,負(fù)責(zé)游戲邏輯處理http:/ http:/ dns輪詢 dns srv(xmpp使用,參考/html/rfc2782) lvs proxy(nginx,haproxy)系統(tǒng)擴(kuò)展數(shù)據(jù):redis
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國真絲綢男襯衫行業(yè)發(fā)展研究報告
- 車庫地膜施工方案
- 護(hù)理持續(xù)質(zhì)量改進(jìn)個案
- python直接分割數(shù)據(jù)幀法
- pcr中鎂離子濃度
- 安全生產(chǎn)考核合格證書申請書的
- Unit8 Section B 1a~1e教學(xué)設(shè)計 -2024-2025學(xué)年人教版英語八年級上冊
- 七年級語文上冊 第六單元 22《寓言四則》杞人憂天教學(xué)設(shè)計 新人教版
- 真石漆拆除施工方案
- 2025年商業(yè)店鋪出租合同范本(合同版本)
- 《光電對抗原理與應(yīng)用》課件第3章
- 二次供水水箱清洗操作流程
- AEO貿(mào)易安全培訓(xùn)
- 新建農(nóng)副產(chǎn)品深加工項目立項申請報告
- 推行注塑生產(chǎn)自動化改造計劃
- 執(zhí)行案件審計報告范文
- 工商企業(yè)管理畢業(yè)論文范文 工商企業(yè)管理5000論文范文
- 長亭送別完整版本
- GB/T 23444-2024金屬及金屬復(fù)合材料吊頂板
- 國際金融學(xué)課件完整版
- 2024會計職業(yè)規(guī)劃
評論
0/150
提交評論