Documentation
¶
Index ¶
- Variables
- type Actor
- func (a *Actor) AddEventHandler(event cluster.Event, handler EventHandler)
- func (a *Actor) AddRouteHandler(route int32, handler RouteHandler)
- func (a *Actor) AfterFunc(d time.Duration, f func()) *Timer
- func (a *Actor) AfterInvoke(d time.Duration, f func()) *Timer
- func (a *Actor) Deliver(uid int64, message *cluster.Message) error
- func (a *Actor) Destroy() (ok bool)
- func (a *Actor) ID() string
- func (a *Actor) Invoke(fn func())
- func (a *Actor) Kind() string
- func (a *Actor) Next(ctx Context)
- func (a *Actor) PID() string
- func (a *Actor) Proxy() *Proxy
- func (a *Actor) Push(uid int64, message *cluster.Message) error
- func (a *Actor) SetDefaultRouteHandler(handler RouteHandler)
- func (a *Actor) Spawn(creator Creator, opts ...ActorOption) (*Actor, error)
- type ActorOption
- type BaseProcessor
- type Context
- type Creator
- type EventHandler
- type HookHandler
- type Kind
- type Middleware
- type MiddlewareHandler
- type Node
- type Option
- func WithAddr(addr string) Option
- func WithCodec(codec encoding.Codec) Option
- func WithContext(ctx context.Context) Option
- func WithEncryptor(encryptor crypto.Encryptor) Option
- func WithExpose(expose bool) Option
- func WithID(id string) Option
- func WithLocator(locator locate.Locator) Option
- func WithMetadata(metadata map[string]string) Option
- func WithName(name string) Option
- func WithRegistry(r registry.Registry) Option
- func WithTimeout(timeout time.Duration) Option
- func WithTransporter(transporter transport.Transporter) Option
- func WithWeight(weight int) Option
- type Processor
- type Proxy
- func (p *Proxy) Actor(kind, id string) (*Actor, bool)
- func (p *Proxy) AddEventHandler(event cluster.Event, handler EventHandler)
- func (p *Proxy) AddHookListener(hook cluster.Hook, handler HookHandler)
- func (p *Proxy) AddRouteHandler(route int32, handler RouteHandler, opts ...RouteOptions)
- func (p *Proxy) AddServiceProvider(name string, desc, provider any)
- func (p *Proxy) AfterFunc(d time.Duration, f func()) *Timer
- func (p *Proxy) AfterInvoke(d time.Duration, f func()) *Timer
- func (p *Proxy) AskGate(ctx context.Context, gid string, uid int64) (string, bool, error)
- func (p *Proxy) AskNode(ctx context.Context, uid int64, name, nid string) (string, bool, error)
- func (p *Proxy) BindActor(uid int64, kind, id string) error
- func (p *Proxy) BindGate(ctx context.Context, gid string, cid, uid int64) error
- func (p *Proxy) BindNode(ctx context.Context, uid int64, nameAndNID ...string) error
- func (p *Proxy) Broadcast(ctx context.Context, args *cluster.BroadcastArgs) error
- func (p *Proxy) Deliver(ctx context.Context, args *cluster.DeliverArgs) error
- func (p *Proxy) Disconnect(ctx context.Context, args *cluster.DisconnectArgs) error
- func (p *Proxy) FetchGateList(ctx context.Context, states ...cluster.State) ([]*registry.ServiceInstance, error)
- func (p *Proxy) FetchNodeList(ctx context.Context, states ...cluster.State) ([]*registry.ServiceInstance, error)
- func (p *Proxy) GetID() string
- func (p *Proxy) GetIP(ctx context.Context, args *cluster.GetIPArgs) (string, error)
- func (p *Proxy) GetName() string
- func (p *Proxy) GetState() cluster.State
- func (p *Proxy) HasGate(gid string) bool
- func (p *Proxy) HasNode(nid string) bool
- func (p *Proxy) Invoke(fn func())
- func (p *Proxy) IsOnline(ctx context.Context, args *cluster.IsOnlineArgs) (bool, error)
- func (p *Proxy) Kill(kind, id string) bool
- func (p *Proxy) LocateGate(ctx context.Context, uid int64) (string, error)
- func (p *Proxy) LocateNode(ctx context.Context, uid int64, name string) (string, error)
- func (p *Proxy) Multicast(ctx context.Context, args *cluster.MulticastArgs) error
- func (p *Proxy) NewMeshClient(target string) (transport.Client, error)
- func (p *Proxy) PackBuffer(message any) ([]byte, error)
- func (p *Proxy) PackMessage(message *cluster.Message) ([]byte, error)
- func (p *Proxy) Publish(ctx context.Context, args *cluster.PublishArgs) error
- func (p *Proxy) Push(ctx context.Context, args *cluster.PushArgs) error
- func (p *Proxy) RouteGroup(groups ...func(group *RouterGroup)) *RouterGroup
- func (p *Proxy) Router() *Router
- func (p *Proxy) SetDefaultRouteHandler(handler RouteHandler)
- func (p *Proxy) SetState(state cluster.State) error
- func (p *Proxy) Spawn(creator Creator, opts ...ActorOption) (*Actor, error)
- func (p *Proxy) Stat(ctx context.Context, kind session.Kind) (int64, error)
- func (p *Proxy) Subscribe(ctx context.Context, args *cluster.SubscribeArgs) error
- func (p *Proxy) Trigger() *Trigger
- func (p *Proxy) UnbindActor(uid int64, kind string)
- func (p *Proxy) UnbindGate(ctx context.Context, uid int64) error
- func (p *Proxy) UnbindNode(ctx context.Context, uid int64, nameAndNID ...string) error
- func (p *Proxy) Unsubscribe(ctx context.Context, args *cluster.UnsubscribeArgs) error
- type RouteHandler
- type RouteOptions
- type Router
- func (r *Router) AddRouteHandler(route int32, handler RouteHandler, opts ...RouteOptions)
- func (r *Router) CheckRouteStateful(route int32) (stateful bool, exist bool)
- func (r *Router) Group(groups ...func(group *RouterGroup)) *RouterGroup
- func (r *Router) HasDefaultRouteHandler() bool
- func (r *Router) SetDefaultRouteHandler(handler RouteHandler)
- func (r *Router) SetPostRouteHandler(handler RouteHandler)
- func (r *Router) SetPreRouteHandler(handler RouteHandler)
- type RouterGroup
- type Scheduler
- type SchedulingModel
- type Timer
- type Trigger
Constants ¶
This section is empty.
Variables ¶
var ( InternalRoute = RouteOptions{Internal: true} StatefulRoute = RouteOptions{Stateful: true} AuthorizedRoute = RouteOptions{Authorized: true} )
Functions ¶
This section is empty.
Types ¶
type Actor ¶
type Actor struct {
// contains filtered or unexported fields
}
func (*Actor) AddEventHandler ¶
func (a *Actor) AddEventHandler(event cluster.Event, handler EventHandler)
AddEventHandler 添加事件处理器
func (*Actor) AddRouteHandler ¶
func (a *Actor) AddRouteHandler(route int32, handler RouteHandler)
AddRouteHandler 添加路由处理器
func (*Actor) AfterInvoke ¶
AfterInvoke 延迟调用(线程安全)
func (*Actor) SetDefaultRouteHandler ¶
func (a *Actor) SetDefaultRouteHandler(handler RouteHandler)
SetDefaultRouteHandler 设置默认路由处理器
type ActorOption ¶
type ActorOption func(o *actorOptions)
func WithActorNonDispatch ¶
func WithActorNonDispatch() ActorOption
WithActorNonDispatch 设置Actor不可调度
func WithActorNonWait ¶
func WithActorNonWait() ActorOption
WithActorNonWait 设置Actor无需等待属性(Node组件关关闭时无需等待此Actor结束)
type BaseProcessor ¶
type BaseProcessor struct{}
type Context ¶
type Context interface {
// GID 获取网关ID
GID() string
// NID 获取节点ID
NID() string
// CID 获取连接ID
CID() int64
// UID 获取用户ID
UID() int64
// Seq 获取消息序列号
Seq() int32
// Route 获取消息路由号
Route() int32
// Event 获取事件类型
Event() cluster.Event
// Kind 上下文消息类型
Kind() Kind
// Parse 解析消息
Parse(v any) error
// Defer 添加defer延迟调用栈
// 此方法功能与go defer一致,作用域也仅限于当前handler处理函数内,推荐使用Defer方法替代go defer使用
// 区别在于使用Defer方法可以对调用栈进行取消操作
// 同时,在调用Task和Next方法是会自动取消调用栈
// 也可通过Cancel方法进行手动取消调用栈
// bottom用于标识是否挂载到栈底部
Defer(fn func(), bottom ...bool)
// Cancel 取消defer调用栈
Cancel()
// Clone 克隆Context
Clone() Context
// Task 投递任务
// 调用此方法会自动取消Defer调用栈的所有执行函数
Task(fn func(ctx Context))
// Proxy 获取代理API
Proxy() *Proxy
// Context 获取上下文
Context() context.Context
// SetValue 为上下文设置值
SetValue(key, val any)
// GetValue 获取上下文中的值
GetValue(key any) any
// GetIP 获取客户端IP
GetIP() (string, error)
// Deliver 投递消息给节点处理
Deliver(args *cluster.DeliverArgs) error
// Reply 回复消息
Reply(message *cluster.Message) error
// Response 响应消息
Response(message any) error
// Disconnect 关闭来自网关的连接
Disconnect(force ...bool) error
// BindGate 绑定网关
BindGate(uid ...int64) error
// UnbindGate 解绑网关
UnbindGate(uid ...int64) error
// BindNode 绑定节点
BindNode(uid ...int64) error
// UnbindNode 解绑节点
UnbindNode(uid ...int64) error
// Subscribe 订阅频道
Subscribe(channel string, uids ...int64) error
// Unsubscribe 取消订阅
Unsubscribe(channel string, uids ...int64) error
// BindActor 绑定Actor
BindActor(kind, id string) error
// UnbindActor 解绑Actor
UnbindActor(kind string)
// Next 消息下放
// 调用此方法会自动取消Defer调用栈的所有执行函数
Next() error
// Spawn 衍生出一个新的Actor
Spawn(creator Creator, opts ...ActorOption) (*Actor, error)
// Kill 杀死存在的一个Actor
Kill(kind, id string) bool
// Actor 获取Actor
Actor(kind, id string) (*Actor, bool)
// Invoke 调用函数(线程安全)
// ctx在全局的处理器中,调用的就是proxy.Invoke
// ctx在Actor的处理器中,调用的就是actor.Invoke
Invoke(fn func())
// AfterFunc 延迟调用,与官方的time.AfterFunc用法一致
// ctx在全局的处理器中,调用的就是proxy.AfterFunc
// ctx在Actor的处理器中,调用的就是actor.AfterFunc
AfterFunc(d time.Duration, f func()) *Timer
// AfterInvoke 延迟调用(线程安全)
// ctx在全局的处理器中,调用的就是proxy.AfterInvoke
// ctx在Actor的处理器中,调用的就是actor.AfterInvoke
AfterInvoke(d time.Duration, f func()) *Timer
// NewMeshClient 新建微服务客户端
// target参数可分为三种种模式:
// 服务直连模式: direct://127.0.0.1:8011
// 服务直连模式: direct://711baf8d-8a06-11ef-b7df-f4f19e1f0070
// 服务发现模式: discovery://service_name
NewMeshClient(target string) (transport.Client, error)
// contains filtered or unexported methods
}
type EventHandler ¶
type EventHandler func(ctx Context)
type HookHandler ¶
type HookHandler func(proxy *Proxy)
type Middleware ¶
type Middleware struct {
// contains filtered or unexported fields
}
type MiddlewareHandler ¶
type MiddlewareHandler func(middleware *Middleware, ctx Context)
type Option ¶
type Option func(o *options)
func WithTransporter ¶
func WithTransporter(transporter transport.Transporter) Option
WithTransporter 设置消息传输器
type Processor ¶
type Processor interface {
// Init 初始化回调
Init()
// Start 启动回调
Start()
// Destroy 销毁回调
Destroy()
}
type Proxy ¶
type Proxy struct {
// contains filtered or unexported fields
}
func (*Proxy) AddEventHandler ¶
func (p *Proxy) AddEventHandler(event cluster.Event, handler EventHandler)
AddEventHandler 添加事件处理器
func (*Proxy) AddHookListener ¶
func (p *Proxy) AddHookListener(hook cluster.Hook, handler HookHandler)
AddHookListener 添加钩子监听器
func (*Proxy) AddRouteHandler ¶
func (p *Proxy) AddRouteHandler(route int32, handler RouteHandler, opts ...RouteOptions)
AddRouteHandler 添加路由处理器
func (*Proxy) AddServiceProvider ¶
AddServiceProvider 添加服务提供者
func (*Proxy) AfterInvoke ¶
AfterInvoke 延迟调用(线程安全)
func (*Proxy) BindNode ¶
BindNode 绑定节点 单个用户可以绑定到多个节点服务器上,相同名称的节点服务器只能绑定一个,多次绑定会到相同名称的节点服务器会覆盖之前的绑定。 绑定操作会通过发布订阅方式同步到网关服务器和其他相关节点服务器上。
func (*Proxy) Disconnect ¶
Disconnect 断开连接
func (*Proxy) FetchGateList ¶
func (p *Proxy) FetchGateList(ctx context.Context, states ...cluster.State) ([]*registry.ServiceInstance, error)
FetchGateList 拉取网关列表
func (*Proxy) FetchNodeList ¶
func (p *Proxy) FetchNodeList(ctx context.Context, states ...cluster.State) ([]*registry.ServiceInstance, error)
FetchNodeList 拉取节点列表
func (*Proxy) LocateGate ¶
LocateGate 定位用户所在网关
func (*Proxy) LocateNode ¶
LocateNode 定位用户所在节点
func (*Proxy) NewMeshClient ¶
NewMeshClient 新建微服务客户端 target参数可分为三种种模式: 服务直连模式: direct://127.0.0.1:8011 服务直连模式: direct://711baf8d-8a06-11ef-b7df-f4f19e1f0070 服务发现模式: discovery://service_name
func (*Proxy) PackBuffer ¶
PackBuffer 打包Buffer
func (*Proxy) PackMessage ¶
PackMessage 打包消息
func (*Proxy) RouteGroup ¶
func (p *Proxy) RouteGroup(groups ...func(group *RouterGroup)) *RouterGroup
RouteGroup 路由组
func (*Proxy) SetDefaultRouteHandler ¶
func (p *Proxy) SetDefaultRouteHandler(handler RouteHandler)
SetDefaultRouteHandler 设置默认路由处理器,所有未注册的路由均走默认路由处理器
func (*Proxy) Spawn ¶
func (p *Proxy) Spawn(creator Creator, opts ...ActorOption) (*Actor, error)
Spawn 衍生出一个新的Actor
func (*Proxy) UnbindGate ¶
UnbindGate 解绑网关
func (*Proxy) UnbindNode ¶
UnbindNode 解绑节点 解绑时会对对应名称的节点服务器进行解绑,解绑时会对解绑节点ID进行校验,不匹配则解绑失败。 解绑操作会通过发布订阅方式同步到网关服务器和其他相关节点服务器上。
func (*Proxy) Unsubscribe ¶
Unsubscribe 取消订阅频道
type RouteHandler ¶
type RouteHandler func(ctx Context)
type RouteOptions ¶
type RouteOptions struct {
// 是否内部的路由,默认非内部
// 外部路由可在客户端、网关、节点间进行消息流转
// 内部路由仅限于在节点间进行消息流转
Internal bool
// 是否有状态路由,默认无状态
// 无状态路由消息会根据负载均衡策略分配到不同的节点服务器进行处理
// 有状态路由消息会在绑定节点服务器后,固定路由到绑定的节点服务器进行处理
Stateful bool
// 是否授权路由,默认非授权
// 授权路由在集群间流转时必需附带UID信息,否则无法进行路由投递
// 该参数可在网关层对未授权连接进行提前拦截,降低节点服对于攻击处理的压力
Authorized bool
// 路由中间件
Middlewares []MiddlewareHandler
}
RouteOptions 路由选项
type Router ¶
type Router struct {
// contains filtered or unexported fields
}
func (*Router) AddRouteHandler ¶
func (r *Router) AddRouteHandler(route int32, handler RouteHandler, opts ...RouteOptions)
AddRouteHandler 添加路由处理器
func (*Router) CheckRouteStateful ¶
CheckRouteStateful 是否为有状态路由
func (*Router) Group ¶
func (r *Router) Group(groups ...func(group *RouterGroup)) *RouterGroup
Group 路由组
func (*Router) HasDefaultRouteHandler ¶
HasDefaultRouteHandler 是否存在默认路由处理器
func (*Router) SetDefaultRouteHandler ¶
func (r *Router) SetDefaultRouteHandler(handler RouteHandler)
SetDefaultRouteHandler 设置默认路由处理器,所有未注册的路由均走默认路由处理器
func (*Router) SetPostRouteHandler ¶
func (r *Router) SetPostRouteHandler(handler RouteHandler)
SetPostRouteHandler 设置后置路由处理器
func (*Router) SetPreRouteHandler ¶
func (r *Router) SetPreRouteHandler(handler RouteHandler)
SetPreRouteHandler 设置前置路由处理器
type RouterGroup ¶
type RouterGroup struct {
// contains filtered or unexported fields
}
func (*RouterGroup) AddRouteHandler ¶
func (g *RouterGroup) AddRouteHandler(route int32, handler RouteHandler, opts ...RouteOptions) *RouterGroup
AddRouteHandler 添加路由处理器
func (*RouterGroup) Middleware ¶
func (g *RouterGroup) Middleware(middlewares ...MiddlewareHandler) *RouterGroup
Middleware 添加中间件
type Trigger ¶
type Trigger struct {
// contains filtered or unexported fields
}
func (*Trigger) AddEventHandler ¶
func (e *Trigger) AddEventHandler(event cluster.Event, handler EventHandler)
AddEventHandler 添加事件处理器