Documentation
¶
Overview ¶
Package poolmanager adalah sebuah package di Go yang digunakan untuk mengelola pooling objek secara efisien. Package ini memungkinkan Anda untuk mengatur konfigurasi pooling, sharding, caching, auto-tuning, dan kebijakan eviksi untuk objek-objek yang sering digunakan dalam aplikasi Anda.
Index ¶
- Constants
- type EventType
- type EvictionPolicy
- type HashSharding
- type LFUEvictionPolicy
- type LRUEvictionPolicy
- type LocalCache
- type LogLevel
- type MetricsCallback
- type MonitoringConfig
- type PoolAble
- type PoolConfigBuilder
- func (b *PoolConfigBuilder) Build() (PoolConfiguration, error)
- func (b *PoolConfigBuilder) WithAutoTune(autoTune bool) *PoolConfigBuilder
- func (b *PoolConfigBuilder) WithAutoTuneFactor(factor float64) *PoolConfigBuilder
- func (b *PoolConfigBuilder) WithCacheMaxSize(cacheMaxSize int) *PoolConfigBuilder
- func (b *PoolConfigBuilder) WithEnableCaching(enableCaching bool) *PoolConfigBuilder
- func (b *PoolConfigBuilder) WithEvictionInterval(evictionInterval time.Duration) *PoolConfigBuilder
- func (b *PoolConfigBuilder) WithEvictionPolicy(evictionPolicy EvictionPolicy) *PoolConfigBuilder
- func (b *PoolConfigBuilder) WithInitialSize(initialSize int) *PoolConfigBuilder
- func (b *PoolConfigBuilder) WithMaxSize(maxSize int) *PoolConfigBuilder
- func (b *PoolConfigBuilder) WithMinSize(minSize int) *PoolConfigBuilder
- func (b *PoolConfigBuilder) WithOnAutoTune(onAutoTune func(poolType string, newSize int)) *PoolConfigBuilder
- func (b *PoolConfigBuilder) WithOnCreate(onCreate func(poolType string, instance PoolAble)) *PoolConfigBuilder
- func (b *PoolConfigBuilder) WithOnGet(onGet func(poolType string)) *PoolConfigBuilder
- func (b *PoolConfigBuilder) WithOnPut(onPut func(poolType string)) *PoolConfigBuilder
- func (b *PoolConfigBuilder) WithOnReset(onReset func(poolType string, instance PoolAble)) *PoolConfigBuilder
- func (b *PoolConfigBuilder) WithSharding(enabled bool, shardCount int) *PoolConfigBuilder
- func (b *PoolConfigBuilder) WithSizeLimit(sizeLimit int) *PoolConfigBuilder
- func (b *PoolConfigBuilder) WithTTL(ttl time.Duration) *PoolConfigBuilder
- type PoolConfiguration
- type PoolError
- type PoolEvent
- type PoolItemMetadata
- type PoolManager
- func (pm *PoolManager) AcquireInstance(poolName string) (PoolAble, error)
- func (pm *PoolManager) AddItemMetadata(poolName, key string)
- func (pm *PoolManager) AddPool(poolName string, factory func() PoolAble, config PoolConfiguration) error
- func (pm *PoolManager) AddShard()
- func (pm *PoolManager) Clear()
- func (pm *PoolManager) ForceEvict(poolName, key string) error
- func (pm *PoolManager) GetItemMetadata(key string) (*PoolItemMetadata, bool)
- func (pm *PoolManager) GetPoolSize(poolName string) int
- func (pm *PoolManager) GetPoolUsage(poolType string) (int32, error)
- func (pm *PoolManager) GetShardSize(poolName string, shardIndex int) int
- func (pm *PoolManager) HandleError(err error)
- func (pm *PoolManager) InitializePool(poolName string, config PoolConfiguration, factory func() interface{}) error
- func (pm *PoolManager) ReleaseInstance(poolName string, instance PoolAble) error
- func (pm *PoolManager) RemovePool(poolName string) error
- func (pm *PoolManager) RemoveShard() error
- func (pm *PoolManager) Reset(poolName string) error
- func (pm *PoolManager) ResetItemMetadata(key string)
- func (pm *PoolManager) ResizePool(poolName string, newSize int)
- func (pm *PoolManager) SetEvictionPolicy(policy EvictionPolicy)
- func (pm *PoolManager) SetLogLevel(level LogLevel)
- func (pm *PoolManager) SetMonitoringConfig(config MonitoringConfig)
- func (pm *PoolManager) SetShardingStrategy(strategy ShardingStrategy)
- func (pm *PoolManager) ShouldEvictItem(key string, metadata *PoolItemMetadata) bool
- func (pm *PoolManager) StartAutoTuning()
- func (pm *PoolManager) StopAutoTuning()
- func (pm *PoolManager) UpdateIdleDuration(key string)
- func (pm *PoolManager) UpdateItemMetadata(poolName, key string)
- type PoolMetrics
- type RandomSharding
- type RoundRobinSharding
- type ShardingStrategy
- type SmartEvictionPolicy
- type TTLEvictionPolicy
Constants ¶
const ( ErrPoolDoesNotExist = "pool does not exist: " // Error untuk pool yang tidak ditemukan ErrInvalidShardedPoolName = "pool is not sharded as expected" // Error untuk tipe pool yang tidak sesuai dengan sharding ErrInvalidNonShardedPoolName = "pool is not a valid sync.Pool" // Error untuk pool yang bukan tipe sync.Pool ErrInvalidPoolConfigType = "invalid pool config type" // Error untuk konfigurasi pool yang tidak valid ErrInvalidFactoryType = "invalid factory type" // Error untuk tipe factory yang tidak valid )
Error constants untuk berbagai jenis kesalahan pada PoolManager Konstanta ini digunakan sebagai pesan dasar untuk error yang mungkin terjadi dalam pengelolaan pool, termasuk kesalahan saat pool tidak ditemukan atau tidak valid.
const ( NoEvictionPolicy = "no_eviction" DefaultEvictionPolicy = "default_eviction" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type EvictionPolicy ¶
type EvictionPolicy interface { // ShouldEvict mengevaluasi apakah objek harus dieviksikan // key: kunci unik dari objek yang dievaluasi // metadata: metadata dari objek yang digunakan untuk mengevaluasi kebijakan eviksi // Mengembalikan nilai true jika objek harus dieviksikan, false jika tidak. ShouldEvict(key string, metadata *PoolItemMetadata) bool // Evict mengevaluasi apakah objek harus dieviksikan // poolType: tipe pool dari mana item akan dihapus // Fungsi ini mencari item dengan waktu terakhir digunakan paling lama dan menghapusnya dari cache dan metadata. Evict(poolType string, pm *PoolManager) }
EvictionPolicy interface untuk kebijakan eviksi EvictionPolicy mendefinisikan metode ShouldEvict, yang digunakan untuk menentukan apakah suatu objek dalam pool harus dihapus berdasarkan kebijakan eviksi tertentu.
type HashSharding ¶ added in v1.1.0
type HashSharding struct{}
HashSharding implements hash-based strategy
func (*HashSharding) GetShardIndex ¶ added in v1.1.0
func (h *HashSharding) GetShardIndex(poolType string, shardCount int, key string) int
type LFUEvictionPolicy ¶
type LFUEvictionPolicy struct {
MinFrequency int // Batas minimum frekuensi penggunaan untuk mempertahankan objek
}
LFUEvictionPolicy mengimplementasikan kebijakan eviksi Least Frequently Used (LFU) Kebijakan ini akan menghapus objek yang jarang digunakan.
func (*LFUEvictionPolicy) ShouldEvict ¶
func (p *LFUEvictionPolicy) ShouldEvict(key string, metadata *PoolItemMetadata) bool
ShouldEvict mengevaluasi apakah objek harus dieviksikan berdasarkan frekuensi penggunaan key: kunci unik dari objek yang dievaluasi metadata: metadata objek yang digunakan untuk evaluasi Mengembalikan nilai true jika frekuensi penggunaan objek kurang dari MinFrequency.
type LRUEvictionPolicy ¶
LRUEvictionPolicy mengimplementasikan kebijakan eviksi Least Recently Used (LRU) Kebijakan ini akan menghapus objek yang sudah tidak digunakan dalam jangka waktu tertentu.
func (*LRUEvictionPolicy) Evict ¶ added in v1.1.0
func (p *LRUEvictionPolicy) Evict(poolType string, pm *PoolManager)
func (*LRUEvictionPolicy) ShouldEvict ¶
func (p *LRUEvictionPolicy) ShouldEvict(key string, metadata *PoolItemMetadata) bool
ShouldEvict mengevaluasi apakah objek harus dieviksikan berdasarkan waktu terakhir digunakan key: kunci unik dari objek yang dievaluasi metadata: metadata objek yang digunakan untuk evaluasi Mengembalikan nilai true jika waktu idle sejak penggunaan terakhir melebihi MaxIdleTime.
type LocalCache ¶ added in v1.1.0
type LocalCache struct {
// contains filtered or unexported fields
}
func (*LocalCache) Get ¶ added in v1.1.0
func (lc *LocalCache) Get(key string) (interface{}, bool)
func (*LocalCache) Set ¶ added in v1.1.0
func (lc *LocalCache) Set(key string, value interface{})
type MetricsCallback ¶
type MetricsCallback func(poolType, action string, metrics PoolMetrics)
MetricsCallback digunakan untuk mencatat metrik secara custom Callback ini memungkinkan pengguna untuk mencatat atau memonitor metrik penggunaan pool secara kustom berdasarkan tipe pool dan tindakan yang terjadi.
type MonitoringConfig ¶
type MonitoringConfig struct { EnableLogging bool // Menentukan apakah logging diaktifkan LogFunc func(message string) // Fungsi untuk mencatat log CustomMetricsFunc MetricsCallback // Fungsi untuk mencatat metrik secara kustom LogLevel LogLevel OnEvent func(event PoolEvent) }
MonitoringConfig untuk mengatur konfigurasi monitoring MonitoringConfig menyediakan konfigurasi untuk logging dan pencatatan metrik kustom, termasuk apakah logging diaktifkan (EnableLogging), fungsi logging (LogFunc), dan fungsi pencatatan metrik kustom (CustomMetricsFunc).
type PoolAble ¶
type PoolAble interface { // Reset mengatur ulang kondisi objek ke keadaan semula sebelum dikembalikan ke pool. // Metode ini memungkinkan objek untuk digunakan kembali tanpa meninggalkan data sebelumnya. Reset() }
PoolAble adalah interface yang HARUS DIIMPLEMENTASIKAN oleh struct yang ingin menggunakan pooling. Interface ini menentukan bahwa struct harus memiliki metode Reset() untuk mengatur ulang kondisi objek sebelum dikembalikan ke pool.
type PoolConfigBuilder ¶
type PoolConfigBuilder struct {
// contains filtered or unexported fields
}
PoolConfigBuilder digunakan untuk membangun konfigurasi pool menggunakan pola builder dengan chaining.
func NewPoolConfiguration ¶ added in v1.1.0
func NewPoolConfiguration(poolName string) *PoolConfigBuilder
NewPoolConfiguration membuat instance PoolConfigBuilder baru dengan konfigurasi default minimal. Menetapkan beberapa nilai default, seperti ukuran pool dan pengaturan lainnya.
func (*PoolConfigBuilder) Build ¶
func (b *PoolConfigBuilder) Build() (PoolConfiguration, error)
Build menghasilkan objek PoolConfiguration berdasarkan konfigurasi yang telah diatur pada builder.
func (*PoolConfigBuilder) WithAutoTune ¶
func (b *PoolConfigBuilder) WithAutoTune(autoTune bool) *PoolConfigBuilder
WithAutoTune mengaktifkan atau menonaktifkan auto-tuning pada pool.
func (*PoolConfigBuilder) WithAutoTuneFactor ¶
func (b *PoolConfigBuilder) WithAutoTuneFactor(factor float64) *PoolConfigBuilder
WithAutoTuneFactor menetapkan faktor peningkatan ukuran saat auto-tuning.
func (*PoolConfigBuilder) WithCacheMaxSize ¶
func (b *PoolConfigBuilder) WithCacheMaxSize(cacheMaxSize int) *PoolConfigBuilder
WithCacheMaxSize menetapkan ukuran maksimum cache yang dapat digunakan.
func (*PoolConfigBuilder) WithEnableCaching ¶
func (b *PoolConfigBuilder) WithEnableCaching(enableCaching bool) *PoolConfigBuilder
WithEnableCaching mengaktifkan atau menonaktifkan caching pada pool.
func (*PoolConfigBuilder) WithEvictionInterval ¶
func (b *PoolConfigBuilder) WithEvictionInterval(evictionInterval time.Duration) *PoolConfigBuilder
WithEvictionInterval menetapkan interval waktu untuk menjalankan eviksi pada pool.
func (*PoolConfigBuilder) WithEvictionPolicy ¶
func (b *PoolConfigBuilder) WithEvictionPolicy(evictionPolicy EvictionPolicy) *PoolConfigBuilder
WithEvictionPolicy menetapkan kebijakan eviksi yang digunakan.
func (*PoolConfigBuilder) WithInitialSize ¶
func (b *PoolConfigBuilder) WithInitialSize(initialSize int) *PoolConfigBuilder
WithInitialSize menetapkan ukuran awal pool saat diinisialisasi.
func (*PoolConfigBuilder) WithMaxSize ¶ added in v1.1.0
func (b *PoolConfigBuilder) WithMaxSize(maxSize int) *PoolConfigBuilder
func (*PoolConfigBuilder) WithMinSize ¶ added in v1.1.0
func (b *PoolConfigBuilder) WithMinSize(minSize int) *PoolConfigBuilder
func (*PoolConfigBuilder) WithOnAutoTune ¶ added in v1.1.0
func (b *PoolConfigBuilder) WithOnAutoTune(onAutoTune func(poolType string, newSize int)) *PoolConfigBuilder
func (*PoolConfigBuilder) WithOnCreate ¶ added in v1.1.0
func (b *PoolConfigBuilder) WithOnCreate(onCreate func(poolType string, instance PoolAble)) *PoolConfigBuilder
func (*PoolConfigBuilder) WithOnGet ¶ added in v1.1.0
func (b *PoolConfigBuilder) WithOnGet(onGet func(poolType string)) *PoolConfigBuilder
func (*PoolConfigBuilder) WithOnPut ¶ added in v1.1.0
func (b *PoolConfigBuilder) WithOnPut(onPut func(poolType string)) *PoolConfigBuilder
func (*PoolConfigBuilder) WithOnReset ¶ added in v1.1.0
func (b *PoolConfigBuilder) WithOnReset(onReset func(poolType string, instance PoolAble)) *PoolConfigBuilder
func (*PoolConfigBuilder) WithSharding ¶
func (b *PoolConfigBuilder) WithSharding(enabled bool, shardCount int) *PoolConfigBuilder
WithSharding mengaktifkan atau menonaktifkan sharding.
func (*PoolConfigBuilder) WithSizeLimit ¶
func (b *PoolConfigBuilder) WithSizeLimit(sizeLimit int) *PoolConfigBuilder
WithSizeLimit menetapkan batas maksimum jumlah objek yang dapat disimpan dalam pool.
func (*PoolConfigBuilder) WithTTL ¶
func (b *PoolConfigBuilder) WithTTL(ttl time.Duration) *PoolConfigBuilder
WithTTL menetapkan Time-to-Live (TTL) untuk kebijakan eviksi pada pool.
type PoolConfiguration ¶ added in v1.1.0
type PoolConfiguration struct { Name string // Nama pool SizeLimit int // Batas maksimum jumlah objek dalam pool MinSize int // Batas minimum jumlah objek dalam pool MaxSize int // Batas maksimum ukuran pool saat auto-tuning InitialSize int // Ukuran awal pool ketika diinisialisasi AutoTune bool // Menentukan apakah auto-tuning diaktifkan atau tidak AutoTuneInterval time.Duration // Interval waktu untuk menjalankan auto-tuning AutoTuneFactor float64 // Faktor peningkatan ukuran saat auto-tuning diaktifkan AutoTuneDynamicFactor func(currentSize int) float64 // Fungsi dinamis untuk faktor auto-tuning EnableCaching bool // Menentukan apakah caching diaktifkan CacheMaxSize int // Batas maksimum jumlah objek dalam cache ShardingEnabled bool // Menentukan apakah sharding diaktifkan ShardCount int // Jumlah shard yang digunakan untuk sharding ShardStrategy ShardingStrategy // Strategi sharding yang digunakan TTL time.Duration // Time-to-live untuk kebijakan eviksi pada objek yang tidak digunakan Eviction EvictionPolicy // Kebijakan eviksi untuk menghapus objek dari pool EvictionInterval time.Duration // Interval waktu untuk menjalankan eviksi KeyGenerator func() string // Fungsi untuk menghasilkan kunci khusus OnGet func(poolType string) // Callback yang dipanggil saat objek diambil dari pool OnPut func(poolType string) // Callback yang dipanggil saat objek dikembalikan ke pool OnEvict func(poolType string) // Callback yang dipanggil saat objek dihapus dari pool OnAutoTune func(poolType string, newSize int) // Callback yang dipanggil saat auto-tuning terjadi OnCreate func(poolType string, instance PoolAble) // Callback yang dipanggil saat objek dibuat OnDestroy func(poolType string, instance PoolAble) // Callback yang dipanggil saat objek dihancurkan OnReset func(poolType string, instance PoolAble) // Callback yang dipanggil saat objek direset OnShard func(poolType string, shardIndex int) // Callback yang dipanggil saat sharding terjadi OnCacheHit func(poolType string) // Callback yang dipanggil saat objek ditemukan OnError func(poolType string, err error) // Callback yang dipanggil saat terjadi error }
PoolConfiguration digunakan untuk mengatur konfigurasi pool, seperti batas ukuran, auto-tuning, dan sharding Konfigurasi ini memungkinkan penyesuaian perilaku pool, termasuk pengaturan cache dan kebijakan eviksi. PoolConfiguration digunakan untuk mengatur konfigurasi pool, termasuk jenis key dan pemrosesannya
func (*PoolConfiguration) Validate ¶ added in v1.1.0
func (config *PoolConfiguration) Validate() error
Validate memeriksa apakah konfigurasi pool valid.
type PoolError ¶
type PoolError struct { PoolName string // Tipe pool tempat kesalahan terjadi Operation string // Operasi yang gagal dijalankan Err error // Error asli yang menyebabkan kegagalan }
PoolError adalah tipe error khusus yang digunakan untuk mencatat kesalahan pada operasi PoolManager PoolError menyimpan informasi tentang tipe pool, operasi yang gagal, dan error asli yang menyebabkan kegagalan.
func NewPoolError ¶
NewPoolError membuat instance PoolError baru dengan informasi tentang poolName, operasi, dan error yang terjadi poolName: tipe pool yang menyebabkan kesalahan operation: nama operasi yang menyebabkan kesalahan (misalnya "add", "get", atau "put") err: error asli yang menyebabkan kegagalan Fungsi ini mengembalikan pointer ke PoolError yang baru dibuat.
type PoolItemMetadata ¶
type PoolItemMetadata struct { PoolName string // Nama pool yang mengelola item LastUsed time.Time // Terakhir kali item digunakan Frequency int // Frekuensi penggunaan item CreationTime time.Time // Waktu pembuatan item ExpirationTime *time.Time // Waktu kadaluarsa item (opsional) UsageDuration time.Duration // Total durasi penggunaan item Status string // Status item (misalnya, "Active", "Idle", "Evicted") OwnerID string // ID pemilik saat ini (opsional) AccessCount int // Jumlah total akses (penggunaan) item IdleDuration time.Duration // Durasi waktu item idle MaxUsageDuration time.Duration // Batas maksimal waktu penggunaan IsPooled bool // Apakah item sedang berada di pool atau sedang digunakan Tag map[string]string // Tag untuk penyimpanan informasi tambahan LastResetTime time.Time // Waktu terakhir item di-reset }
PoolItemMetadata menyimpan informasi yang digunakan untuk kebijakan eviksi Metadata ini mencakup berbagai atribut yang membantu menentukan kapan item di dalam pool harus dieviksikan atau dianggap tidak lagi aktif.
type PoolManager ¶
type PoolManager struct {
// contains filtered or unexported fields
}
PoolManager adalah struct untuk mengelola pooling objek Menyediakan fitur seperti auto-tuning, sharding, caching, dan eviksi
func NewPoolManager ¶
func NewPoolManager(config PoolConfiguration) *PoolManager
NewPoolManager membuat instance PoolManager baru dengan logger default Menginisialisasi channel autoTuneStop dan logger
func (*PoolManager) AcquireInstance ¶
func (pm *PoolManager) AcquireInstance(poolName string) (PoolAble, error)
AcquireInstance mengambil instance dari pool dengan tipe tertentu poolName: tipe pool tempat mengambil instance Mengembalikan objek PoolAble dan error jika terjadi kesalahan
func (*PoolManager) AddItemMetadata ¶ added in v1.1.0
func (pm *PoolManager) AddItemMetadata(poolName, key string)
func (*PoolManager) AddPool ¶
func (pm *PoolManager) AddPool(poolName string, factory func() PoolAble, config PoolConfiguration) error
AddPool menambahkan pool baru dengan tipe tertentu dan konfigurasi yang ditentukan poolName: tipe pool yang ditambahkan factory: fungsi untuk membuat objek baru dalam pool config: konfigurasi untuk pool yang ditambahkan
func (*PoolManager) AddShard ¶ added in v1.1.0
func (pm *PoolManager) AddShard()
AddShard menambahkan shard baru ke PoolManager
func (*PoolManager) Clear ¶ added in v1.1.0
func (pm *PoolManager) Clear()
Clear membersihkan semua pool
func (*PoolManager) ForceEvict ¶ added in v1.1.0
func (pm *PoolManager) ForceEvict(poolName, key string) error
ForceEvict secara paksa menghapus objek dari pool berdasarkan kunci
func (*PoolManager) GetItemMetadata ¶
func (pm *PoolManager) GetItemMetadata(key string) (*PoolItemMetadata, bool)
GetItemMetadata mengambil metadata item jika tersedia key: kunci unik yang mengidentifikasi item dalam metadata map Mengembalikan metadata item dan boolean yang menunjukkan apakah metadata ditemukan.
func (*PoolManager) GetPoolSize ¶ added in v1.1.0
func (pm *PoolManager) GetPoolSize(poolName string) int
GetPoolSize mengembalikan ukuran pool saat ini
func (*PoolManager) GetPoolUsage ¶ added in v1.1.0
func (pm *PoolManager) GetPoolUsage(poolType string) (int32, error)
GetPoolUsage mengakses metrik penggunaan pool secara langsung dari sync.Map.
func (*PoolManager) GetShardSize ¶ added in v1.1.0
func (pm *PoolManager) GetShardSize(poolName string, shardIndex int) int
GetShardSize mengembalikan ukuran shard tertentu
func (*PoolManager) HandleError ¶ added in v1.1.0
func (pm *PoolManager) HandleError(err error)
HandleError mengatur bagaimana error diproses
func (*PoolManager) InitializePool ¶ added in v1.1.0
func (pm *PoolManager) InitializePool(poolName string, config PoolConfiguration, factory func() interface{}) error
InitializePool menginisialisasi pool baru dengan konfigurasi yang diberikan. poolName: tipe objek pool yang ingin dibuat. config: konfigurasi pool yang digunakan. factory: fungsi untuk membuat objek baru yang akan dimasukkan ke dalam pool. InitializePool menginisialisasi pool baru dengan konfigurasi yang diberikan.
func (*PoolManager) ReleaseInstance ¶
func (pm *PoolManager) ReleaseInstance(poolName string, instance PoolAble) error
ReleaseInstance mengembalikan instance ke pool dengan tipe tertentu poolName: tipe pool tempat mengembalikan instance instance: objek yang akan dikembalikan ke pool
func (*PoolManager) RemovePool ¶
func (pm *PoolManager) RemovePool(poolName string) error
RemovePool menghapus pool tertentu berdasarkan tipe
func (*PoolManager) RemoveShard ¶ added in v1.1.0
func (pm *PoolManager) RemoveShard() error
RemoveShard menghapus shard jika jumlah shard lebih dari 0
func (*PoolManager) Reset ¶ added in v1.1.0
func (pm *PoolManager) Reset(poolName string) error
Reset mengatur ulang objek dalam pool
func (*PoolManager) ResetItemMetadata ¶ added in v1.1.0
func (pm *PoolManager) ResetItemMetadata(key string)
func (*PoolManager) ResizePool ¶ added in v1.1.0
func (pm *PoolManager) ResizePool(poolName string, newSize int)
func (*PoolManager) SetEvictionPolicy ¶ added in v1.1.0
func (pm *PoolManager) SetEvictionPolicy(policy EvictionPolicy)
SetEvictionPolicy mengganti kebijakan eviksi yang digunakan oleh PoolManager
func (*PoolManager) SetLogLevel ¶ added in v1.1.0
func (pm *PoolManager) SetLogLevel(level LogLevel)
SetLogLevel mengatur tingkat log untuk PoolManager
func (*PoolManager) SetMonitoringConfig ¶
func (pm *PoolManager) SetMonitoringConfig(config MonitoringConfig)
SetMonitoringConfig menetapkan konfigurasi monitoring untuk PoolManager MonitoringConfig digunakan untuk mengatur bagaimana log dan metrik dicatat
func (*PoolManager) SetShardingStrategy ¶ added in v1.1.0
func (pm *PoolManager) SetShardingStrategy(strategy ShardingStrategy)
SetShardingStrategy menetapkan strategi sharding yang akan digunakan oleh PoolManager. strategy: strategi sharding yang diimplementasikan oleh pengguna.
func (*PoolManager) ShouldEvictItem ¶ added in v1.1.0
func (pm *PoolManager) ShouldEvictItem(key string, metadata *PoolItemMetadata) bool
func (*PoolManager) StartAutoTuning ¶ added in v1.1.0
func (pm *PoolManager) StartAutoTuning()
func (*PoolManager) StopAutoTuning ¶ added in v1.1.0
func (pm *PoolManager) StopAutoTuning()
StopAutoTuning menghentikan proses auto-tuning pada PoolManager
func (*PoolManager) UpdateIdleDuration ¶ added in v1.1.0
func (pm *PoolManager) UpdateIdleDuration(key string)
func (*PoolManager) UpdateItemMetadata ¶
func (pm *PoolManager) UpdateItemMetadata(poolName, key string)
UpdateItemMetadata memperbarui metadata item saat diakses key: kunci unik yang mengidentifikasi item dalam metadata map Fungsi ini memperbarui informasi seperti waktu terakhir digunakan, frekuensi penggunaan, dan durasi penggunaan berdasarkan waktu yang telah berlalu sejak terakhir kali item digunakan.
type PoolMetrics ¶
type PoolMetrics struct { TotalGets int64 // Total jumlah objek yang diambil dari pool TotalPuts int64 // Total jumlah objek yang dikembalikan ke pool TotalEvicts int64 // Total jumlah objek yang dihapus dari pool CurrentUsage int32 // Jumlah objek yang sedang digunakan }
PoolMetrics untuk mencatat metrik penggunaan pool PoolMetrics menyimpan data mengenai jumlah operasi yang dilakukan pada pool, termasuk berapa kali objek diambil (TotalGets), dikembalikan (TotalPuts), dihapus (TotalEvicts), dan jumlah penggunaan pool saat ini (CurrentUsage).
type RandomSharding ¶ added in v1.1.0
type RandomSharding struct {
// contains filtered or unexported fields
}
RandomSharding implements random strategy
func NewRandomSharding ¶ added in v1.1.0
func NewRandomSharding() *RandomSharding
NewRandomSharding membuat instance baru dari RandomSharding
func (*RandomSharding) GetShardIndex ¶ added in v1.1.0
func (r *RandomSharding) GetShardIndex(poolType string, shardCount int, key string) int
type RoundRobinSharding ¶ added in v1.1.0
type RoundRobinSharding struct {
// contains filtered or unexported fields
}
RoundRobinSharding implements round-robin strategy
func (*RoundRobinSharding) GetShardIndex ¶ added in v1.1.0
func (rr *RoundRobinSharding) GetShardIndex(poolType string, shardCount int, key string) int
type ShardingStrategy ¶ added in v1.1.0
type SmartEvictionPolicy ¶
type SmartEvictionPolicy struct { TTL time.Duration // Batas waktu TTL untuk eviksi MaxIdleTime time.Duration // Batas waktu idle untuk LRU MinFrequency int // Batas frekuensi untuk LFU }
SmartEvictionPolicy menggabungkan kebijakan eviksi berbasis TTL, LRU, dan LFU Kebijakan ini memungkinkan eviksi objek berdasarkan tiga parameter: batas waktu hidup (TTL), waktu idle maksimum (MaxIdleTime), dan frekuensi minimum penggunaan (MinFrequency).
func (*SmartEvictionPolicy) Evict ¶ added in v1.1.0
func (p *SmartEvictionPolicy) Evict(poolType string, pm *PoolManager)
Implementasi Evict untuk SmartEvictionPolicy
func (*SmartEvictionPolicy) ShouldEvict ¶
func (p *SmartEvictionPolicy) ShouldEvict(key string, metadata *PoolItemMetadata) bool
ShouldEvict mengevaluasi apakah objek harus dieviksikan berdasarkan kombinasi kebijakan key: kunci unik dari objek yang dievaluasi metadata: metadata objek yang digunakan untuk evaluasi Mengembalikan nilai true jika salah satu dari ketentuan berikut terpenuhi: - Waktu sejak penggunaan terakhir melebihi TTL - Waktu idle melebihi MaxIdleTime - Frekuensi penggunaan kurang dari MinFrequency
type TTLEvictionPolicy ¶
TTLEvictionPolicy mengimplementasikan kebijakan eviksi berdasarkan TTL Kebijakan ini akan menghapus objek yang sudah tidak digunakan dalam jangka waktu tertentu.
func (*TTLEvictionPolicy) Evict ¶ added in v1.1.0
func (p *TTLEvictionPolicy) Evict(poolType string, pm *PoolManager)
Evict mengevaluasi apakah objek harus dieviksikan poolType: tipe pool dari mana item akan dihapus Fungsi ini mencari item dengan TTL terakhir digunakan paling lama dan menghapusnya dari cache dan metadata.
func (*TTLEvictionPolicy) ShouldEvict ¶
func (p *TTLEvictionPolicy) ShouldEvict(key string, metadata *PoolItemMetadata) bool
ShouldEvict mengevaluasi apakah objek harus dieviksikan berdasarkan TTL key: kunci unik dari objek yang dievaluasi metadata: metadata objek yang digunakan untuk evaluasi Mengembalikan nilai true jika waktu sejak penggunaan terakhir melebihi batas TTL.