這裏html
如今比較流行的兩種數據庫,關係型數據庫mysql,sql server和非關係型數據庫redis、mongodb。mysql
memcached曾經的優點是能夠集羣,可是如今redis也能夠了。git
redis支持更多數據結構,支持數據持久化。因此redis能夠看作memcached的超集。github
redis最強大的特性是zset,redis有hash,可是隻有一層深度,mongodb是有理論上無限深度的hashredis
mongodb是真正的數據庫,而不是緩存數據庫,他的競爭對手應該是mysql等rdb數據庫sql
實際應用中,我認爲最佳搭配是mysql + redis,操做都很方便,兼顧速度和容量mongodb
點這裏數據庫
https://github.com/cloudwu/skynet/wiki/MemoryHook緩存
客戶端與服務器之間協議通訊,能夠用tcp或者http。主要看遊戲模型,若是是那種弱聯網單機玩法,用http足夠了。服務器
不過tcp用的比較仍是比較多的。如今的網絡遊戲大多數都是tcp,像MMORPG類遊戲。
udp:其實遊戲是有udp的,在一些高效率的場景下好比pvp即時戰鬥,tcp的擁塞控制和超時重傳並不適合,有些就用的udp,而後本身作丟包重發,拿網絡公平性換遊戲局部的效率。
在遊戲服是單機玩法用http協議,戰鬥服須要長鏈接保存協議狀態,用的tcp。
1.protobuf - 你們都知道的protobuf
2.Json - 這個算湊數嗎?
3.MessagePack - It's like JSON. but fast and small.
http://blog.51cto.com/yaocoder/995210
libevent,boost.asio等網絡庫,網上有不少開源網絡庫,與其本身造輪子,不如就用開源網絡庫做爲本身服務器的通信庫。最出名的就屬libevent和boost.asio了。
Boost的ASIO是一個異步IO庫,封裝了對Socket的經常使用操做,簡化了基於socket程序的開發。支持跨平臺。
libevent是一個C語言寫的事件驅動的開源網絡庫
RPC底層模式
基於基於zeromq(rabbitmq)的跨進程通訊
zeromq:消息隊列,一個穩健,簡潔的多進程通信方案的基礎。ZeroMQ 並非一個對socket的封裝,不能用它去實現已有的網絡協議。它有本身的模式,不一樣於更底層的點對點通信模式。它有比 tcp 協議更高一級的協議。
actor模式
參考skynet集羣
http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html
log4cxx
games github上的一個遊戲列表