花了两天时间做了一个网关路由服务,负责在所有用户网关之间进行负载均衡,相信对提供网络IO效率有很大的好处.
现在的服务器配置文件网络部分类似这样了:
gateway ; 用户网关1
{
; 网关所监听的ip地址
; 如果不设置此属性值,则默认为"0.0.0.0:2013".
BindAdr = "0.0.0.0:2014" ; 避免与登录服务监听端口重复
现在的服务器配置文件网络部分类似这样了:
gateway ; 用户网关1
{
; 网关所监听的ip地址
; 如果不设置此属性值,则默认为"0.0.0.0:2013".
BindAdr = "0.0.0.0:2014" ; 避免与登录服务监听端口重复
; 网关的对外公网IP地址
; 本属性仅在服务集中设置了网关路由服务,且网关服务与网关路由服务不处于同一个服务器上的时候才需要设置.
; 如果被省略,则默认为空(即未设置).
; PublicAdr = "" ; 属性值为IP格式文本,注意不要提供端口号.
; 本属性仅在服务集中设置了网关路由服务,且网关服务与网关路由服务不处于同一个服务器上的时候才需要设置.
; 如果被省略,则默认为空(即未设置).
; PublicAdr = "" ; 属性值为IP格式文本,注意不要提供端口号.
; 接收客户端数据时允许接收的单个最大数据包长度,超出此长度即认为数据接收出错.为0表示无限制.
; 如果不设置此属性值,则默认为65535.
; MaxRecvDataObjectSize = 65535
; 如果不设置此属性值,则默认为65535.
; MaxRecvDataObjectSize = 65535
; 提供网络超时参数,单位为秒.0表示无限时间.
timeout
{
; 等待一次与客户端之间有效数据读写操作的最大时间长度(也就是最大允许客户端连接网络空闲时间长度)
; 注意此值不要小于或过于接近60(客户端自动Ping本用户网关的周期)
; 如果不设置此属性值,则默认为100.
; StreamRW = 100
timeout
{
; 等待一次与客户端之间有效数据读写操作的最大时间长度(也就是最大允许客户端连接网络空闲时间长度)
; 注意此值不要小于或过于接近60(客户端自动Ping本用户网关的周期)
; 如果不设置此属性值,则默认为100.
; StreamRW = 100
; 当需要发送数据到客户端时等待其发送成功的最大时间长度
; 如果不设置此属性值,则默认为15.
; StreamW = 15
}
; 如果不设置此属性值,则默认为15.
; StreamW = 15
}
; 提供将网关所接收用户信息根据其所属服务类别转发到的所有服务名称(由该服务的"name"
; 属性值提供),这些服务也称为"收件服务".
; 可以使用逗号分隔填写多个服务,如:"service1, service2",最多不能超过64个,此时网关
; 将自动在这些服务之间轮流转发以实现负载均衡,其中的服务名称可以重复,如:
; "service1, service1, service2",以便人工调节负载均衡权重.
; 至少应该提供一个收件服务.
deliver
{
; 定义当收到没有对应收件服务的用户信息时,是否认为是非法信息而踢出该用户.
; 如果不设置此属性值,则默认为真.
; TickIfNoReceiver = true
; 属性值提供),这些服务也称为"收件服务".
; 可以使用逗号分隔填写多个服务,如:"service1, service2",最多不能超过64个,此时网关
; 将自动在这些服务之间轮流转发以实现负载均衡,其中的服务名称可以重复,如:
; "service1, service1, service2",以便人工调节负载均衡权重.
; 至少应该提供一个收件服务.
deliver
{
; 定义当收到没有对应收件服务的用户信息时,是否认为是非法信息而踢出该用户.
; 如果不设置此属性值,则默认为真.
; TickIfNoReceiver = true
; 属性名为用户信息所属服务的类型名称
world = world1 ; 属于world服务类别的信息将被转发到world1服务
; 如果TickIfNoReceiver为真,则收到其余服务类别的消息将导致该用户被踢出,否则此消息将被忽略.
}
}
world = world1 ; 属于world服务类别的信息将被转发到world1服务
; 如果TickIfNoReceiver为真,则收到其余服务类别的消息将导致该用户被踢出,否则此消息将被忽略.
}
}
gateway ; 用户网关2
{
BindAdr = "0.0.0.0:2015"
{
BindAdr = "0.0.0.0:2015"
deliver
{
world = world1
}
}
{
world = world1
}
}
gateway ; 用户网关3
{
BindAdr = "0.0.0.0:2016"
{
BindAdr = "0.0.0.0:2016"
deliver
{
world = world1
}
}
{
world = world1
}
}
gw_router ; 网关路由. 一般情况下,整个服务集只需要一个此类型服务,用作在整个服务集内所有用户网关之间实现负载均衡.
{
; 网关路由所监听的ip地址
; 如果不设置此属性值,则默认为"0.0.0.0:2014".
{
; 网关路由所监听的ip地址
; 如果不设置此属性值,则默认为"0.0.0.0:2014".
BindAdr = "0.0.0.0:2012"
; 提供网络超时参数,单位为秒.0表示无限时间.
timeout
{
; 等待一次与客户端之间有效数据读写操作的最大时间长度(也就是最大允许客户端连接网络空闲时间长度)
; 如果不设置此属性值,则默认为30(因为网关路由仅在用户建立到网关的连接前访问一次,所以默认超时时间可以设置为较短).
; StreamRW = 30
timeout
{
; 等待一次与客户端之间有效数据读写操作的最大时间长度(也就是最大允许客户端连接网络空闲时间长度)
; 如果不设置此属性值,则默认为30(因为网关路由仅在用户建立到网关的连接前访问一次,所以默认超时时间可以设置为较短).
; StreamRW = 30
; 当需要发送数据到客户端时等待其发送成功的最大时间长度
; 如果不设置此属性值,则默认为15.
; StreamW = 15
}
}
; 如果不设置此属性值,则默认为15.
; StreamW = 15
}
}