开发一个游戏服务器需要掌握的开源技术
2021-11-22
基本信息
详情
网络库
libevent,boost.asio等网络库,网上有很多开源网络库,与其自己造轮子,不如就用开源网络库作为自己服务器的通讯库。最出名的就属libevent和boost.asio了。 - Boost:Boost的ASIO是一个异步IO库,封装了对Socket的常用操作,简化了基于socket程序的开发。支持跨平台;
libevent:是一个C语言写的事件驱动的开源网络库;
skynet:云风写的 skynet(c + lua) 游戏服务器框架,简单好用;
Muduo:陈硕写的 Muduo(c++),陈硕全程在秀他的c++技术;
KCP: 上面提到过了,主要是对UDP的封装,有兴趣的可以看下;
协议解析
protobuf: 全称Google Protocol Buffers,是google开发的的一套用于数据存储,网络通信时用于协议编解码的工具库。它和XML或者JSON差不多,也就是把某种数据结构的信息,以某种格式(XML,JSON)保存起来, protobuf与XML和JSON不同在于,protobuf是基于二进制的。主要用于数据存储、传输协议格式等场合。
protobuf他的优势是对于传输比较大的数据产生的数据很紧凑很小,可以明显减小传输量。
而且处理速度也比较快,又有各种编程语言的实现,例如C++,Java,PHP等等。 缺点是不能明文编辑(数据是二进制的)。
用protobuf rpc进行数据传输很方便,所以是一个不错的选择。google protobuf只负责消息的打包和解包,并不包含RPC的实现,所以需要自己实现。
缓存
memcached:一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。可以用来做缓存,比如客户端本来每次操作都需要操作数据库,会严重影响效率,这时在中间加一层缓存系统,就提升了性能。基于http协议的通信用memcached是一个不错的选择,如果是tcp长链接,直接维护一个在线的内存对象就可以了。
Redis: 和memcached类似,主要的区别在于Redis支持存盘,可以当作数据储存,同时支持多种数据类型,比如ZSET经常用来做游戏排行榜。
用户点评
英鸟网发布信息规范(20260723更新)
英鸟新功能上线:城市归到大区!置顶可自助下单!时间缩短至一周!
炉头维修 清洁风机 煤气证书 厨房设计
阿肯色州"蜘蛛侠"司机暖心助轮椅老人过马路
俄亥俄"恐怖屋"母亲否认孩子像"野人",律师称因贫困所致
敏感货8.5/斤 冻品冷链 中英唯一
纽约灭门惨案:警方未排除母亲涉案,儿童保护曾接10次举报
18岁少女命丧国会女议员丈夫豪宅,母亲称真相终将大白
全球学生公寓 优质房源
墨尔本少女藏尸冰箱案:指控一降再降,仅余一项罪名
捡漏康州豪宅发现三具腐尸,死因疑为一氧化碳中毒
广告位招租中
纽约女子偷邻居价值4300美元地毯"改造",被关警局7小时
巴德诺赫警告:英国增税即将来临
招聘油包兼打杂包住
请熟手油包
外卖店请炒饭面
外卖店请熟手炒饭面
伦敦东南六区出
炒饭面
走位 +炒餐
伦敦南三区请厨房炒饭面
外卖店请炒饭面
油包


