smcs2

package
v0.0.0-...-2e4edee Latest Latest
Warning

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

Go to latest
Published: Feb 28, 2022 License: LGPL-3.0 Imports: 11 Imported by: 0

Documentation

Overview

Status Monitor & Configure Spread v2 [ 状态监控与配置蔓延 ]。

中心与节点之间的状态与配置的相互通讯。这里是第二个版本,因为第一版存在剥离问题,故还未彻底放弃。

第二版将才用角色进行节点配置信息的保存并支持更好的在线配置修改。节点配置信息的保存使用drule包的TRule。

Index

Constants

View Source
const (
	ROLE_PREFIX = "SMCS_"     // 保存角色的前缀
	ROLE_ROOT   = "SMCS_ROOT" // 配置目录的根
	SLEEP_TIME  = 60          // 每隔多长间隔发送一次,单位为秒
)
View Source
const (
	ROLE_TYPE_GROUP = iota // 角色是一个分组
	ROLE_TYPE_NODE  = iota // 角色是一个节点
)

Variables

This section is empty.

Functions

func RegInterfaceForGob

func RegInterfaceForGob()

为Gob注册角色类型

Types

type CenterSend

type CenterSend struct {
	NextWorkSet  WorkSet          // 下一个工作状态设置,WORK_SET_*
	ConfigStatus ConfigStatus     // 配置的状态,配合CONFIG_*
	SetStartTime int64            // 下一个工作状态的开始时间
	NewConfig    bool             // 是否有新配置文件
	Config       cpool.PoolEncode // 配置文件
	Error        string           // 错误
}

中心发送给节点的数据结构

type CenterSmcs

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

中央的蔓延节点数据类型,也就是中央的服务器

func NewCenterSmcs

func NewCenterSmcs(name, area string, store *trule.TRule) (center *CenterSmcs, err error)

新建一个中央蔓延点,这里的name也将作为配置节点的名称前缀

func (*CenterSmcs) AddNode

func (c *CenterSmcs) AddNode(nodename, disname, code string, types uint8, groupname string) (err error)

添加一个节点,types见ROLE_TYPE_*,group为所在分组

func (*CenterSmcs) DelNode

func (c *CenterSmcs) DelNode(nodename string) (err error)

删除一个节点,如果这个节点有子节点则不允许删除

func (*CenterSmcs) EmptyNodeErrLog

func (c *CenterSmcs) EmptyNodeErrLog(nodename string) (err error)

清空节点的所有错误日志

func (*CenterSmcs) EmptyNodeRunLog

func (c *CenterSmcs) EmptyNodeRunLog(nodename string) (err error)

清空节点的所有运行日志

func (*CenterSmcs) GetNodeConfig

func (c *CenterSmcs) GetNodeConfig(nodename string) (config *cpool.ConfigPool, err error)

获取节点的配置信息

func (*CenterSmcs) GetNodeConfigEncode

func (c *CenterSmcs) GetNodeConfigEncode(nodename string) (config cpool.PoolEncode, err error)

获取节点的配置信息(编码模式)

func (*CenterSmcs) GetNodeConfigStatus

func (c *CenterSmcs) GetNodeConfigStatus(nodename string) (status ConfigStatus, err error)

获取节点的配置状态

func (*CenterSmcs) GetNodeErrLog

func (c *CenterSmcs) GetNodeErrLog(nodename string) (errlog []string, err error)

获取节点所有的错误日志

func (*CenterSmcs) GetNodeRunLog

func (c *CenterSmcs) GetNodeRunLog(nodename string) (runlog []string, err error)

获取节点所有的运行日志

func (*CenterSmcs) GetNodeRunStatus

func (c *CenterSmcs) GetNodeRunStatus(node_id string) (leave int64, workstatus WorkSet, err error)

获取节点状态,返回的是上次记录的时间到目前的间隔

func (*CenterSmcs) GetNodeTree

func (c *CenterSmcs) GetNodeTree() (nodetree NodeTree, err error)

返回节点树

func (*CenterSmcs) GetNodeWorkSet

func (c *CenterSmcs) GetNodeWorkSet(nodename string) (workset WorkSet, err error)

获取节点的下一个工作状态

func (*CenterSmcs) NSTexec

func (c *CenterSmcs) NSTexec(ce *nst2.ConnExec) (stat nst2.SendStat, err error)

