游戏服务器分析

255 阅读1分钟

ServerServiceManager服务启动管理器,单例,包含一个Map<String serviceId,IService> 方法:注册服务,获取服务,移除服务

GlobalManager 各种全局的业务管理器、公共服务实例的持有者,负责各种管理器的初始化和实例的获取

LocalNetService 本地网络服务

GameServer server = new GameServer();

       super(ServerServiceManager.SERVICE_ID_ROOT);
       this.globalManager = new GlobalManager();
       this.localNetService = new LocalNetService();

server.startServer();
    输出日志:服务器启动中
    init(configFile);
        initSpring();   初始化spring容器
        globalManager.init(configFile);
            //从spring中获取localSpringBeanManager的实例,然后设置到LocalMananger里面的localSpringBeanManager成员变量中。localSpringServiceManager,localSpringServicerAfterManager
            initLocalManger();
            //初始化本地服务// //初始化game-excutor更新服务
            initLocalService();

           //初始化消息处理器
           //根据使用的协议的不同,初始化tcp和udp处理队列    gameTcpMessageProcessor,GameUdpMessageOrderProcessor,并将其添加到LocalMananger中
           initNetMessageProcessor();
           //扩展使用(没有内容)
           initGameManager();
    start();
          //根据更新器执行类型启动更新服务updateService.start();
          globalManager.start();
          //首先初始化处理器initChannelInitializer();根据 GameServerConfig,创建GameNettyTcpServerService,GameNettyUdpServerService,GameNettyRPCService
          localNetService.startup();
          //创建服务器启动结束服务 并调用启动startup方法,并且添加到了LocalManager中
          LocalMananger.getInstance().create(GamerServerStartFinishedService.class, GamerServerStartFinishedService.class);
           //注册停服监听器,用于执行资源的销毁等停服时的处理工作
          addShutdownHook();
          //游戏服务器运行时数据,打开服务
         GameServerRuntime.setOpenOn();


    输出日志:服务器启动成功,正在运行