GithubHelp home page GithubHelp logo

1pkg / gohalt Goto Github PK

View Code? Open in Web Editor NEW
343.0 10.0 12.0 1.08 MB

Gohalt ๐Ÿ‘ฎโ€โ™€๐Ÿ›‘: Fast; Simple; Powerful; Go Throttler library

License: MIT License

Go 100.00%
go golang queueing metrics monitoring throttle rate-limit

gohalt's People

Contributors

1pkg avatar ryan961 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gohalt's Issues

add integration tests for enqueuers metrics monitors

Currently gohalt has only unit tests. Though overall coverage is great and all throttlers and tools around are covered 100% it still lacks coverage for enqueuers metrics monitors. It's nice to have small docker-compose file with full infrastructure RMQ, Kafka, Prom and small set of integration tests to cover basic happy scenarios for current enqueuers metrics monitors implementations

throttlers integrations split

After rethinking it seems that putting integrations with big list of third party libraries wasn't the good idea. Sure it simplifies integration usage as you need to get a single repo but also it introduces lots of unnecessary dependencies if only throttlers are needed. It is supposed to be bad practice to introduce unnecessary dependencies in places where they could be avoided. This way I believe gohalt needs to be split into two repos: original gohalt will contain all throttlers and surrounding tools and second one that will contain all thirdparty integrations mainly integrations.go file.

throttlers inner state marshal/unmarshal

In order to have durable storage, logging, meta exposure for all throttlers. Gohalt needs to have a way how to marshal and unmarshal inner states for all existing throttlers. This can be implemented as a pair of (MarshalBinary() (data []byte, err error), UnmarshalBinary(data []byte) error) methods or something similar. Note that there might be additional difficulties with composite throttlers.

You're now famous, you may want to provide a worked example

When trying new services, I usually look for an example, read it, and if I want to know more, work through it locally and see if I understand it and/or if stuff is missing.

This is a nice thing to have when a bazillion people are looking at your code or the first time (:-))

I think some of your tests might make a good example/tutorial

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.