Instalasi & Persyaratan
distlimit adalah library rate-limiting terdistribusi, pluggable, dan berperforma ultra-tinggi untuk Go.
Persyaratan Sistem
Section titled “Persyaratan Sistem”Sebelum menginstal distlimit, pastikan lingkungan pengembangan Anda memenuhi persyaratan sistem minimum berikut:
| Persyaratan | Versi yang Didukung | Catatan |
|---|---|---|
| Go Runtime | 1.20 atau lebih baru |
Diuji hingga Go 1.26+. Memanfaatkan fitur pustaka standar Go modern (context, atomic.Pointer, net/netip). |
| Redis Server (Opsional) | v6.0 atau lebih baru |
Diperlukan hanya jika menggunakan driver penyimpanan Redis atau Hybrid. Mendukung mode Standalone, Sentinel, dan Cluster. |
| Sistem Operasi | Linux, macOS, Windows | Kompatibel lintas platform tanpa dependensi CGO spesifik OS (CGO_ENABLED=0). |
Instalasi via Go Modules
Section titled “Instalasi via Go Modules”Instal distlimit di project Go Anda menggunakan perintah standar go get:
go get github.com/balramadan/distlimitPerintah ini akan menginstal library utama beserta driver penyimpanan bawaan (memory, redis, hybrid) dan algoritma standar.
Dependensi Sub-package
Section titled “Dependensi Sub-package”distlimit dirancang dengan prinsip Kebijakan Bebas Dependensi Eksternal pada Core Engine.
Engine utama rate-limiting hanya mengandalkan pustaka standar Go. Dependensi pihak ketiga diisolasi di dalam sub-package tertentu:
Dependensi Ekstensi Opsional
Section titled “Dependensi Ekstensi Opsional”1. Distributed Redis Driver (driver/redis)
Section titled “1. Distributed Redis Driver (driver/redis)”Membutuhkan go-redis/v9:
go get github.com/redis/go-redis/v92. Exporter Telemetri & Observabilitas (metrics/...)
Section titled “2. Exporter Telemetri & Observabilitas (metrics/...)”- Prometheus Observer:
go get github.com/prometheus/client_golang - OpenTelemetry Observer:
go get go.opentelemetry.io/otel
3. Middleware Framework Web (middleware/...)
Section titled “3. Middleware Framework Web (middleware/...)”- Fiber v3:
github.com/balramadan/distlimit/middleware/fiber - Gin:
github.com/balramadan/distlimit/middleware/gin - Echo v4 / v5:
github.com/balramadan/distlimit/middleware/echo - Standard net/http / Chi:
github.com/balramadan/distlimit/middleware/nethttp - gRPC:
github.com/balramadan/distlimit/middleware/grpc
Verifikasi Instalasi
Section titled “Verifikasi Instalasi”Verifikasi bahwa distlimit di-import dan dikompilasi dengan benar di project Anda dengan membuat file pengujian main.go:
package main
import ( "fmt" "time"
"github.com/balramadan/distlimit" "github.com/balramadan/distlimit/driver/memory")
func main() { memDriver := memory.New(5 * time.Minute) defer memDriver.Close(nil)
limiter, err := distlimit.New(memDriver, distlimit.WithLimit(10)) if err != nil { panic(err) }
fmt.Printf("distlimit berhasil diinisialisasi! Pointer: %p\n", limiter)}Jalankan file:
go run main.go