Package: sharkradar
SharkRadarSharkradaris a lightweight, yet flexibleservice registry and discoverytool, compatible with any microservice(independent of tech stack), as long as your microservice supportsHTTPfor communication (generally, it surely would, unless you have some custom protocol for communication. In that case,Congratulations:D !)InstallationpipinstallsharkradarUsagesharkradar --helpTechnical DocumentationComplete Technical Documentation available here, on project's wikiOverviewSharkradarisService (RD) registry and discoveryHTTP based serviceCompatible with any microserviceWeighted priority discoveryService which tells you the address ofbestinstance of server which can handle your requestCan register/discover heterogeneous instances (of microservices) and homogeneous instancesSharkradar isnotAPI GatewayNot a router to redirect requestsNot a proxy/reverse-proxyA poller which will check if the services are up. It only knows if services are up, only when service tells itselfTechnical RequirementsOS - Any OS which supports Python :DDependency - Python (>=3 is preferred)Networking - similar to any other microservice/server (like exposing ports, IP address binding, etc). Must be reachable by all the services using sharkradarAny specific module/library/agent for Client/Microservices using Sharkradar -NO(Only a HTTP communication library/ability to make HTTP GET, PUT calls :D)Reachability - Sharkradarmust be reachableby all the clients/microservices/services using sharkradar (network administrators, please take a note :D)Availability - Sharkradar is a standalone application,for now!. So sharkradar could be the single point of inter-microservice communication, and also single point of failure (of inter microservice communication)ArchitectureThe architecture of sharkradar is pretty straight forward, keeping in mind:UsabilityCompatibilityLightweightLow storage footprintLow computational footprintThe fundamental principle behind the architecture is a "publish/ask" mechanismService R(registry)=> "You(microservices/applications/consumers)give me your fitness report. If I receive, I will give you work to do based on your ability, I am not gonna ask you for it :(. And if I don't receive it within time, you will not be considered for work until next report"Service D(discovery)=> "You want to know which of person can do the job in best way and how to reach him, ask me! I will tell you best person's address, ONLY -_-. I am not gonna take you there"Service RegistrationClient (Microservice - who wants to be discoverable through shark radar)Client sends a health report withparamsto shark radar at some decidedfrequencyin every last report sent.If sharkradar doesn't receive the health report, after the threshold time provided by client in previous report, the client is removed from the list of registered services(hence won't be considered for discovery)Auto-deregistration happens, if health report is not sent.No separate API / endpoint for registration. First health report will be considered as regitration.Service DiscoveryAny client (with any tech stack) which understands and able to communicate to HTTP, can ask for a service location (IP addressandPort)The address given is for the best (selected by a weight based priority algorithm) client with the askedservice nameContribution | Issues or Bugs | SuggestionsForcontribution, fork the repository, develop and create Pull request withmasterbranchForIssue and bug reporting, create a Issue on the repository, we or our fellow developer community will definitely look into it. And if you win the race and solve the bug, don't hesitate to take the credit by raising a pull request.Forsuggestions and features, send a mail to the maintainer. Have already developed the feature, even better. Create a pull request for the same. Our maintainers will review the same and merge it :)MaintainersMonik Raj Behera-bmonikraj@gmail.comPreetam Nahak-preetamnahak@gmail.com