cluster

package
v1.0.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 10, 2026 License: MIT Imports: 11 Imported by: 1

Documentation

Index

Constants

View Source
const (
	// DefaultRegistryTimeout 默认注册/注销超时时间
	DefaultRegistryTimeout = 3 * time.Second
)

Variables

This section is empty.

Functions

This section is empty.

Types

type BaseCluster added in v1.0.10

type BaseCluster struct {
	// contains filtered or unexported fields
}

BaseCluster 集群组件公共基类 提取 Gate/Node/Mesh 共享的状态管理、服务注册/注销、钩子函数等逻辑

func (*BaseCluster) AddHook added in v1.0.10

func (b *BaseCluster) AddHook(hook Hook, handler func())

AddHook 添加钩子监听器(线程安全)

func (*BaseCluster) AddInstance added in v1.0.10

func (b *BaseCluster) AddInstance(instance *registry.ServiceInstance)

AddInstance 添加服务实例

func (*BaseCluster) Cancel added in v1.0.10

func (b *BaseCluster) Cancel()

Cancel 取消上下文

func (*BaseCluster) ClearInstances added in v1.0.10

func (b *BaseCluster) ClearInstances()

ClearInstances 清空服务实例列表(用于 Start 前重置,如 Gate/Mesh 单实例场景)

func (*BaseCluster) CompareAndSwapState added in v1.0.10

func (b *BaseCluster) CompareAndSwapState(old, new State) bool

CompareAndSwapState CAS 设置状态

func (*BaseCluster) Context added in v1.0.10

func (b *BaseCluster) Context() context.Context

Context 获取上下文

func (*BaseCluster) DeregisterInstances added in v1.0.10

func (b *BaseCluster) DeregisterInstances()

DeregisterInstances 解注册所有服务实例

func (*BaseCluster) GetState added in v1.0.10

func (b *BaseCluster) GetState() State

GetState 获取状态

func (*BaseCluster) InitBase added in v1.0.10

func (b *BaseCluster) InitBase(ctx context.Context, cancel context.CancelFunc, reg registry.Registry, timeout time.Duration)

InitBase 初始化基类

func (*BaseCluster) RefreshInstances added in v1.0.10

func (b *BaseCluster) RefreshInstances()

RefreshInstances 刷新所有服务实例状态

func (*BaseCluster) RegisterInstances added in v1.0.10

func (b *BaseCluster) RegisterInstances() error

RegisterInstances 注册所有服务实例

func (*BaseCluster) RunHooks added in v1.0.10

func (b *BaseCluster) RunHooks(hook Hook)

RunHooks 执行钩子函数

func (*BaseCluster) SetState added in v1.0.10

func (b *BaseCluster) SetState(state State)

SetState 设置状态

func (*BaseCluster) TryClose added in v1.0.10

func (b *BaseCluster) TryClose() bool

TryClose 尝试切换到 Hang(关闭)

func (*BaseCluster) TryDestroy added in v1.0.10

func (b *BaseCluster) TryDestroy() bool

TryDestroy 尝试从 Hang 切换到 Shut(销毁)

func (*BaseCluster) TryStart added in v1.0.10

func (b *BaseCluster) TryStart() bool

TryStart 尝试从 Shut 切换到 Work(启动)

type BroadcastArgs

type BroadcastArgs struct {
	Kind    session.Kind // 会话类型,session.Conn 或 session.User
	Message *Message     // 消息
	Ack     bool         // 是否需要响应推送结果
}

type DeliverArgs

type DeliverArgs struct {
	NID     string   // 接收节点。存在接收节点时,消息会直接投递给接收节点;不存在接收节点时,系统定位用户所在节点,然后投递。
	UID     int64    // 用户ID
	Message *Message // 消息
}

type DisconnectArgs

type DisconnectArgs struct {
	GID    string       // 网关ID,会话类型为用户时可忽略此参数
	Kind   session.Kind // 会话类型,session.Conn 或 session.User
	Target int64        // 会话目标,CID 或 UID
	Force  bool         // 是否强制断开
}

