Lewati ke konten

Instalasi & Persyaratan

distlimit adalah library rate-limiting terdistribusi, pluggable, dan berperforma ultra-tinggi untuk Go.


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).

Instal distlimit di project Go Anda menggunakan perintah standar go get:

Terminal window
go get github.com/balramadan/distlimit

Perintah ini akan menginstal library utama beserta driver penyimpanan bawaan (memory, redis, hybrid) dan algoritma standar.


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:

1. Distributed Redis Driver (driver/redis)

Section titled “1. Distributed Redis Driver (driver/redis)”

Membutuhkan go-redis/v9:

Terminal window
go get github.com/redis/go-redis/v9

2. 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 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:

Terminal window
go run main.go