多服务器实例

关键字: 多服务器实例, 多实例, 隔离, 多实例交互

SuperSocket 支持在同一进程中运行多个服务器实例

一个 generic host (.NET Core) 可以运行多个 SuperSocket 服务器实例。每一个实例以 HostedService 的形式在 host 中运行。

你可以将多个服务器实例的配置定义在节点 "serverOptions" 下:

{
    "serverOptions": {
        "TestServer1": {
            "name": "TestServer1",
            "listeners": [
                {
                    "ip": "Any",
                    "port": 4040
                }
            ]
        },
        "TestServer2": {
            "name": "TestServer2",
            "listeners": [                
                {
                    "ip": "Any",
                    "port": 4041
                }
            ]
        }
    }
}

然后你需要告知服务器实例应该加载哪个配置。"serverName1" 和 "serverName2" 是两个服务器实例的名字,它们是配置节点 "serverOptions" 的两个自节点的名字。SuperSocketServiceA 和 SuperSocketServiceB 是两个服务器实例的类型,而且这两个类型不允许相同。

var hostBuilder = MultipleServerHostBuilder.Create()
    .AddServer<SuperSocketServiceA, TextPackageInfo, LinePipelineFilter>(builder =>
    {
        builder
        .ConfigureServerOptions((ctx, config) =>
        {
            return config.GetSection("serverName1");
        });
    })
    .AddServer<SuperSocketServiceB, TextPackageInfo, LinePipelineFilter>(builder =>
    {
        builder
        .ConfigureServerOptions((ctx, config) =>
        {
            return config.GetSection("serverName2");
        });
    })

服务器实例的隔离

不同于先前版本的 SuperSocket,多服务器实例是以托管服务的形式在服务宿主中运行。因此他们运行在同一进程中。如果你想让他们运行在不同的进程或者不同的服务器中,我们建议您使用 Docker 或者其他容器技术。