type Dispatch

type Dispatch string

无状态路由消息分发策略

const (
	Random           Dispatch = "random" // 随机
	RoundRobin       Dispatch = "rr"     // 轮询
	WeightRoundRobin Dispatch = "wrr"    // 加权轮询
)

type Event

type Event int

Event 事件

const (
	Connect    Event = iota + 1 // 打开连接
	Reconnect                   // 断线重连
	Disconnect                  // 断开连接
)

func (Event) String

func (e Event) String() string

type GetIPArgs

type GetIPArgs struct {
	GID    string       // 网关ID,会话类型为用户时可忽略此参数
	Kind   session.Kind // 会话类型,session.Conn 或 session.User
	Target int64        // 会话目标,CID 或 UID
}

type Hook

type Hook int

Hook 生命周期钩子

const (
	Init    Hook = iota // 初始组件
	Start               // 启动组件
	Close               // 关闭组件
	Destroy             // 销毁组件
)

func (Hook) String

func (h Hook) String() string

type IsOnlineArgs

type IsOnlineArgs struct {
	GID    string       // 网关ID,会话类型为用户时可忽略此参数
	Kind   session.Kind // 会话类型,session.Conn 或 session.User
	Target int64        // 会话目标,CID 或 UID
}

type Kind

type Kind int

Kind 集群实例类型

const (
	Gate   Kind = iota + 1 // 网关服
	Node                   // 节点服
	Mesh                   // 微服务
	Master                 // 管理服
)

func (Kind) String

func (k Kind) String() string

type Message

type Message struct {
	Seq   int32 // 序列号
	Route int32 // 路由ID
	Data  any   // 消息数据,接收json、proto、[]byte
}

type MulticastArgs

type MulticastArgs struct {
	GID     string       // 网关ID,会话类型为用户时可忽略此参数
	Kind    session.Kind // 会话类型,session.Conn 或 session.User
	Targets []int64      // 会话目标,CID 或 UID
	Message *Message     // 组播消息
	Ack     bool         // 是否需要响应推送结果
}

type PublishArgs

type PublishArgs struct {
	Channel string   // 频道
	Message *Message // 消息
	Ack     bool     // 是否需要响应推送结果
}

type PushArgs

type PushArgs struct {
	GID     string       // 网关ID,会话类型为用户时可忽略此参数
	Kind    session.Kind // 会话类型,session.Conn 或 session.User
	Target  int64        // 会话目标,CID 或 UID
	Message *Message     // 推送消息
	Ack     bool         // 是否需要响应推送结果
}

type State

type State int

State 集群实例状态

const (
	Shut State = iota // 关闭(节点已经关闭,无法正常访问该节点)
	Work              // 工作(节点正常工作,可以分配更多玩家到该节点)
	Busy              // 繁忙(节点资源紧张,不建议分配更多玩家到该节点上)
	Hang              // 挂起(节点即将销毁,正处于资源回收中)
)

func (State) String

func (s State) String() string

type SubscribeArgs

type SubscribeArgs struct {
	GID     string       // 网关ID,会话类型为用户时可忽略此参数
	Kind    session.Kind // 会话类型,session.Conn 或 session.User
	Targets []int64      // 会话目标,CID 或 UID
	Channel string       // 频道
}

type TriggerArgs

type TriggerArgs struct {
	Event int   // 事件
	CID   int64 // 连接ID
	UID   int64 // 用户ID
}

type UnsubscribeArgs

type UnsubscribeArgs struct {
	GID     string       // 网关ID,会话类型为用户时可忽略此参数
	Kind    session.Kind // 会话类型,session.Conn 或 session.User
	Targets []int64      // 会话目标,CID 或 UID
	Channel string       // 频道
}

Directories

Path Synopsis
Package gate 提供网关组件,负责客户端连接管理和消息转发。
Package gate 提供网关组件,负责客户端连接管理和消息转发。
Package node 提供节点组件,负责业务逻辑处理和消息路由。
Package node 提供节点组件,负责业务逻辑处理和消息路由。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL