golimit | Uber ringpop based distributed and decentralized rate | Runtime Evironment library

 by   myntra Go Version: Current License: MIT

kandi X-RAY | golimit Summary

kandi X-RAY | golimit Summary

golimit is a Go library typically used in Server, Runtime Evironment, Nodejs applications. golimit has no bugs, it has no vulnerabilities, it has a Permissive License and it has low support. You can download it from GitHub.

Golimit is Uber ringpop based distributed and decentralized rate limiter. It is horizontally scalable and is based on shared nothing architecture. Every node in system is capable of handling read and writes of counters. It is designed to offer sub milliseconds latency to caller application. Recommended deployment topology is sidecar model. Every golimit node keeps local and global counter for api counter and local value is synchronized with other nodes on configurable periodic interval or at defined threshold.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              golimit has a low active ecosystem.
              It has 583 star(s) with 24 fork(s). There are 24 watchers for this library.
              OutlinedDot
              It had no major release in the last 6 months.
              There are 0 open issues and 1 have been closed. There are no pull requests.
              It has a neutral sentiment in the developer community.
              The latest version of golimit is current.

            kandi-Quality Quality

              golimit has no bugs reported.

            kandi-Security Security

              golimit has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.

            kandi-License License

              golimit is licensed under the MIT License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              golimit releases are not available. You will need to build from source code and install.
              Installation instructions are not available. Examples and code snippets are available.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of golimit
            Get all kandi verified functions for this library.

            golimit Key Features

            No Key Features are available at this moment for golimit.

            golimit Examples and Code Snippets

            No Code Snippets are available at this moment for golimit.

            Community Discussions

            Trending Discussions on golimit

            QUESTION

            Distributed outbound http rate limiter
            Asked 2019-Jul-01 at 08:46

            I have a microservice architecture application with multiple services polling an external API. The external API has a rate limiter of 600 requests per minute. How can I have all of my instances together stay below the shared 600 rate limit?

            Google only brought me 3 solutions, the most promising being:

            • myntra/golimit the most promising of the three, but I literally do not have a clue how to set that up.
            • wallstreetcn/rate which only seems to reject when limit has been reached (my app needs to wait till it can make the request) and the Every function in the rate.NewLimiter func seems to be a different import / dependency which i cannot figure out which it is
            • manavo/go-rate-limiter has a "soft" limit which, obviously, could get me over the limit. Some endpoints I dont really mind if I cant access them for a few seconds, but other endpoint requests should work as much as possible.

            Currently I have an amateur solution. The code below allows to me set a limit per minute and it sleeps in between requests to spread the requests over the minute. This client rate limit is per instance, thus I would have to hardcode divide the 600 requests by the amount of instances.

            ...

            ANSWER

            Answered 2019-Jun-30 at 23:21

            if you want a global rate limiter, you need a place to maintain distributed state, such as zookeeper. Usually, we don't want to pay the overhead. Alternatively, you can set up a forward proxy (https://golang.org/pkg/net/http/httputil/#ReverseProxy), do rate limit in it.

            Source https://stackoverflow.com/questions/56827726

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install golimit

            You can download it from GitHub.

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/myntra/golimit.git

          • CLI

            gh repo clone myntra/golimit

          • sshUrl

            git@github.com:myntra/golimit.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link