node

package
v0.1.15 Latest Latest
Warning

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

Go to latest
Published: Mar 26, 2024 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type API

type API struct {
	// common api
	api.Common
	api.Device
	api.Validation
	api.DataSync
	api.Asset
	WaitQuiet func(ctx context.Context) error
	// edge api
	ExternalServiceAddress func(ctx context.Context, candidateURL string) (string, error)
	UserNATPunch           func(ctx context.Context, sourceURL string, req *types.NatPunchReq) error
	// candidate api
	GetBlocksOfAsset         func(ctx context.Context, assetCID string, randomSeed int64, randomCount int) ([]string, error)
	CheckNetworkConnectivity func(ctx context.Context, network, targetURL string) error
	GetMinioConfig           func(ctx context.Context) (*types.MinioConfig, error)
}

API represents the node API

func APIFromCandidate

func APIFromCandidate(api api.Candidate) *API

APIFromCandidate creates a new API from a Candidate API

func APIFromEdge

func APIFromEdge(api api.Edge) *API

APIFromEdge creates a new API from an Edge API

type Manager

type Manager struct {
	Edges      int // online edge node count
	Candidates int // online candidate node count

	*db.SQLDB
	*rsa.PrivateKey // scheduler privateKey
	dtypes.ServerID // scheduler server id

	TotalNetworkEdges int // Number of edge nodes in the entire network (including those on other schedulers)
	// contains filtered or unexported fields
}

Manager is the node manager responsible for managing the online nodes

func NewManager

func NewManager(sdb *db.SQLDB, serverID dtypes.ServerID, pk *rsa.PrivateKey, pb *pubsub.PubSub, config dtypes.GetSchedulerConfigFunc, ec *etcdcli.Client) *Manager

NewManager creates a new instance of the node manager

func (*Manager) CheckIPExist added in v0.1.14

func (m *Manager) CheckIPExist(ip string) bool

func (*Manager) CheckNodeIP added in v0.1.13

func (m *Manager) CheckNodeIP(nodeID, ip string) bool

func (*Manager) DistributeNodeWeight added in v0.1.11

func (m *Manager) DistributeNodeWeight(node *Node)

DistributeNodeWeight Distribute Node Weight

func (*Manager) GetAllEdgeNode added in v0.1.10

func (m *Manager) GetAllEdgeNode() []*Node

GetAllEdgeNode load all edge node

func (*Manager) GetAllValidCandidateNodes added in v0.1.11

func (m *Manager) GetAllValidCandidateNodes() ([]string, []*Node)

GetAllValidCandidateNodes Get all valid candidate nodes

func (*Manager) GetCandidateNode

func (m *Manager) GetCandidateNode(nodeID string) *Node

GetCandidateNode retrieves a candidate node with the given node ID

func (*Manager) GetCandidateNodes

func (m *Manager) GetCandidateNodes(num int, filterValidators bool) []*Node

GetCandidateNodes return n candidate node

func (*Manager) GetEdgeNode

func (m *Manager) GetEdgeNode(nodeID string) *Node

GetEdgeNode retrieves an edge node with the given node ID

func (*Manager) GetNode

func (m *Manager) GetNode(nodeID string) *Node

GetNode retrieves a node with the given node ID

func (*Manager) GetNodeOfIP added in v0.1.15

func (m *Manager) GetNodeOfIP(ip string) []string

func (*Manager) GetOnlineNodeCount

func (m *Manager) GetOnlineNodeCount(nodeType types.NodeType) int

GetOnlineNodeCount returns online node count of the given type

func (*Manager) GetRandomCandidate

func (m *Manager) GetRandomCandidate() (*Node, int)

GetRandomCandidate returns a random candidate node

func (*Manager) GetRandomEdge

func (m *Manager) GetRandomEdge() (*Node, int)

GetRandomEdge returns a random edge node

func (*Manager) NodeOnline

func (m *Manager) NodeOnline(node *Node, info *types.NodeInfo) error

NodeOnline registers a node as online

func (*Manager) RemoveNodeIP added in v0.1.13

func (m *Manager) RemoveNodeIP(nodeID, ip string)

func (*Manager) RepayNodeWeight added in v0.1.11

func (m *Manager) RepayNodeWeight(node *Node)

RepayNodeWeight Repay Node Weight

func (*Manager) UpdateNodeBandwidths added in v0.1.11

func (m *Manager) UpdateNodeBandwidths(nodeID string, bandwidthDown, bandwidthUp int64)

UpdateNodeBandwidths update node bandwidthDown and bandwidthUp

func (*Manager) UpdateNodeDiskUsage added in v0.1.13

func (m *Manager) UpdateNodeDiskUsage(nodeID string, diskUsage float64)

type Node

type Node struct {
	NodeID string

	*API
	jsonrpc.ClientCloser

	// node info
	PublicKey   *rsa.PublicKey
	RemoteAddr  string
	TCPPort     int
	ExternalURL string

	NATType        types.NatType
	CPUUsage       float64
	MemoryUsage    float64
	DiskUsage      float64
	TitanDiskUsage float64

	OnlineDuration int
	Type           types.NodeType
	PortMapping    string
	BandwidthDown  int64
	BandwidthUp    int64

	DeactivateTime int64

	IsPrivateMinioOnly bool

	ExternalIP         string
	IncomeIncr         float64
	DiskSpace          float64
	AvailableDiskSpace float64
	// contains filtered or unexported fields
}

Node represents an Edge or Candidate node

func New

func New() *Node

New creates a new node

func (*Node) CalculateIncome added in v0.1.13

func (n *Node) CalculateIncome(nodeCount, ipNum int) float64

CalculateIncome Calculate income of the node

func (*Node) CalculateMCx added in v0.1.13

func (n *Node) CalculateMCx(count int) float64

Increase every 5 seconds

func (*Node) ConnectRPC

func (n *Node) ConnectRPC(transport *quic.Transport, addr string, nodeType types.NodeType) error

ConnectRPC connects to the node RPC

func (*Node) DiskEnough added in v0.1.14

func (n *Node) DiskEnough(size float64) bool

func (*Node) DownloadAddr

func (n *Node) DownloadAddr() string

DownloadAddr returns the download address of the node

func (*Node) GetToken added in v0.1.13

func (n *Node) GetToken() string

GetToken get the token of the node

func (*Node) IsAbnormal added in v0.1.11

func (n *Node) IsAbnormal() bool

IsAbnormal is node abnormal

func (*Node) LastRequestTime

func (n *Node) LastRequestTime() time.Time

LastRequestTime returns the last request time of the node

func (*Node) RPCURL

func (n *Node) RPCURL() string

RPCURL returns the rpc url of the node

func (*Node) SelectWeights added in v0.1.10

func (n *Node) SelectWeights() []int

SelectWeights get node select weights

func (*Node) SetLastRequestTime

func (n *Node) SetLastRequestTime(t time.Time)

SetLastRequestTime sets the last request time of the node

func (*Node) SetToken

func (n *Node) SetToken(t string)

SetToken sets the token of the node

func (*Node) TCPAddr

func (n *Node) TCPAddr() string

TCPAddr returns the tcp address of the node

func (*Node) Token

func (n *Node) Token(cid, clientID string, titanRsa *titanrsa.Rsa, privateKey *rsa.PrivateKey) (*types.Token, *types.TokenPayload, error)

Token returns the token of the node

Jump to

Keyboard shortcuts

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