后端开发
丿寒风
game dev
展开
-
基于libevent的网络服务器模型
概述本模型中采用了多线程技术,主线程和子线程之间通过管道进行通信。 服务器有主线程和一组工作线程,其中主线程只负责监听客户端的链接请求,并将请求平均的分配给工作线程。 工作线程负责处理与客户端的链接以及相关的业务。每个子线程维护一个连接队列,每一个连接有一个反馈的队列。设计思路说明初始化和线程间通信工作线程在初始化的过程中会注册管道的可读事件,主线程只注册对监听套接字的可读事件。 主线程和转载 2017-03-23 16:42:45 · 784 阅读 · 0 评论 -
ibevent在windows下的使用示例之定时器
一 主循环每个服务器都有一个主循环,在开始主循环的过程中,会用到以下几个函数:// 创建成功返回一个拥有默认设置的 event base// 创建失败返回 NULLstruct event_base *event_base_new(void);// event_base 的释放void event_base_free(struct event_base *base);// 指原创 2015-03-10 17:15:15 · 1085 阅读 · 1 评论 -
libevent在windows下使用步骤详解
libevent是一个常用的网络库,下面就看看在windows下面编译测试的过程吧。一 环境系统:win8.1编译器:VS2013官方下载地址:http://libevent.org/版本:2.0.22-stable二 编译静态库1 解压把上面下载到libevent-2.0.22-stable.tar.gz解压,得到libevent-2.0.22-stabl原创 2015-03-08 16:46:43 · 14570 阅读 · 5 评论 -
ssh登陆设置
一 生成密钥对打开本地终端,执行 ssh-keygen 命令创建密钥对:ssh-keygen -t rsa -C 'your email@domain.com'-t 制定密钥类型,可以省略,默认为 ras-C 设置注释文本,方便知道每个公钥是谁的,可以省略在生成的过程中要求:输入保存文件名,默认为 id_rsa输入登陆口令,默认为空生成好的密钥对保存在 ~/.ssh 目...原创 2019-03-24 21:15:40 · 446 阅读 · 0 评论 -
手游戏服务器集群
一 分类游戏服务器按照功能分独立的进程,一般分类如下: gm 中心服 db 数据库服game 游戏逻辑服gate 前端服gm在一个集群中只有一个,其他可以有多个,同类服务器之间都没有连接。gm跟所有的服相连,帮助其他服交换信息,控制其他服的关闭,跟所有的game连接,用于广播和game之间信息的转发。db跟数据库相连,接受game的请求,负责数据的存取,方便game异步读写数据库。gam原创 2017-04-20 22:59:25 · 1982 阅读 · 0 评论 -
actor, reactor与proactor模型
高性能服务器的几种模型概念: actor模型: 实体之通过消息通讯,各自处理自己的数据,能够实现这并行。 说白了,有点像rpc。 skynet是actor模型。reactor模型: 1 向事件分发器注册事件回调 2 事件发生 4 事件分发器调用之前注册的函数 4 在回调函数中读取数据,对数据进行后续处理 libevent是reactor模型。proactor模型: 1 向事件分发原创 2017-03-10 17:07:40 · 2609 阅读 · 0 评论 -
服务端开发笔记一:服务器架构探索
一 背景在网易的第一个项目《恶魔不要啊》到现在基本结束了,马上要开新项目了。下一个项目在开启之前打算先做一个测试项目,因为目下HTML5游戏特别火,下个项目需要支持HTML5。目前国内可以选择的有cocos2d-js和egret,这个测试项目同事有这两个引擎开发,对比一下两个引擎,看看选哪个比较合适。之前一直做前端,下个项目打算转后端了,下面是我们这个测试项目用的服务器架构。原创 2015-04-28 12:20:13 · 1653 阅读 · 0 评论 -
手游服务器之数据IO进化
这里数据IO是指游戏数据存盘和读取。如果IO处理不好,服务器在IO时会导致,游戏卡顿较长的时间,严重影响游戏体验。最近服务端刚好对IO这一块做了优化,把优化过程记录一下。一 原始版刚开始立项的时候,只是做了一个Demo,加上也刚开始做服务端,只是做了一个仅仅能够测试用的服务器。当时是在每个场景对象area中添加了一个users对象,通过uid来保存每个玩家的数据。当玩家原创 2015-08-19 20:16:58 · 3503 阅读 · 4 评论 -
大型手游登录流程详解
游戏登录过程在玩家的眼里是非常简单的,只需要点一下登陆按钮即可;实际上这个过程没有想象的那么简单,特别是在手游中,一般会加入第三方渠道之后;下面就把这个登录的整个过程写下来。一 登录渠道(客户端)流程:1 客户端输入渠道账号user_name和密码password;2 登录,登录SDK成功之后,会返回一个token;3 保存token;传入:app_id、a原创 2015-08-31 19:36:43 · 7568 阅读 · 1 评论 -
《龙之谷》手游服务器数据管理
昨天听同事聊起龙之谷的服务端架构,有些新颖和值得学习的地方,姑且在此总结,加深下理解,也算是做个笔记。架构龙之谷的服务端架构主要的特点就是将数据分块。服务端在设计数据时,按照不同功能将数据分块,比如:玩家属性,技能,帮派,排行块等,每个模块就是一个内存对象——keeper,这样就能按功能模块来管理数据。keeper是如何管理数据的呢?在服务器启动时,所有keeper都加载到内存。原创 2016-04-16 18:20:17 · 3765 阅读 · 0 评论 -
Google protocol buffer使用笔记
一 下载Google下载地址:https://developers.google.com/protocol-buffers/docs/downloads?hl=zh-CNGithub下载地址:https://github.com/google/protobuf我这里下载版本:protobuf-2.6.1.tar.gz二 编译1 解压将上面的压缩包解压到文件夹 pro原创 2015-04-13 20:11:36 · 2128 阅读 · 3 评论 -
Google Protocol Buffer 的编码方式
Google Protocol Buffer 使用到了两种编码方式:Varints 和 zigzag。一 Varints 编码每个 byte 只用 7bit 表示数字,最高位 bit作为标志位,如果为: 1,表示后续的 byte 也是该数字的一部分; 0,表示结束。因此值越小的数字使用越少的字节数。例如小于 128 的数只需要用一个 byte 表示。 1: 0000 0001原创 2016-08-11 16:44:44 · 992 阅读 · 1 评论 -
socket编程之二:两种链接类型tcp和udp
前面一篇文章说到了一些计算机网络的基础知识,引入了socket,从这节开始,就进入正题了。一 概率TCP:Transimission Control Protocol传输控制协议。UPD:User Datagram Protocol用户数据包协议。两者都属于上一篇文章说的OSI模型中的第四层——传输层的协议。两者相比:TCP协议面向连接,UDP协议面向非原创 2014-08-17 00:15:08 · 2420 阅读 · 0 评论 -
nodejs的安装和使用
一 下载下载地址:https://nodejs.org/download/二 安装1 win7系统直接双击,就可以运行了;2 win8需要使用管理员权限运行,否则会报错Error 2502,Error 2503;具体过程参考:http://jingyan.baidu.com/article/a3a3f811ee92268da2eb8af2.html三 执原创 2015-03-16 21:32:01 · 911 阅读 · 0 评论 -
socket编程之三:socket网络编程中的常用函数
1 socket()函数原型:int socket(int domain, int type, int protocol);描述:类似打开一个文件,返回一个socket描述符,唯一标识一个socket,后面相应的操作都是这用这个socket描述符。参数:domain:协议族,常用的协议族有AF_INET、AF_INET6、AF_LOCAL、AF_ROUTE等;协议族决定原创 2014-08-17 23:09:22 · 1647 阅读 · 1 评论 -
socket编程之一:计算机网络基础
在开始学习网络之前先复习下计算机网络基础吧。鲁迅说,天下文章一大抄,看你会炒不会炒,基础知识就抄抄书吧。一 分层模型1 为什么分层为了简化网络设计的复杂性,通讯协议采用分层结构,各层协议之间既相互独立又相互高效的协调工作。对于复杂的通信协议,其结构应该是采用层次的。分层的协议可以带来很多便利:分层的好处有:a> 灵活性好:当任何一层发生变化时,只要层间接口关原创 2014-08-16 03:40:12 · 3125 阅读 · 1 评论