skynet结构:批量服务办理计划
skynet很经典的用法是节点内会有批量的服务跑相同的模块逻辑。服务的生命周期办理显着是跟事务强相关的,需求依据实践事务对应做适配的生命周期办理计划。显着最直接的计划便是服务常驻,跟进程的生命周期同步,当服务的数量级不大时,以为耗费可控,计划是适用的,也防止过度规划。
这儿想谈的是单节点数千服务的场景下对应的服务办理,以游戏项目中常用根底模块为例;
玩家署理服务(client):显着服务的生命周期需求跟玩家上线下线同步,即玩家上线时创立分配服务,下线时毁掉服务,当然实践计划通常会多加一些处理,比方优化重登状况:下线时冻住服务指定一段时间,超时才毁掉退出,优化玩家频频上线下线形成的功能耗费;
谈天频道署理服务(chat):谈天频道的特点是玩家集合度显着,散布不均。这儿以 为每个频道创立独立服务 的计划来评论。那么不同的服务拜访热度是不同的,恳求会会集在少量的频道服务中。这时候对服务运用搁置毁掉的办理计划,必守时间内没有恳求抵达则主动毁掉退出服务,每次恳求都查看服务是否存在,不然先创立服务;
btw,这个计划或许需求重视的当地:1. 服务创立动作由恳求触发,当恳求存在并发场景时,需求重视处理临界区状况;2. 守时毁掉的距离需求依据实践事务来评价适宜的值,不合理的毁掉距离反而会拔苗助长增大功能压力;
周期赛事服务(activity):赛事活动的特点是,服务有显着的有效期,在一段固定的时间内收效,那么适用于会集创立毁掉的办理计划,在赛事开始时批量创立拉起服务,在赛事结束时批量毁掉;当服务量级过大时,能够考虑引进上述搁置毁掉处理计划;
团队署理服务(team):每个团队运用独立服务署理,服务应该是常驻的,但量级是O(N),N是团队总数量,上限不可控,且团队节点通常是单点节点,体系存在理论上限。团队服务的特点是活跃度差异大,这儿适用于 lru 办理计划,评价体系安全承载的服务数量上限,按活跃度规矩进行有序办理,末位筛选毁掉超出上限的冷服务,当冷热切换过于频频时,就需求进步节点承载才能(机器配置)了。