report

package
v0.0.14 Latest Latest
Warning

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

Go to latest
Published: Jul 13, 2023 License: MIT Imports: 7 Imported by: 0

README

Report

用于数据上报,其中数据埋点是线程安全的

全局埋点 GlobalBuried

全局埋点适用于活跃用户数、用户总量等全局的数据统计

数据埋点 DataBuried

数据埋点适合进行用户数据、交易数据等存在多id情况的数据统计

跨进程上报

通常数据埋点会占用一些系统资源而妨碍主进程的运行,这时候可以通过将上报工作独立出来减轻主进程负担

默认情况下的埋点数据是存储在执行进程的内存中的,可以通过可选项自定义存储位置,例如Redis

实现思路,以Redis为例:

  • 在主进程创建埋点,并将数据读写更改为Redis
  • 上报进程中创建上报器,按照特定策略从Redis读取数据进行上报

Documentation

Overview

Package report 提供了对数据埋点及上报的实现

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DataBuried

type DataBuried[DataID comparable, Data any] struct {
	// contains filtered or unexported fields
}

DataBuried 数据埋点

  • 数据埋点通常用于统计不同类型的数据,例如用户数据、商城数据等

func NewDataBuried

func NewDataBuried[DataID comparable, Data any](name string, hitLogic HitLogic[Data], options ...DataBuriedOption[DataID, Data]) *DataBuried[DataID, Data]

NewDataBuried 创建一个数据埋点

func (*DataBuried[DataID, Data]) GetData

func (slf *DataBuried[DataID, Data]) GetData(id DataID) Data

GetData 获取数据

func (*DataBuried[DataID, Data]) GetName

func (slf *DataBuried[DataID, Data]) GetName() string

GetName 获取名称

func (*DataBuried[DataID, Data]) GetSize

func (slf *DataBuried[DataID, Data]) GetSize() int

GetSize 获取已触发该埋点的id数量

func (*DataBuried[DataID, Data]) Hit

func (slf *DataBuried[DataID, Data]) Hit(id DataID, data Data)

Hit 命中数据埋点

type DataBuriedOption

type DataBuriedOption[DataID comparable, Data any] func(buried *DataBuried[DataID, Data])

func WithDataBuriedStorage

func WithDataBuriedStorage[DataID comparable, Data any](getData func(id DataID) Data, setData func(id DataID, data Data)) DataBuriedOption[DataID, Data]

WithDataBuriedStorage 通过特定的存储模式创建数据埋点

  • 默认情况下埋点数据存储在内存中
  • 使用该方式可以将埋点存储存储在其他如数据库、消息队列中

type GlobalBuried

type GlobalBuried[Data any] struct {
	// contains filtered or unexported fields
}

GlobalBuried 全局埋点

  • 全局埋点适用于活跃用户数等统计

func NewGlobalBuried

func NewGlobalBuried[Data any](name string, hitLogic HitLogic[Data], options ...GlobalBuriedOption[Data]) *GlobalBuried[Data]

NewGlobalBuried 创建一个全局埋点

func (*GlobalBuried[Data]) GetData

func (slf *GlobalBuried[Data]) GetData() Data

GetData 获取数据

func (*GlobalBuried[Data]) GetName

func (slf *GlobalBuried[Data]) GetName() string

GetName 获取名称

func (*GlobalBuried[Data]) Hit

func (slf *GlobalBuried[Data]) Hit(data Data)

Hit 命中数据埋点

type GlobalBuriedOption

type GlobalBuriedOption[Data any] func(buried *GlobalBuried[Data])

func WithGlobalBuriedStorage

func WithGlobalBuriedStorage[DataID comparable, Data any](getData func() Data, setData func(data Data)) GlobalBuriedOption[Data]

WithGlobalBuriedStorage 通过特定的存储模式创建全局埋点

  • 默认情况下埋点数据存储在内存中
  • 使用该方式可以将埋点存储存储在其他如数据库、消息队列中

type HitLogic

type HitLogic[Data any] func(data Data, input Data) Data

HitLogic 埋点命中逻辑

  • data: 当前数据
  • input: 新输入的数据
  • return: 设置当前数据

func WithHitLogicCover

func WithHitLogicCover[Data any]() HitLogic[Data]

WithHitLogicCover 通过覆盖原数值的方式处理命中事件

func WithHitLogicCustomize

func WithHitLogicCustomize[Data any](logic func(data Data, input Data) Data) HitLogic[Data]

WithHitLogicCustomize 通过自定义命中处理逻辑处理命中事件

  • 通过对旧数据和新数据的处理,将返回的值作为新的数据值

func WithHitLogicOverlay

func WithHitLogicOverlay[Data generic.Number]() HitLogic[Data]

WithHitLogicOverlay 通过数值叠加的方式处理命中事件

  • 例如原始值为100,新输入为200,最终结果为300

type Reporter

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

Reporter 数据上报器

func NewReporter

func NewReporter(reportHandle func() error, options ...ReporterOption) *Reporter

func (*Reporter) Report

func (slf *Reporter) Report() error

Report 上报

type ReporterOption

type ReporterOption func(reporter *Reporter)

func WithReporterErrorHandle

func WithReporterErrorHandle(errorHandle func(reporter *Reporter, err error)) ReporterOption

func WithReporterStrategies

func WithReporterStrategies(strategies ...ReporterStrategy) ReporterOption

WithReporterStrategies 通过特定上报策略进行创建

func WithReporterTicker

func WithReporterTicker(ticker *timer.Ticker) ReporterOption

WithReporterTicker 通过特定的定时器创建上报器

type ReporterStrategy

type ReporterStrategy func(reporter *Reporter)

ReporterStrategy 上报器策略

func ReportStrategyFixedTime

func ReportStrategyFixedTime(hour, min, sec int) ReporterStrategy

ReportStrategyFixedTime 将在每天的固定时间上报

func ReportStrategyLoop

func ReportStrategyLoop(t time.Duration) ReporterStrategy

ReportStrategyLoop 循环上报

  • 将在创建后上报一次,并且在每隔一段时间后继续上报

Jump to

Keyboard shortcuts

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