worker

package module
v0.0.0-...-dbaf101 Latest Latest
Warning

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

Go to latest
Published: Mar 18, 2021 License: MIT Imports: 6 Imported by: 25

README

工作者 模块

用于管理Herb go 框架中的全局单例对象(Worker)的模块

引入类

  • Worker工作者对象,通过名称注册单例对象到系统内统一管理
  • Overseer监工接口/类,提供统一的管理类,实现 查看工作对象状态,生成标准化报告,初始化工作对象属性,发布管理命令的接口。

解决的问题

  • 提供全局范围内的工作者对象的引用,实现工作类对象如缓存,数据库等的复用,
  • 实现预埋点,可以根据项目发展对指定已埋点的工作者对象做特殊设置
  • 实现通用的系统状态报告切入点
  • 实现通用的管理命令接口

约定

  • 工作者类通过反射类型,匹配到对应的监工类。
  • 工作者类必须为结构指针或者接口,第一次赋值时必须实例化不可为空,赋值后不可修改(指向其他对象)
  • 监工类返回的评估信息和命令接口的返回值为可选项,返回的结构可以通过json或者其他兼容的方式序列化。

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Debug bool

Debug debug mode

DummyTeam dummy team

View Source
var ErrUnknownCommand = errors.New("worker:unknow command")

ErrUnknownCommand error raised if given command is unknown.

View Source
var ErrWorkerNotFound = errors.New("worker not found")
View Source
var OutsourcedPrefix = "outsourced-"

Functions

func GetWorkerTeam

func GetWorkerTeam(v interface{}) string

GetWorkerTeam get team of given worker

func InitOverseers

func InitOverseers() error

InitOverseers init overseers

func NewWorkerNotFounderError

func NewWorkerNotFounderError(id string) error

func OnStart

func OnStart(f func())

func OnStop

func OnStop(f func())

func Reset

func Reset()

Reset reset workers and overseers

func ResetTranning

func ResetTranning()

ResetTranning reset worker trannings and overseer trannings

func Start

func Start()

func Stop

func Stop()

func TrainWorkers

func TrainWorkers() error

TrainWorkers init workders by registered overseers.

Types

type Config

type Config struct {
	Overseers  []*OverseerTranning
	Workers    []*Tranning
	Outsourced []*Outsourced
}

Config config struct

func (*Config) Apply

func (c *Config) Apply() error

Apply apply config Return any error if raised.

type Dummy

type Dummy struct {
}

Dummy dummy struct

func NewDummyWorker

func NewDummyWorker() *Dummy

NewDummyWorker create new dummy worker

type Outsourced

type Outsourced struct {
	Name string

	Team         string
	TranningPlan func(v interface{}) error `config:", lazyload"`
	// contains filtered or unexported fields
}

type Overseer

type Overseer interface {
	//Team overseer team
	Team() string
	//Introduction overseer introduction.
	Introduction() string
	//Train init given workers
	Train(workers []*Worker) error
	//Muted is overseer muted.
	Muted() bool
	//Evaluate evaluate given worker.
	//Return data and any error if raised
	Evaluate(*Worker) (interface{}, error)
	//EvaluationReport create evaluation report by given worker .
	//Return plain report and any error if raised
	EvaluationReport(*Worker) (string, error)
	//Command exec command on given workder.
	//Return data and any error if raised.
	Command(*Worker, []byte) (interface{}, error)
	//Outsource create worker by outsourced config.
	Outsource(*Outsourced) error
	//ID overseer id.
	ID() string
	//Init init overseer
	Init(*OverseerTranning) error
}

Overseer overseet interface

func Appoint

func Appoint(t Overseer) Overseer

Appoint register overseer

type OverseerTranning

type OverseerTranning struct {
	ID           string
	TranningPlan func(v interface{}) error `config:", lazyload"`
}

OverseerTranning overseer config struct

type PlainOverseer

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

PlainOverseer plain oversser struct

func NewOrverseer

func NewOrverseer(id string, v interface{}) *PlainOverseer

NewOrverseer create new overseer with given id and team

func (*PlainOverseer) Command

