这里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上的一个游戏列表