bandwidth

package
v1.119.11 Latest Latest
Warning

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

Go to latest
Published: Dec 20, 2024 License: AGPL-3.0 Imports: 10 Imported by: 0

Documentation

Overview

Package bandwidth system keeps track of bandwidth usage as reported by order limits and orders.

Package bandwidth implements bandwidth usage rollup loop.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Cache added in v1.104.1

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

Cache stores bandwidth usage in memory and persists it to the database. Currently, it only acts as a write cache.

func NewCache added in v1.104.1

func NewCache(bandwidthdb DB) *Cache

NewCache creates a new bandwidth Cache.

func (*Cache) Add added in v1.104.1

func (c *Cache) Add(ctx context.Context, satelliteID storj.NodeID, action pb.PieceAction, amount int64, created time.Time) (err error)

Add adds a bandwidth usage to the cache.

func (*Cache) AddBatch added in v1.104.1

func (c *Cache) AddBatch(ctx context.Context, usages map[CacheKey]*Usage) (err error)

AddBatch adds a batch of bandwidth usages to the cache.

func (*Cache) EgressSummary added in v1.104.1

func (c *Cache) EgressSummary(ctx context.Context, from, to time.Time) (*Usage, error)

EgressSummary returns the summary of egress bandwidth usages.

func (*Cache) GetDailyRollups added in v1.104.1

func (c *Cache) GetDailyRollups(ctx context.Context, from, to time.Time) ([]UsageRollup, error)

GetDailyRollups returns the slice of daily bandwidth usage rollups for the provided time range, sorted in ascending order.

func (*Cache) GetDailySatelliteRollups added in v1.104.1

func (c *Cache) GetDailySatelliteRollups(ctx context.Context, satelliteID storj.NodeID, from, to time.Time) ([]UsageRollup, error)

GetDailySatelliteRollups returns the slice of daily bandwidth usage for the provided time range, sorted in ascending order for a particular satellite.

func (*Cache) IngressSummary added in v1.104.1

func (c *Cache) IngressSummary(ctx context.Context, from, to time.Time) (*Usage, error)

IngressSummary returns the summary of ingress bandwidth usages.

func (*Cache) MonthSummary added in v1.104.1

func (c *Cache) MonthSummary(ctx context.Context, now time.Time) (int64, error)

MonthSummary returns the summary of the current month's bandwidth usages.

func (*Cache) Persist added in v1.104.1

func (c *Cache) Persist(ctx context.Context) (err error)

Persist writes the cache to the database.

func (*Cache) SatelliteEgressSummary added in v1.104.1

func (c *Cache) SatelliteEgressSummary(ctx context.Context, satelliteID storj.NodeID, from, to time.Time) (*Usage, error)

SatelliteEgressSummary returns the egress bandwidth usage for a particular satellite.

func (*Cache) SatelliteIngressSummary added in v1.104.1

func (c *Cache) SatelliteIngressSummary(ctx context.Context, satelliteID storj.NodeID, from, to time.Time) (*Usage, error)

SatelliteIngressSummary returns the ingress bandwidth usage for a particular satellite.

func (*Cache) SatelliteSummary added in v1.104.1

func (c *Cache) SatelliteSummary(ctx context.Context, satelliteID storj.NodeID, from, to time.Time) (*Usage, error)

SatelliteSummary returns the aggregated bandwidth usage for a particular satellite.

func (*Cache) Summary added in v1.104.1

func (c *Cache) Summary(ctx context.Context, from, to time.Time) (*Usage, error)

Summary returns the summary of bandwidth usages.

func (*Cache) SummaryBySatellite added in v1.104.1

func (c *Cache) SummaryBySatellite(ctx context.Context, from, to time.Time) (map[storj.NodeID]*Usage, error)

SummaryBySatellite returns the summary of bandwidth usages by satellite.

type CacheKey added in v1.104.1

type CacheKey struct {
	SatelliteID storj.NodeID
	CreatedAt   time.Time
}

CacheKey is a key for the bandwidth cache.

type Config added in v0.16.0

type Config struct {
	Interval time.Duration `help:"how frequently bandwidth usage cache should be synced with the db" default:"1h0m0s" testDefault:"1s"`
}

Config defines parameters for storage node Collector.

type DB