func (o *PlainOverseer) Command(worker *Worker, cmd []byte) (interface{}, error)

Command exec command on given workder. Return data and any error if raised.

func (*PlainOverseer) Evaluate

func (o *PlainOverseer) Evaluate(worker *Worker) (interface{}, error)

Evaluate evaluate given worker. Return data and any error if raised

func (*PlainOverseer) EvaluationReport

func (o *PlainOverseer) EvaluationReport(worker *Worker) (string, error)

EvaluationReport create evaluation report by given worker. Return plain report and any error if raised

func (*PlainOverseer) ID

func (o *PlainOverseer) ID() string

ID overseer id.

func (*PlainOverseer) Init

func (o *PlainOverseer) Init(tranning *OverseerTranning) error

Init init overseer

func (*PlainOverseer) Introduction

func (o *PlainOverseer) Introduction() string

Introduction overseer introduction.

func (*PlainOverseer) Muted

func (o *PlainOverseer) Muted() bool

Muted is overseer muted

func (*PlainOverseer) Outsource

func (o *PlainOverseer) Outsource(outsourced *Outsourced) error

Outsource create worker by outsourced config.

func (*PlainOverseer) Team

func (o *PlainOverseer) Team() string

Team overseer team

func (*PlainOverseer) Train

func (o *PlainOverseer) Train(workers []*Worker) error

Train init given workers

func (*PlainOverseer) WithCommandFunc

func (o *PlainOverseer) WithCommandFunc(f func(worker *Worker, cmd []byte) (interface{}, error)) *PlainOverseer

WithCommandFunc set overseer command function. Return overseer self

func (*PlainOverseer) WithEvaluateFunc

func (o *PlainOverseer) WithEvaluateFunc(f func(worker *Worker) (interface{}, error)) *PlainOverseer

WithEvaluateFunc set overseer evalutate function. Reutrn overseer self.

func (*PlainOverseer) WithEvaluationReportFunc

func (o *PlainOverseer) WithEvaluationReportFunc(f func(worker *Worker) (string, error)) *PlainOverseer

WithEvaluationReportFunc set overseer evalution report function. Return overseer self.

func (*PlainOverseer) WithInitFunc

func (o *PlainOverseer) WithInitFunc(f func(*OverseerTranning) error) *PlainOverseer

WithInitFunc set overseer init func. return overseer self.

func (*PlainOverseer) WithIntroduction

func (o *PlainOverseer) WithIntroduction(intro string) *PlainOverseer

WithIntroduction set overseer introduction. Reutrn overseer itself.

func (*PlainOverseer) WithMuted

func (o *PlainOverseer) WithMuted(muted bool) *PlainOverseer

WithMuted set over muted Return overseer itself.

func (*PlainOverseer) WithOutsourceFunc

func (o *PlainOverseer) WithOutsourceFunc(f func(outsourced *Outsourced) error) *PlainOverseer

WithOutsourceFunc set overseer outsource function. Return overseer self

func (*PlainOverseer) WithTrainFunc

func (o *PlainOverseer) WithTrainFunc(f func([]*Worker) error) *PlainOverseer

WithTrainFunc set overseer train func. return overseer self.

type Tranning

type Tranning struct {
	ID           string
	TranningPlan func(v interface{}) error `config:", lazyload"`
}

Tranning worker config struct

func GetTranning

func GetTranning(workerid string) *Tranning

GetTranning get worker tranning by given worker id.

type Worker

type Worker struct {
	Name string

	Team      string
	Interface interface{}
	// contains filtered or unexported fields
}

Worker worker strut

func FindWorker

func FindWorker(name string) *Worker

func FindWorkerInTeam

func FindWorkerInTeam(team string, name string) *Worker

FindWorkerInTeam find worker by given type and name.

func Hire

func Hire(name string, v interface{}) *Worker

Hire register interface as worker with given name. Return workder registered.

func New

func New() *Worker

New create new worker

func (*Worker) Introduction

func (u *Worker) Introduction() string

Introduction return workder introduction

func (*Worker) WithIntroduction

func (u *Worker) WithIntroduction(c string) *Worker

WithIntroduction set workder introduction. Return workder self.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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