随笔分类 -  Scut

Scut 上线后遇到的问题
摘要:1. 上线后的大并发问题: 这段消息监听的代码在大并发时遇到了重大的问题,无论初始化多少信号量,都会进入等待消息的状态,只有完整地接受完一条消息,才会释放一个信号量出来。因此,特别是在单个协议较大,或者并发访问量较大的情况下,服务端很快会陷入大部分信号量被锁死在等待接收消息的情况。 解决方案则是在“ 阅读全文
posted @ 2016-12-27 21:51 青墨淡潋 阅读(193) 评论(0) 推荐(0)
Scut:账号服务器问题修正
摘要:姑且记录一下,以防未来出现bug回来看看今天改了哪些。 原 Scut 账服是应用于 渠道频道 的账号服务器,每天会发放大量的游客账号,它有一个“自动将已经被注册了一段时间的游客账号再重新推送给其他申请游客账号的人”的机制。 首先需要将这个机制予以屏蔽。 在注册请求时,校验MD5值,从 HttpReq 阅读全文
posted @ 2016-11-04 20:42 青墨淡潋 阅读(186) 评论(0) 推荐(0)
使用 Scut 搭建通服架构
摘要:整体通服的架构图如下: 整体思路: 尽量将公共的业务逻辑分拆到单个业务服务器; 公共业务RDB读写分离,提高IO并发量; 角色简要信息、角色战斗信息修改后将ID压入修改队列,简要信息每3分钟通知同步一次redis,战斗信息每10分钟通知同步一次redis; 单公共业务服务器,是以单机架构还是分布式架 阅读全文
posted @ 2016-10-16 11:56 青墨淡潋 阅读(286) 评论(0) 推荐(0)
Scut DirCenter 网站编辑、搭建与调试
摘要:直接利用 Scut 提供的服务器管理工具进行服务器管理。 教程:https://github.com/ScutGame/Scut/wiki/DirServer。 几个注意点: 下载的数据库导入bat是 UTF8 编码格式的,DOS执行会乱码,将其另存为 ANSI 格式编码的再执行; 新的站点需要开新 阅读全文
posted @ 2016-10-13 13:43 青墨淡潋 阅读(220) 评论(0) 推荐(0)
Scut AccountServer
摘要:开始以Scut搭建服务器框架: 1. 初始目录结构: libs 存放 scut 的引擎文件; release 存放 src 输出的文件; src 存放各子工程源文件; 2. Install.bat:目的是将 libs 里 scut 的引擎文件复制到各工程上。 3. 将 6.7.9.10 的引擎库文件 阅读全文
posted @ 2016-10-12 11:22 青墨淡潋 阅读(259) 评论(0) 推荐(0)
Scut 进阶:Schema 自动检测
摘要:Scut 在启动时有一个自动根据代码中数据类型检查数据库字段的功能,要如何使用呢? 脚本引擎动态加载 ModelAssembly: ScriptEngine.cs - InitScriptRuntimeScope: EntitySchemaSet.cs - LoadAssembly: 可以得知,需要 阅读全文
posted @ 2016-09-01 13:49 青墨淡潋 阅读(250) 评论(0) 推荐(0)
Scut 进阶:EntityChangeEvent
摘要:EntityChangeEvent 最重要的两个变量:ItemEvent、ChildrenEvent。 ItemEvent 的功能流转: 从整个跳转图可以看出,这个功能的作用是 -- 自动将数据修改保存至redis。 1. 首先要逐层地“AddChildrenListener”,将上层的 Notif 阅读全文
posted @ 2016-08-31 16:14 青墨淡潋 阅读(279) 评论(0) 推荐(0)
Scut 进阶:网络模型拓扑
摘要:处理消息流程: 关于是否能用 json 串作为 response? 在最后写消息的时候要加上控制选项,将Response类型,事直接以字节流,还是转json串再转字节流的方式进行编码了,如果要转json,还要进行反射来获取类型名。 还有一个疑问:HttpAsyncHandler 的 Excute,为 阅读全文
posted @ 2016-08-26 15:23 青墨淡潋 阅读(239) 评论(0) 推荐(1)
Scut:运行测试服务器
摘要:在大致过了一遍Scut的底层结构(其实只是对各个组件有了一个初步印象而已),现在开始尝试搭建“口袋天界”的Scut服务端。 1. 设置外部启动项 项目属性 -- 调试 -- 启动外部程序 -- 项目根目录下的 GameServer.exe; 2. 正常安装环境后启动server,Db无法连接 通过官 阅读全文
posted @ 2016-08-22 19:54 青墨淡潋 阅读(403) 评论(0) 推荐(0)
Scut:缓存管理
摘要:Scut 的缓存管理看起来还是蛮复杂的。 redis 本身就有内存缓存+持久化的作用,Scut还是自己封装了一层内存缓存+Redis缓存+持久化。 。 这是一个缩略版本的结构图。 1. 上半部分是通用的缓存池结构,用来存放各类缓存数据。 第一层Dictionary是按大类区分:Entity_{0}、 阅读全文
posted @ 2016-08-21 21:26 青墨淡潋 阅读(603) 评论(1) 推荐(0)
Scut:Redis 资源管理器
摘要:核心文件是:RedisConnectionPool.cs 对象池类的通用泛型封装:ObjectPoolWithExpire<T> 1. 主要变量 2. 初始化 3. RedisClient 获取、读、写操作 句柄获取: 读取: 先来看下应用层是如何加载数据的: 写入: 这里只看一个最常用的事务写入, 阅读全文
posted @ 2016-08-19 18:30 青墨淡潋 阅读(562) 评论(0) 推荐(0)
Scut:脚本引擎
摘要:Scut 可以执行 C#、Python、Lua 三种类型的脚步,Scut 是如何加载并传递参数的呢? 首先值得注意的是:Scut 在编译时就会将逻辑层脚本源码复制到bin/Script的目录下。 1. ScriptRuntimeDomain、ScriptRuntimeScope、ScriptDoma 阅读全文
posted @ 2016-08-16 22:32 青墨淡潋 阅读(1219) 评论(0) 推荐(0)
Scut:GameWebSocketHost 解析
摘要:想使用 Scut 做的是一个短连接项目,所以先直接看 GameWebSocketHost 了。 先来看下 GameWebSocketHost 的成员: 由之前的分析可知:SocketListener 搞定了监听、底层IO,那么ActionDispatcher 应该负责上层消息的分发了。 构造函数做了 阅读全文
posted @ 2016-08-16 12:09 青墨淡潋 阅读(914) 评论(0) 推荐(0)
Scut:SocketListener 的解析
摘要:大致浏览了一遍,Scut 的网络模型采用的是 SAEA 模型, 它是 .NET Framework 3.5 开始支持的一种支持高性能 Socket 通信的实现。 通过分析 Scut 的套接字监听控制,就能大致明白它是如何使用 SAEA 架构的。 1. 套接字缓冲区内存管理器 先来看下 Scut 对套 阅读全文
posted @ 2016-08-14 20:25 青墨淡潋 阅读(1861) 评论(0) 推荐(0)
Scut:从PackageReader分析客户端协议规则
摘要:看第一个解析API: 再看如何分隔数据包: 看 Scut 的官方文档,对此也说的很清楚:第一部分是字符串的格式流(命名为Get Params),第二部分是扩展数据流(可选),支持上传些文件流或图片流等,与第一部分之间需要以两个换行(\r\n\r\n)符分隔。 重点则是对第一部分的格式分析: 总结: 阅读全文
posted @ 2016-08-13 20:33 青墨淡潋 阅读(370) 评论(0) 推荐(0)
Scut:参数导入方式(有遗留疑问)
摘要:先上一段代码: 可以看到,配置都是通过 GetServerSection、GetProtocolSection 等API导入的。 再来看一下 GetServerSction 的具体操作: ConfigUtils 是控制 app.config 配置的。那么,我们可以很清楚地明白,Scut 的配置,如果 阅读全文
posted @ 2016-08-13 16:55 青墨淡潋 阅读(433) 评论(1) 推荐(0)
Scut:通用配置管理器
摘要:1. 配置节 ConfigSection 可知,使用一个 key-value 型的链表结构来管理 基础配置。 ConSection 里包含了对链表的操作: 连接配置节:最重要的是增加了对“目标连接”的管理。 2. 配置的抽象 数据配置:首先数据配置域管理了配置节的集合。 下面来看更重要的几个变量与功 阅读全文
posted @ 2016-08-10 22:44 青墨淡潋 阅读(372) 评论(1) 推荐(0)
尝试跑一跑Scut
摘要:前段时间都在用 IIS+WCF+Redis+MSSQL 的框架做服务器,前段时间看到了 Scut 的开源框架,整个架构还是蛮干净整洁的... 今天抓来跑一跑。 按照教程安装好所有的环境,版本是6.7.9.11。 设置好 GameServer.exe 作为启动项后,报错: 在 GameServer 的 阅读全文
posted @ 2016-08-04 16:29 青墨淡潋 阅读(274) 评论(0) 推荐(0)