«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Ограничение скорости с помощью ThrottleX

Ограничение скорости с помощью ThrottleX

Опубликовано 2 ноября 2024 г.
Просматривать:831

Rate Limiting with ThrottleX

Быстрые ссылки:

  • Репозиторий GitHub
  • Вики-документация

Введение:

Привет, энтузиасты открытого исходного кода и поклонники Go! Я вернулся с кратким обзором моего проекта с открытым исходным кодом ThrottleX, распределенного ограничителя скорости для API. Я все еще новичок в мире открытого исходного кода, поэтому всегда буду рад вашим советам! ?

ThrottleX создан, чтобы помочь вам эффективно управлять трафиком API, обеспечивая бесперебойную и справедливую работу вашей системы. ThrottleX поможет вам предотвратить злоупотребления или справиться с высокой нагрузкой. Давайте рассмотрим некоторые алгоритмы ограничения скорости, которые делают ThrottleX мощным. ?

Объяснение алгоритмов ограничения скорости ?‍?

ThrottleX включает в себя три основных алгоритма, которые помогут вам управлять трафиком API:

1. Ограничение фиксированной скорости окна

Как это работает: представьте, что вы делите время на фиксированные интервалы. В течение каждого интервала вы разрешаете фиксированное количество запросов — скажем, 100 запросов в минуту. После закрытия окна счетчик сбрасывается.

Сценарий использования: отлично подходит для предсказуемых моделей трафика, но будьте осторожны с «проблемой границы», когда многие запросы в конце окна могут обойти предполагаемое ограничение скорости.

2. Ограничение скорости скользящего окна

Как это работает: это похоже на скользящее среднее — вместо полного сброса в конце каждого окна ограничение скорости «скользит» во времени, обеспечивая более плавное управление.

Сценарий использования: идеально подходит для предотвращения всплесков нагрузки и более равномерного распределения запросов.

3. Ограничение скорости корзины токенов

Как это работает: представьте себе корзину, которая постоянно наполняется токенами. Запросы потребляют токены, и если корзина пуста, запросы блокируются до тех пор, пока она не пополнится.

Сценарий использования: идеально подходит для разрешения внезапных всплесков трафика при накоплении токенов.

Пример использования ?️

Вот простой пример использования ограничителя скорости фиксированного окна:

package main

import (
    "github.com/neelp03/throttlex/ratelimiter"
    "github.com/neelp03/throttlex/store"
    "time"
    "fmt"
)

func main() {
    // Initialize an in-memory store and a Fixed Window rate limiter
    memStore := store.NewMemoryStore()
    limiter, err := ratelimiter.NewFixedWindowLimiter(memStore, 10, time.Minute)
    if err != nil {
        fmt.Println("Failed to create limiter:", err)
        return
    }

    // Simulate API requests
    key := "user1"
    for i := 0; i 



Ожидаемый результат:

Request 1 allowed
Request 2 allowed
... (up to 10 allowed)
Request 11 blocked
Request 12 blocked
... (up to 15 blocked)

Что будет с ThrottleX дальше? ?

  • Ограничение приоритетной скорости: разные приоритеты для разных пользователей.
  • Динамическое ограничение скорости: регулируйте ограничения в зависимости от нагрузки на сервер.
  • Ограничение параллелизма: управление одновременными запросами.

Следите за обновлениями, которые сделают ThrottleX еще более мощным!

Как вы можете внести свой вклад?

Я все еще новичок в открытом исходном коде, и мне бы хотелось, чтобы вы приняли участие в этом путешествии! Вклад всегда приветствуется — будь то исправление ошибок, предложения или улучшения документации.

Ознакомьтесь с репозиторием ThrottleX GitHub Repo и поставьте ему звездочку, если найдете его полезным. Не стесняйтесь открывать проблемы или запросы на извлечение — все поможет!

Заключительные мысли

ThrottleX — это моя попытка сделать ограничение скорости API более доступным и эффективным. Давайте сделаем это весело (и меньше боли)! ?

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/neelp03/rate-limiting-with-throttlex-26df?1. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3