85 Repos
Frameworks and tools for building scalable, fault-tolerant microservices.
Explore 85 awesome GitHub repositories matching part of an awesome list · Distributed Systems. Refine with filters or upvote what's useful.
This project is a curated knowledge repository that aggregates high-quality resources, technical documentation, and expert insights focused on distributed systems engineering. It serves as a community-driven learning resource designed to help developers navigate the complexities of building and maintaining large-scale software applications. The repository distinguishes itself through a hierarchical taxonomy that organizes vast amounts of technical information into a structured, searchable format. By utilizing markdown-based content curation and static indexing, the collection remains version-
Guides and resources for building highly scalable software systems.
etcd is a distributed key-value store and configuration store designed to maintain a consistent set of data across a cluster of nodes. It functions as a reliable registry for storing and synchronizing critical settings and metadata used by distributed applications. The system implements the Raft consensus algorithm to ensure data consistency and leader election across servers. To protect data transfers and verify node identities, it utilizes a network security layer based on mutual TLS and client certificates. Its capabilities cover distributed configuration management, cluster state synchro
Raft consensus protocol implementation.
go-zero is a toolkit for building cloud-native distributed services in Go. It functions as a microservices framework that provides built-in support for RPC, web APIs, and service discovery. The project includes a microservices code generator that produces production-ready server and client boilerplate from API descriptions. This automation is supported by a domain-specific language and pattern libraries designed to ensure compatibility with AI assistants. The framework incorporates a resilience suite for distributed system reliability, utilizing adaptive circuit breakers, rate limiting, and
Web and RPC framework for high-load sites.
This project is a comprehensive microservices development framework designed to build scalable, resilient backend systems. It provides a production-ready runtime that integrates stability patterns directly into the service architecture, ensuring consistent performance and reliability for both web and remote procedure call services even under heavy traffic conditions. The framework centers on an interface-first development model, utilizing a domain-specific language to define service contracts that serve as the single source of truth. This approach powers an extensive code generation ecosystem
Listed in the “Distributed Systems” section of the Awesome Go awesome list.
Kit is a microservices architectural framework and toolkit for Go. It provides a set of standardized primitives and abstractions for implementing service, endpoint, and transport layers in a decoupled manner. The framework focuses on system instrumentation through integrated distributed request tracing and a service instrumentation toolkit that utilizes counters and gauges to export performance data to external monitoring backends. It includes a structured logging library that records system events as key-value pairs to ensure compatibility with log aggregation tools. The project covers a br
Toolkit for building microservices with service discovery and load balancing.
Kratos is a toolkit for building cloud-native microservices in Go. It provides a comprehensive suite of framework primitives, including a dedicated toolset for API-first development using Protobuf to generate server and client code for gRPC and HTTP. The project is distinguished by its pluggable service infrastructure, which allows for the swapping of configuration stores, service registries, and data encoding formats. It utilizes a composable middleware pipeline to inject cross-cutting concerns such as authentication, request validation, and circuit breaking into the service flow. The frame
Modular microservices framework.
grpc-go is a Go language implementation of the gRPC framework, providing a remote procedure call library for high-performance service communication. It uses the HTTP/2 protocol to execute functions on remote servers as if they were local methods and utilizes protobuf service bindings to generate type-safe client and server code. The project features a bidirectional streaming transport that supports asynchronous, full-duplex message streams between clients and servers. This networking layer allows for various communication patterns, including client-to-server and server-to-client streaming, to
Official Go implementation of the gRPC framework.
Go-micro is a distributed systems development toolkit designed for building, connecting, and managing modular microservices. It provides a comprehensive framework for service discovery, remote procedure call abstraction, and event-driven messaging, allowing developers to create decoupled architectures that communicate asynchronously through shared message brokers. The project distinguishes itself by integrating autonomous agent orchestration and language model tool binding directly into the service lifecycle. By exposing internal service endpoints as standardized tools, it enables AI agents t
Framework for distributed system development.
NATS Server is a high-performance, lightweight messaging system designed for cloud-native applications, edge computing, and distributed microservices. It functions as a distributed publish-subscribe broker that routes messages using hierarchical, dot-separated subject strings, enabling decoupled communication between services without requiring centralized broker lookups. The system supports core messaging patterns including asynchronous publish-subscribe, request-reply, and load-balanced queue processing. The platform distinguishes itself through a decentralized architecture that eliminates t
Communications system for digital services.
A curated list to learn about distributed systems
Collection of papers and resources on distributed systems architecture.
libzmq is a C++ based asynchronous messaging engine and networking core designed for routing non-blocking messages between distributed nodes. It functions as a distributed message queue that implements the ZMTP wire-format framing protocol to standardize how data moves across different network transport layers. The library provides a multi-transport abstraction that allows a single interface to route data across TCP, IPC, and in-process memory. It incorporates a cryptographic layer to encrypt and authenticate transmissions between nodes and employs topology-based messaging patterns, such as p
Listed in the “Distributed Systems” section of the Awesome Go awesome list.
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
Implementation of the Raft consensus protocol.
rpcx is a high-performance remote procedure call framework for building scalable microservices in Go. It functions as a binary protocol RPC system and a service mesh, providing the necessary infrastructure for low-latency inter-service communication and distributed cloud environments. The project features a cross-language service gateway that provides an HTTP entry point, allowing clients written in any programming language to invoke Go remote services via protocol translation. It also includes a specialized RPC traffic analyzer for capturing and analyzing binary packets to debug network comm
Distributed RPC framework with pluggable components.
Kitex is a high-performance remote procedure call framework for building distributed microservices in Go. It provides a communication system compatible with gRPC and Protobuf standards and includes a suite of tools for microservices governance. The framework features proxyless service mesh integration, which allows it to manage network traffic and governance directly without adding sidecar proxy latency. It optimizes data throughput through a high-performance communication library that minimizes memory copies. The system covers a broad surface of distributed capabilities, including service d
High-performance RPC framework.
Lura is an API gateway and traffic router that directs network requests to backend services using a configurable pipeline of processing steps. It functions as a backend load balancer and a request middleware engine designed to validate, modify, and transform incoming requests and responses. The system specializes in API response aggregation, allowing it to execute concurrent requests to multiple backend services and merge the results into a single unified output. This includes the ability to perform dynamic response mapping by renaming fields and filtering data to optimize the final client pa
API gateway framework.
Dieses Projekt ist eine voll ausgestattete BitTorrent-Client-Bibliothek und Protokollimplementierung. Sie bietet die Kernkomponenten, die für Peer-to-Peer-Dateifreigabe erforderlich sind, einschließlich eines Netzwerk-Stacks, der die BitTorrent-Spezifikation, Tracker-Kommunikation und Schwarm-Management unterstützt. Ein Hauptunterscheidungsmerkmal ist die Einbindung eines virtuellen Dateisystems, das es ermöglicht, Torrents als schreibgeschützte Laufwerke einzubinden. Dieses System ermöglicht On-Demand-Content-Streaming, bei dem spezifische Datenstücke nur dann aus dem Netzwerk abgerufen werden, wenn eine Leseanfrage erfolgt, anstatt das gesamte Archiv vorab herunterladen zu müssen. Die Bibliothek deckt ein breites Spektrum an Peer-to-Peer-Funktionen ab, einschließlich dezentraler Peer-Entdeckung via Distributed Hash Tables, NAT-Traversal durch Hole-Punching und UPnP sowie Datenintegritätssicherung durch Hash-basierte Stückverifizierung. Sie handhabt zudem Bencode-Datenverarbeitung, verschlüsselte Handshakes und Verkehrsmanagement zur Steuerung von Bandbreite und Peer-Verbindungen. Die Implementierung umfasst Unterstützung für BitTorrent v2-Kompatibilität und bietet strukturiertes Logging sowie interne Metriken zur Überwachung der Verbindungsleistung.
Full-featured BitTorrent client implementation.
Tendermint is a Byzantine fault tolerant consensus engine that replicates a deterministic state machine across a cluster of machines while tolerating up to one-third malicious validators. It functions as a blockchain application platform, connecting application logic to the consensus engine through a socket-based protocol that enables development in any programming language. The system commits blocks when more than two-thirds of weighted validators sign and broadcast their votes, with proof included in the next block. It provides cryptographic state verification, allowing efficient authentica
High-performance middleware for Byzantine Fault Tolerant state machines.
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.
High-performance library for distributed consensus.
Evans ist ein gRPC-Client und API-Explorer, der für das Testen, Debuggen und Automatisieren von Remote Procedure Calls entwickelt wurde. Er fungiert als interaktiver Client und zustandsloses Kommandozeilen-Utility für die Ausführung von gRPC-Methoden und die Inspektion von Remote-Server-API-Oberflächen. Das Tool bietet spezialisierte Unterstützung für das gRPC-Web-Protokoll, um die Kommunikation mit Web-basierten Implementierungen zu erleichtern. Es ermöglicht die Entdeckung von Diensten und Nachrichtenstrukturen durch Server-Reflection oder Definitionsdateien und unterstützt das Management von Unary-, Client-Side-, Server-Side- und bidirektionalen Streaming-Kommunikationen. Das Projekt deckt das Request-Management durch benutzerdefinierte Metadaten-Header und die Handhabung komplexer Feldtypen wie Arrays, Enums und Base64-kodierte Bytes ab. Es nutzt JSON-basierte Repräsentationen für Ein- und Ausgaben, um maschinenlesbare Ergebnisse und Datei-basierte Request-Automatisierung zu ermöglichen.
Universal gRPC client.
Emitter ist eine verteilte Pub-Sub-Plattform und ein Message-Broker, der Echtzeit-Datenrouting zwischen Publishern und Subscribern in einem verteilten Cluster ermöglicht. Er fungiert als MQTT-Message-Broker für stromsparende Geräte und als WebSocket-Kommunikationsserver für webbasierte Clients, während er gleichzeitig als sicherer Channel-Orchestrator verschlüsselte Datenströme verwaltet. Das System zeichnet sich durch eine Kombination aus verteiltem Broker-Clustering für hohe Verfügbarkeit und einem persistenzbasierten Message-Playback-System aus. Dadurch kann die Plattform historische Nachrichten speichern und an Subscriber ausliefern, die während der ursprünglichen Übertragung offline waren. Der Zugriff wird über zeitlich begrenzte Berechtigungsschlüssel gesteuert, die granulare Lese- und Schreibkontrollen für spezifische Channel-Pfade erzwingen. Die Plattform deckt ein breites Spektrum an Messaging-Funktionen ab, einschließlich asynchroner Zustellung, Offline-Client-Queuing sowie der Übertragung von Binär- und Textformaten. Sie unterstützt Channel-basiertes Routing mit Nachrichtenfilterung zur Entkopplung von Systemkomponenten und bietet operative Observability durch Verbindungs-Metadaten und Performance-Monitoring. Das System ist über Docker-Container bereitstellbar und kann mittels Umgebungsvariablen und externen Konfigurationsdateien konfiguriert werden.
Distributed, low-latency publish-subscribe platform.