nst的TcpServer接口实现

首先接收一段NodeSend

func (*CenterSmcs) SetNodeConfig

func (c *CenterSmcs) SetNodeConfig(nodename string, config *cpool.ConfigPool) (err error)

设置节点的配置信息

func (*CenterSmcs) SetNodeConfigEncode

func (c *CenterSmcs) SetNodeConfigEncode(nodename string, config *cpool.PoolEncode) (err error)

设置节点的配置信息(编码模式)

func (*CenterSmcs) SetNodeConfigStatus

func (c *CenterSmcs) SetNodeConfigStatus(nodename string, status ConfigStatus) (err error)

设置节点的配置状态,status为CONFIG_*,也就是如果被设置成CONFIG_ALL_READY,则系统将在下次发送更新的配置。这个设置一定要是所有配置信息以及工作状态都调整好之后再执行。

func (*CenterSmcs) SetNodeWorkSet

func (c *CenterSmcs) SetNodeWorkSet(nodename string, workset WorkSet) (err error)

设置节点下一个工作状态,workset为WORK_SET_*

type ConfigStatus

type ConfigStatus uint8
const (
	CONFIG_STATUS_NO        ConfigStatus = iota // 配置信息空状态
	CONFIG_STATUS_NOT_READY                     // 配置没有准备好(在这种状态下,不发送配置文件,配合WORK_SET_GOON)
	CONFIG_STATUS_ALL_READY                     // 配置准备妥当(将会在下次同步时发送)
)

type NodeConfig

type NodeConfig struct {
	roles.Role                    // 角色
	Name         string           // 名称
	Code         string           // 身份码
	Disname      string           // 显示名称
	ConfigStatus ConfigStatus     // 配置的状态,配合CONFIG_*
	NextWorkSet  WorkSet          // 下一个工作状态设置,WORK_SET_*
	RoleType     uint8            // 角色类型,是分组还是具体的,ROLE_TYPE_*
	Config       cpool.PoolEncode // 配置信息
	NewConfig    bool             // 是否有新配置文件
	RunLog       []string         // 运行日志
	ErrLog       []string         // 错误日志
}

节点的配置信息

type NodeSend

type NodeSend struct {
	CenterName string     // 中央的名字,用来做身份验证
	Name       string     // 节点的名称
	Code       string     // 身份码
	Status     NodeStatus // 节点状态,NODE_STATUS_*
	WorkSet    WorkSet    // 当前工作状态,WORK_SET_*
	RunLog     []string   // 要发送出去的运行日志
	ErrLog     []string   // 要发送出去的错误日志
}

节点发送给中心的数据结构

type NodeSmcs

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

节点的蔓延数据类型,也就是节点的服务器

func NewNodeSmcs

func NewNodeSmcs(center string, tcp *nst2.Client) (ns *NodeSmcs, err error)

新建一个为节点使用的配置蔓延

func (*NodeSmcs) SendNodeSend

func (ns *NodeSmcs) SendNodeSend(node_send NodeSend) (center_send CenterSend, err error)

发送NodeSend

type NodeStatus

type NodeStatus uint8
const (
	NODE_STATUS_NO_CONFIG  NodeStatus = iota // 节点状态,没有配置文件
	NODE_STATUS_OK                           // 一切OK
	NODE_STATUS_BUSY                         // 忙碌
	NODE_STATUS_IDLE                         // 闲置
	NODE_STATUS_STORE_FULL                   // 存储满
)

type NodeTree

type NodeTree struct {
	Name     string              // 名称
	Disname  string              // 显示名
	Id       string              // 角色id
	RoleType uint8               // 角色类型,是分组还是具体的,ROLE_TYPE_*
	Alive    bool                // 是否活着,60秒内有反映
	Working  WorkSet             // 是否在工作,看NodeSend的WorkSet,WORK_SET_*
	Tree     map[string]NodeTree // 节点树
}

节点树的数据类型

type WorkSet

type WorkSet uint8
const (
	WORK_SET_NO    WorkSet = iota // 没有这个节点
	WORK_SET_GOON                 // 节点的工作设置,继续之前
	WORK_SET_START                // 开始工作
	WORK_SET_STOP                 // 停止工作
)

Jump to

Keyboard shortcuts

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