由于最近在计划工作的变动,想要好好规划自己的未来,在这段时间内自己会休息一段时间。就在工作交接的空档,对自己维护的项目以及近年来对工作做一些整理总结,发现了自己的框架在设计中对看门狗有两种不同的方式,因此把它分享出来,希望对接触它的人有所帮助,当然其中不乏纰漏,希望大家指正!记忆之中似乎以前也稍微写过类似的文章,不过没有这次总结来的完善。(这两天狗狗币很疯狂,手动狗头)
看门狗顾名思义,它就和字面意思一样是用来看家护院的,保护某个东西不被侵犯。在游戏服务器设计中,它就是用来保护游戏服务器不受到攻击。还记得曾经玩过一个“看门狗”的游戏,对此有过形象的解释,如果狗狗被带坏,那么我们所要保护的东西就很危险了。
最近接近无业之时,整理自己过去工作和项目用到的设计,利用plain framework和skynet两种框架分别实现两种不同的效果,其各有优劣,因此在这篇文章中做相应的总结分析。
plain-simple在以下简称PF,skynet-simple简称SS
plain-simple 简介
目前有三个示例的应用:看门狗、逻辑服务器、客户端,主要的逻辑放在LUA脚本处理。这个示例并没有完整的给出游戏服务器的具体逻辑,比如玩家模块、地图模块等等。
其看门狗的实现方式大致图如下:
1、PF中利用了路由和转发的方式来实现看门狗,即只有当看门狗认证成功后数据才能由客户端转发到相应的服务器
部分实现的代码
在服务器(logic server)可以使用以下代码进行路由请求:
pf_net::packet::RoutingRequest routing_request; routing_request.set_destination(destination); // 请求路由的目标服务 routing_request.set_aim_name(aim_name); // 请求路由的连接名 routing_request.set_aim_id(aim_id); // 请求路由的连接ID result = connection->send(&routing_request);