18 repository-uri
Implementations of common algorithms and data structures.
Explore 18 awesome GitHub repositories matching part of an awesome list · Algorithms. Refine with filters or upvote what's useful.
This project is a comprehensive container framework for Go that provides a suite of fundamental data structures and algorithms. It offers a standardized set of tools for managing, sorting, and traversing complex data collections, enabling developers to implement efficient storage and retrieval logic within their applications. The library distinguishes itself through an interface-driven design that allows for interchangeable use of different storage implementations. It supports custom ordering and sorting behavior through external comparison functions, which decouple the data structures from s
Data structures library.
This is a Raft consensus library and distributed consensus engine implemented in Go. It provides the primitives necessary to build fault-tolerant distributed services by implementing a replicated state machine that ensures a group of servers agree on a shared system state through leader election and log replication. The project distinguishes itself through a pluggable architecture for storage backends and snapshot storage, decoupling the consensus logic from physical persistence. It includes specialized mechanisms for leadership transfer, protocol version management to support rolling upgrade
Raft algorithm implementation.
Dragonboat este o implementare în Go a protocolului de consens Raft, concepută pentru a menține o stare consistentă într-un cluster distribuit de noduri. Oferă o bibliotecă pentru construirea de mașini de stare distribuite care asigură integritatea datelor și toleranța la erori în timpul defecțiunilor sistemului. Proiectul se distinge printr-o implementare Raft multi-grup, care partiționează datele în grupuri de consens independente pentru a distribui sarcinile de lucru și a crește capacitatea generală de procesare a sistemului. De asemenea, încorporează mutual TLS pentru a cripta comunicarea între noduri și a verifica identitatea membrilor clusterului. Sistemul include capabilități pentru mașini de stare de înaltă performanță cu suport atât pentru persistența în memorie, cât și pe disc. Dispune de optimizări ale căii de citire (read-path) pentru a asigura consistența fără a genera intrări noi în log, o interfață de stocare pluggable pentru backend-uri de log personalizate și instrumente administrative pentru recuperarea cvorumului pentru a restabili disponibilitatea după pierderea permanentă a majorității nodurilor. Stabilitatea operațională este susținută prin exportul de metrici de sănătate a clusterului.
Raft consensus algorithm library.
Aceasta este o bibliotecă de cache în memorie thread-safe pentru Go, care elimină automat elementele cel puțin recent utilizate (LRU) atunci când capacitatea este atinsă. Oferă un cache de memorie de dimensiune fixă conceput pentru a menține o amprentă de memorie constantă prin eliminarea celor mai vechi intrări pe măsură ce sosesc date noi. Sistemul include un manager de evacuare care execută callback-uri personalizate atunci când intrările sunt eliminate pentru a facilita curățarea resurselor. De asemenea, suportă expirarea bazată pe timp, permițând eliminarea automată a elementelor după o durată de viață specificată (TTL). Biblioteca acoperă capabilități generale de caching, inclusiv inspecția cache-ului pentru verificarea existenței cheilor, curățarea completă a cache-ului și strategii pentru optimizarea ratelor de hit prin prevenirea deplasării datelor frecvent accesate de către noile rafale de date. Toate operațiunile de citire și scriere sunt sincronizate pentru a permite accesul concurent în mai multe rutine.
LRU cache implementation.
Memberlist este o bibliotecă Go utilizată pentru menținerea apartenenței la un cluster distribuit și detectarea defecțiunilor prin intermediul unui protocol gossip peer-to-peer. Funcționează ca un sincronizator al stării clusterului, permițând nodurilor să urmărească membrii activi și să propage metadatele fără un coordonator central. Biblioteca implementează un mecanism gossip securizat folosind criptarea AES-GCM pentru a proteja comunicarea între noduri și datele de apartenență. Se distinge prin detectarea defecțiunilor printr-un model bazat pe suspiciune și scalarea adaptivă a timeout-ului, ceea ce reduce rezultatele fals pozitive cauzate de latența tranzitorie a rețelei. Proiectul oferă capabilități pentru difuzarea datelor personalizate definite de utilizator, sincronizarea stării nodurilor prin mecanisme push-pull și gestionarea transportului de rețea printr-o interfață decuplată. Include, de asemenea, instrumente pentru monitorizarea operațională, cum ar fi măsurarea timpului dus-întors și emiterea de metrici de performanță.
Gossip protocol for cluster membership.
This is a Go library providing a framework for managing repetitive task execution and implementing exponential backoff strategies. It serves as a concurrency tool designed to prevent system overload during failures by retrying operations with increasing delays. The project implements a retry strategy framework that manages attempt limits and timeouts during unstable network or system calls. It specifically provides an implementation of the exponential backoff algorithm to handle failing operations. The library covers reliability patterns for mitigating transient failures and service outages,
Exponential backoff algorithm.
A Go implementation of the 64-bit xxHash algorithm (XXH64)
xxHash algorithm implementation.
:rowboat: Raft implementation in Go
Raft algorithm implementation.