18 Repos
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 ist eine Go-Implementierung des Raft-Konsensprotokolls, die darauf ausgelegt ist, einen konsistenten Status über einen verteilten Cluster von Knoten hinweg aufrechtzuerhalten. Sie bietet eine Bibliothek zum Aufbau verteilter Zustandsautomaten, die Datenintegrität und Fehlertoleranz bei Systemausfällen gewährleisten. Das Projekt zeichnet sich durch eine Multi-Group-Raft-Implementierung aus, die Daten über unabhängige Konsensgruppen partitioniert, um Arbeitslasten zu verteilen und die gesamte Verarbeitungskapazität des Systems zu erhöhen. Es integriert zudem gegenseitiges TLS (mTLS), um die Kommunikation zwischen Knoten zu verschlüsseln und die Identität von Clustermitgliedern zu verifizieren. Das System umfasst Funktionen für hochperformante Zustandsautomaten mit Unterstützung für Speicher- und Festplattenpersistenz. Es bietet Optimierungen für den Read-Path, um Konsistenz ohne Generierung neuer Log-Einträge zu gewährleisten, ein pluggbares Speicher-Interface für benutzerdefinierte Log-Backends sowie administrative Tools für die Quorum-Wiederherstellung, um die Verfügbarkeit nach einem permanenten Verlust der Knotenmehrheit wiederherzustellen. Die operative Stabilität wird durch den Export von Cluster-Gesundheitsmetriken unterstützt.
Raft consensus algorithm library.
This is a thread-safe in-memory cache library for Go that automatically evicts the least recently used items when capacity is reached. It provides a fixed-size memory cache designed to maintain a constant memory footprint by removing the oldest entries as new data arrives. The system includes an eviction manager that executes custom callbacks when entries are purged to facilitate resource cleanup. It also supports time-based expiration, allowing for the automatic removal of items after a specified time-to-live duration. The library covers general caching capabilities including cache inspecti
LRU cache implementation.
Memberlist ist eine Go-Bibliothek, die zur Aufrechterhaltung der verteilten Clustermitgliedschaft und zur Fehlererkennung über ein Peer-to-Peer-Gossip-Protokoll verwendet wird. Sie fungiert als Cluster-State-Synchronizer, der es Knoten ermöglicht, aktive Mitglieder zu verfolgen und Metadaten ohne zentralen Koordinator zu verbreiten. Die Bibliothek implementiert einen sicheren Gossip-Mechanismus unter Verwendung von AES-GCM-Verschlüsselung, um die Kommunikation zwischen Knoten und Mitgliedschaftsdaten zu schützen. Sie zeichnet sich bei der Fehlererkennung durch ein auf Verdacht basierendes Modell und adaptive Timeout-Skalierung aus, was Fehlalarme durch transiente Netzwerklatenz reduziert. Das Projekt bietet Funktionen für das Broadcasting benutzerdefinierter Daten, die Synchronisierung des Knotenstatus über Push-Pull-Mechanismen und das Management des Netzwerktransports über ein entkoppeltes Interface. Es enthält zudem Tools für das operative Monitoring, wie die Messung der Round-Trip-Zeit und die Ausgabe von Performance-Metriken.
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.