18 repositorios
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 es una implementación en Go del protocolo de consenso Raft diseñada para mantener un estado consistente a través de un clúster distribuido de nodos. Proporciona una biblioteca para construir máquinas de estado distribuidas que aseguran la integridad de los datos y la tolerancia a fallos durante las caídas del sistema. El proyecto se distingue por una implementación Raft de múltiples grupos, que particiona los datos a través de grupos de consenso independientes para distribuir cargas de trabajo y aumentar la capacidad de procesamiento general del sistema. También incorpora TLS mutuo para cifrar la comunicación entre nodos y verificar la identidad de los miembros del clúster. El sistema incluye capacidades para máquinas de estado de alto rendimiento con soporte para persistencia tanto en memoria como en disco. Cuenta con optimizaciones de ruta de lectura para asegurar la consistencia sin generar nuevas entradas de registro, una interfaz de almacenamiento conectable para backends de registro personalizados y herramientas administrativas para la recuperación de quórum para restaurar la disponibilidad después de una pérdida permanente de la mayoría de los nodos. La estabilidad operativa se apoya mediante la exportación de métricas de salud del clúster.
Raft consensus algorithm library.
Esta es una biblioteca de caché en memoria segura para hilos (thread-safe) para Go que expulsa automáticamente los elementos menos utilizados recientemente (LRU) cuando se alcanza la capacidad. Proporciona una caché de memoria de tamaño fijo diseñada para mantener una huella de memoria constante eliminando las entradas más antiguas a medida que llegan nuevos datos. El sistema incluye un gestor de expulsión que ejecuta callbacks personalizados cuando se purgan las entradas para facilitar la limpieza de recursos. También admite la expiración basada en tiempo, permitiendo la eliminación automática de elementos después de una duración de tiempo de vida (TTL) especificada. La biblioteca cubre capacidades generales de caché, incluyendo inspección de caché para verificar la existencia de claves, purga completa de caché y estrategias para optimizar las tasas de acierto evitando que nuevas ráfagas de datos desplacen elementos accedidos frecuentemente. Todas las operaciones de lectura y escritura están sincronizadas para permitir el acceso concurrente a través de múltiples rutinas.
LRU cache implementation.
Memberlist is a Go library used for maintaining distributed cluster membership and failure detection via a peer-to-peer gossip protocol. It functions as a cluster state synchronizer, allowing nodes to track active members and propagate metadata without a central coordinator. The library implements a secure gossip mechanism using AES-GCM encryption to protect inter-node communication and membership data. It distinguishes its failure detection through a suspicion-based model and adaptive timeout scaling, which reduces false positives caused by transient network latency. The project provides ca
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.