iohao / ioGame

无锁异步化、事件驱动架构设计的 java netty 网络编程框架; 轻量级,无需依赖任何第三方中间件或数据库就能支持集群、分布式; 适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景; 通过 ioGame 你可以很容易的搭建出一个集群无中心节点、集群自动化、分布式的网络服务器;FXGL、Unity、UE、Cocos Creator、Godot、Netty、Protobuf、webSocket、tcp、socket;java Netty 游戏服务器框架; Java Netty Game Server.
http://game.iohao.com
GNU Affero General Public License v3.0
918 stars 205 forks source link

本地启动逻辑服务摘除 ActionMethod 注解的方法都流量 #340

Closed simple-Jian-tw closed 3 months ago

simple-Jian-tw commented 4 months ago

你的问题

描述你遇到的问题

在测试过程中由于iogame逻辑服没有做环境的隔离。在开发测试阶段,在本地启动逻辑服时,流量会按照比例请求到开发的本地。 若本地debug,则会阻塞客户端的逻辑(表现为客户端无响应)。 为了避免本地启动吸引流量到本地。在本地启动时,本地做了改造,传入一个空的NoneActionScannerBase( 作为ioGame的基类包,空的基类包。目的是为了关停ioGame的action入口)

image

image

预期值

期望的预期值 被@ActionMethod注释的方法没有来自于网关路由的流量。

实际值

实际值 有流量进来且服务有NPE

image

复现步骤

描述复现步骤,并提供复现 demo

版本

simple-Jian-tw commented 4 months ago

public void register(BrokerClientProxy brokerClientProxy) {

    // 相同业务模块(逻辑服)的信息域
    String tag = brokerClientProxy.getTag();

    BrokerClientRegion brokerClientRegion = getBrokerClientRegionByTag(tag);
    brokerClientRegion.add(brokerClientProxy);

    // 路由与逻辑服域的关联
    var cmdMergeList = brokerClientProxy.getCmdMergeList();
    for (Integer cmdMerge : cmdMergeList) {
        this.cmdClientRegionMap.put(cmdMerge, brokerClientRegion);
    }

    this.serverIdClientProxyMap.put(brokerClientProxy.getIdHash(), brokerClientProxy);
}

问题在于不支持 异构的逻辑服域

iohao commented 4 months ago

暂时没看懂该 issue 的描述。