type DB interface {
	Writer
	// MonthSummary returns summary of the current months bandwidth usages.
	MonthSummary(ctx context.Context, now time.Time) (int64, error)

	// Summary returns summary of bandwidth usages.
	Summary(ctx context.Context, from, to time.Time) (*Usage, error)
	// EgressSummary returns summary of egress bandwidth usages.
	EgressSummary(ctx context.Context, from, to time.Time) (*Usage, error)
	// IngressSummary returns summary of ingress bandwidth usages.
	IngressSummary(ctx context.Context, from, to time.Time) (*Usage, error)
	// SatelliteSummary returns aggregated bandwidth usage for a particular satellite.
	SatelliteSummary(ctx context.Context, satelliteID storj.NodeID, from, to time.Time) (*Usage, error)
	// SatelliteEgressSummary returns egress bandwidth usage for a particular satellite.
	SatelliteEgressSummary(ctx context.Context, satelliteID storj.NodeID, from, to time.Time) (*Usage, error)
	// SatelliteIngressSummary returns ingress bandwidth usage for a particular satellite.
	SatelliteIngressSummary(ctx context.Context, satelliteID storj.NodeID, from, to time.Time) (*Usage, error)
	SummaryBySatellite(ctx context.Context, from, to time.Time) (map[storj.NodeID]*Usage, error)
	// GetDailyRollups returns slice of daily bandwidth usage rollups for provided time range,
	// sorted in ascending order.
	GetDailyRollups(ctx context.Context, from, to time.Time) ([]UsageRollup, error)
	// GetDailySatelliteRollups returns slice of daily bandwidth usage for provided time range,
	// sorted in ascending order for a particular satellite.
	GetDailySatelliteRollups(ctx context.Context, satelliteID storj.NodeID, from, to time.Time) ([]UsageRollup, error)
}

DB contains information about bandwidth usage.

architecture: Database

type Egress added in v0.21.0

type Egress struct {
	Repair int64 `json:"repair"`
	Audit  int64 `json:"audit"`
	Usage  int64 `json:"usage"`
}

Egress stores info about storage node egress usage.

func (*Egress) Add added in v1.106.1

func (egress *Egress) Add(b Egress)

Add adds another egress to this one.

type Ingress added in v0.21.0

type Ingress struct {
	Repair int64 `json:"repair"`
	Usage  int64 `json:"usage"`
}

Ingress stores info about storage node ingress usage.

func (*Ingress) Add added in v1.106.1

func (ingress *Ingress) Add(b Ingress)

Add adds another ingress to this one.

type Service added in v0.16.0

type Service struct {
	Loop *sync2.Cycle
	// contains filtered or unexported fields
}

Service implements the bandwidth usage rollup service.

architecture: Chore

func NewService added in v0.16.0

func NewService(log *zap.Logger, cache *Cache, config Config) *Service

NewService creates a new bandwidth service.

func (*Service) Close added in v0.16.0

func (service *Service) Close() (err error)

Close stops the background process for rollups of bandwidth usage.

func (*Service) Run added in v0.16.0

func (service *Service) Run(ctx context.Context) (err error)

Run starts the background process for syncing bandwidth usage cache with the db.

func (*Service) RunOnce added in v1.104.1

func (service *Service) RunOnce(ctx context.Context) (err error)

RunOnce syncs bandwidth usage cache with the db.

type Usage

type Usage struct {
	Invalid int64
	Unknown int64

	Put       int64
	Get       int64
	GetAudit  int64
	GetRepair int64
	PutRepair int64
	Delete    int64
}

Usage contains bandwidth usage information based on the type.

func TotalMonthlySummary added in v0.10.0

func TotalMonthlySummary(ctx context.Context, db DB) (*Usage, error)

TotalMonthlySummary returns total bandwidth usage for current month.

func (*Usage) Add

func (usage *Usage) Add(b *Usage)

Add adds another usage to this one.

func (*Usage) Egress added in v1.106.1

func (usage *Usage) Egress() *Usage

Egress returns egress bandwidth usage.

func (*Usage) Include

func (usage *Usage) Include(action pb.PieceAction, amount int64)

Include adds specified action to the appropriate field.

func (*Usage) Ingress added in v1.106.1

func (usage *Usage) Ingress() *Usage

Ingress returns ingress bandwidth usage.

func (*Usage) Rollup added in v1.104.1

func (usage *Usage) Rollup(intervalStart time.Time) *UsageRollup

Rollup returns rolluped bandwidth usage.

func (*Usage) ToEgress added in v1.106.1

func (usage *Usage) ToEgress() Egress

ToEgress converts Usage to Egress.

func (*Usage) ToIngress added in v1.106.1

func (usage *Usage) ToIngress() Ingress

ToIngress converts Usage to Ingress.

func (*Usage) Total

func (usage *Usage) Total() int64

Total sums all type of bandwidths.

type UsageRollup added in v0.21.0

type UsageRollup struct {
	Egress        Egress    `json:"egress"`
	Ingress       Ingress   `json:"ingress"`
	Delete        int64     `json:"delete"`
	IntervalStart time.Time `json:"intervalStart"`
}

UsageRollup contains rolluped bandwidth usage.

type Writer added in v1.117.3

type Writer interface {
	Add(ctx context.Context, satelliteID storj.NodeID, action pb.PieceAction, amount int64, created time.Time) error
	AddBatch(ctx context.Context, usages map[CacheKey]*Usage) (err error)
}

Writer is just enough methods to update used bandwidth.

Jump to

Keyboard shortcuts

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