# distributed system

Published articles for distributed system.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## How WebRTC Scales: Signaling, NAT Traversal, and the Mesh/SFU/MCU Tradeoff

DevFeed: [How WebRTC Scales: Signaling, NAT Traversal, and the Mesh/SFU/MCU Tradeoff](<https://devfeed.tech/articles/how-webrtc-scales-signaling-nat-traversal-and-the-mesh-sfu-mcu-tradeoff-26901.md>)

Original publisher: [Read original article](<https://www.freecodecamp.org/news/how-webrtc-scales-signaling-nat-traversal-and-the-mesh-sfu-mcu-tradeoff/>)

Author: Karan Pratap Singh

Published: 2026-09-15T15:57:39Z

Content type: article

Language: en

Sources: [freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More](<https://devfeed.tech/sources/freecodecamp-programming-tutorials-python-javascript-git-more.md>)

Topics: [WebRTC](<https://devfeed.tech/topics/webrtc.md>), [real-time](<https://devfeed.tech/topics/real-time.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [API](<https://devfeed.tech/topics/api.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [WebSocket](<https://devfeed.tech/topics/websocket.md>), [Firewall](<https://devfeed.tech/topics/firewall.md>), [Network](<https://devfeed.tech/topics/network.md>), [servers](<https://devfeed.tech/topics/servers.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [decoding](<https://devfeed.tech/tags/decoding.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [firewall](<https://devfeed.tech/tags/firewall.md>), [http](<https://devfeed.tech/tags/http.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [network](<https://devfeed.tech/tags/network.md>), [networking](<https://devfeed.tech/tags/networking.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [server](<https://devfeed.tech/tags/server.md>), [webrtc](<https://devfeed.tech/tags/webrtc.md>)

### AI overview

This article explains how WebRTC enables browsers to exchange audio, video, and data directly. It covers the three WebRTC APIs, signaling through WebSockets or HTTP, NAT traversal using ICE, STUN, and TURN, and the mesh, SFU, and MCU approaches to scaling media delivery.

### Source excerpt

Web Real-Time Communication (or WebRTC) is the open standard browsers use to send audio, video, and data straight to each other. There's no plugin or native app, nothing beyond an API that every brows

## Durable, flexible multi-agent systems

DevFeed: [Durable, flexible multi-agent systems](<https://devfeed.tech/articles/durable-flexible-multi-agent-systems-35820.md>)

Original publisher: [Read original article](<https://temporal.io/blog/durable-flexible-multi-agent-systems>)

Author: Melanie Warrick

Published: 2026-08-06T00:00:00Z

Content type: tutorial

Language: en

Sources: [Temporal Blog](<https://devfeed.tech/sources/temporal-blog.md>)

Topics: [Multi Agent Systems](<https://devfeed.tech/topics/multi-agent-systems.md>), [Orchestration](<https://devfeed.tech/topics/orchestration.md>), [systems](<https://devfeed.tech/topics/systems.md>), [Langgraph](<https://devfeed.tech/topics/langgraph.md>), [Persistence](<https://devfeed.tech/topics/persistence.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [agents](<https://devfeed.tech/tags/agents.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [google-adk](<https://devfeed.tech/tags/google-adk.md>), [langgraph](<https://devfeed.tech/tags/langgraph.md>), [multi-agent](<https://devfeed.tech/tags/multi-agent.md>), [orchestration](<https://devfeed.tech/tags/orchestration.md>), [persistence](<https://devfeed.tech/tags/persistence.md>), [temporal-voices](<https://devfeed.tech/tags/temporal-voices.md>)

### AI overview

This article describes a multi-agent delivery fleet built with Google ADK and LangGraph, using Temporal for orchestration, persistence, retries, and resumability. It explains how to keep human oversight durable when agents or workers disconnect or when workflows wait for human responses.

### Source excerpt

Running a multi-agent delivery fleet on Google ADK and LangGraph, and what it takes to make the human in the loop durable.

## Spotlight on SIG Storage

DevFeed: [Spotlight on SIG Storage](<https://devfeed.tech/articles/spotlight-on-sig-storage-17598.md>)

Original publisher: [Read original article](<https://www.kubernetes.dev/blog/2026/06/15/sig-storage-spotlight-2026/>)

Author: The Kubernetes Authors

Published: 2026-06-15T00:00:00Z

Content type: article

Language: en

Sources: [Kubernetes Contributors Blog](<https://devfeed.tech/sources/kubernetes-contributors-blog.md>)

Topics: [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [systems](<https://devfeed.tech/topics/systems.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [backups](<https://devfeed.tech/tags/backups.md>), [containers](<https://devfeed.tech/tags/containers.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [storage](<https://devfeed.tech/tags/storage.md>), [volumes](<https://devfeed.tech/tags/volumes.md>)

### AI overview

An interview with Xing Yang, co-chair of Kubernetes SIG Storage, covering the group's role in persistent data and volume management, Kubernetes CSI maintenance, recent storage features, and data protection work such as Volume Group Snapshot and Changed Block Tracking.

### Source excerpt

In our ongoing SIG Spotlight series, we shine a light on the groups that keep the Kubernetes project moving forward. This time, we catch up with SIG Storage , the group responsible for persistent data, volume management, and the interfaces that connect Kubernetes workloads to the storage systems beneath them. We spoke with Xing Yang , Co-Chair of SIG Storage and Software Engineer at VMware by Broadcom, about the SIG's history, the features shipping in recent Kubernetes releases, and where storage in Kubernetes is headed as AI workloads become the norm. Introductions Could you introduce yourself and share your role(s) within SIG Storage? My name is Xing Yang , a software engineer at VMware by Broadcom. I'm a co-chair in SIG Storage, alongside another co-chair Saad Ali from Google. There are also two Tech Leads in SIG Storage: Michelle Au from Google and Jan Šafránek from Red Hat. What first drew you to storage in Kubernetes, and how did you start contributing? I have always been working in the storage domain, so SIG Storage was a natural place for me to get started when I began to learn Kubernetes. I started attending SIG Storage meetings , trying to figure out what I could do to help. This was before the first Container Storage Interface (CSI) release -- lots of things were still evolving. It was a very exciting time. What subprojects or areas do you actively maintain or review today? I'm a maintainer in Kubernetes CSI. There are multiple CSI sidecars -- such as csi-provisioner, csi-attacher, csi-resizer, and csi-snapshotter -- that we need to release following every Kubernetes release. I'm also a co-chair for a Data Protection Working Group co-sponsored by SIG Storage and SIG Apps . Several features have come out of that WG aimed at filling gaps in data protection support within Kubernetes. One is Volume Group Snapshot , which provides crash-consistent group snapshots for multiple volumes used by an application. Changed Block Tracking (CBT) is another critical feature

## The Distributed Systems Challenges of Deploying Agentic AI in Production

DevFeed: [The Distributed Systems Challenges of Deploying Agentic AI in Production](<https://devfeed.tech/articles/what-breaks-when-agentic-ai-reaches-production-23738.md>)

Original publisher: [Read original article](<https://cockroachlabs.com/blog/agentic-ai-production-infrastructure>)

Author: Quentin Packard

Published: 2026-06-04T00:00:00Z

Content type: opinion

Language: en

Sources: [Cockroach Labs](<https://devfeed.tech/sources/cockroach-labs.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [AI Agent](<https://devfeed.tech/topics/ai-agent.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [consistency](<https://devfeed.tech/topics/consistency.md>), [incident](<https://devfeed.tech/topics/incident.md>), [observability](<https://devfeed.tech/topics/observability.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [agentic-ai](<https://devfeed.tech/tags/agentic-ai.md>), [ai](<https://devfeed.tech/tags/ai.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [consistency](<https://devfeed.tech/tags/consistency.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [incident](<https://devfeed.tech/tags/incident.md>), [observability](<https://devfeed.tech/tags/observability.md>), [systems](<https://devfeed.tech/tags/systems.md>)

### AI overview

This article argues that deploying agentic AI in production requires solving distributed-systems problems around memory state, concurrency, identity, blast radius, observability, and economics. It focuses on state management for agents serving concurrent users, including failures, consistency, durability, and recovery.

### Source excerpt

Most enterprise AI teams have built an agent that was impressive; far fewer have shipped one without a production incident that made someone question the whole program.

## Dropbox's Former Most Senior Eng: Building Great Systems and Advice for the AI Era | James Cowling

DevFeed: [Dropbox's Former Most Senior Eng: Building Great Systems and Advice for the AI Era | James Cowling](<https://devfeed.tech/articles/dropbox-s-former-most-senior-eng-building-great-systems-and-advice-for-the-ai-era-james-cowling-18091.md>)

Original publisher: [Read original article](<https://www.developing.dev/p/dropboxs-former-most-senior-eng-building>)

Author: Ryan Peterman

Published: 2026-05-25T10:00:57Z

Content type: opinion

Language: en

Sources: [The Developing Dev](<https://devfeed.tech/sources/the-developing-dev.md>)

Topics: [systems](<https://devfeed.tech/topics/systems.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Transactions](<https://devfeed.tech/topics/transactions.md>), [Computer science](<https://devfeed.tech/topics/computer-science.md>), [Replication](<https://devfeed.tech/topics/replication.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [consensus](<https://devfeed.tech/tags/consensus.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [distributed-transaction](<https://devfeed.tech/tags/distributed-transaction.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [replication](<https://devfeed.tech/tags/replication.md>), [systems](<https://devfeed.tech/tags/systems.md>), [technical](<https://devfeed.tech/tags/technical.md>), [transactions](<https://devfeed.tech/tags/transactions.md>)

### AI overview

A podcast interview with James Cowling, CTO of Convex and former senior engineer at Dropbox, about designing abstractions and large-scale transactional systems. Cowling discusses Granola, distributed transaction coordination, concurrency, Byzantine fault tolerance, and career advice in the context of AI.

### Source excerpt

Transcript & Audio

## Multi-Region Database Architecture: Three Patents on SQL Abstractions, Data Placement, and Locality-Aware Query Planning

DevFeed: [Multi-Region Database Architecture: Three Patents on SQL Abstractions, Data Placement, and Locality-Aware Query Planning](<https://devfeed.tech/articles/multi-region-database-architecture-three-patents-on-sql-abstractions-data-placement-and-locality-aware-query-planning-23797.md>)

Original publisher: [Read original article](<https://cockroachlabs.com/blog/multi-region-database-architecture-sql-placement-locality>)

Author: Rebecca Taft

Published: 2026-04-09T00:00:00Z

Content type: article

Language: en

Sources: [Cockroach Labs](<https://devfeed.tech/sources/cockroach-labs.md>)

Topics: [Databases](<https://devfeed.tech/topics/databases.md>), [CockroachDB](<https://devfeed.tech/topics/cockroachdb.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Cockroach Labs](<https://devfeed.tech/topics/cockroach-labs.md>), [Resilience](<https://devfeed.tech/topics/resilience.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [Availability](<https://devfeed.tech/topics/availability.md>)

Tags: [availability](<https://devfeed.tech/tags/availability.md>), [cockroach-labs](<https://devfeed.tech/tags/cockroach-labs.md>), [cockroachdb](<https://devfeed.tech/tags/cockroachdb.md>), [database](<https://devfeed.tech/tags/database.md>), [databases](<https://devfeed.tech/tags/databases.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [latency](<https://devfeed.tech/tags/latency.md>), [resilience](<https://devfeed.tech/tags/resilience.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

This article explains three Cockroach Labs patents covering SQL abstractions for multi-region database architecture, replica placement and data domiciling, and locality-aware query planning. It describes how these mechanisms address resilience, availability, compliance, data residency, and latency across regions.

### Source excerpt

Multi-region deployments are often motivated by resilience: If a region goes down, your system should keep serving traffic. But resilience is only part of the story.

## AI Slop: A Slack API Rate Limiting Disaster

DevFeed: [AI Slop: A Slack API Rate Limiting Disaster](<https://devfeed.tech/articles/ai-slop-a-slack-api-rate-limiting-disaster-20527.md>)

Original publisher: [Read original article](<https://code.dblock.org/2026/03/12/ai-slop-a-slack-api-rate-limiting-disaster.html>)

Author: Daniel Doubrovkine (dblock@dblock.org)

Published: 2026-03-12T00:00:00Z

Content type: article

Language: en

Sources: [Daniel Doubrovkine](<https://devfeed.tech/sources/daniel-doubrovkine.md>)

Topics: [Slack](<https://devfeed.tech/topics/slack.md>), [API](<https://devfeed.tech/topics/api.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [api](<https://devfeed.tech/tags/api.md>), [async](<https://devfeed.tech/tags/async.md>), [code](<https://devfeed.tech/tags/code.md>), [concurrent](<https://devfeed.tech/tags/concurrent.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [rate-limiting](<https://devfeed.tech/tags/rate-limiting.md>), [retry](<https://devfeed.tech/tags/retry.md>), [script](<https://devfeed.tech/tags/script.md>), [slack](<https://devfeed.tech/tags/slack.md>)

### AI overview

The article examines an AI-generated cleanup job for closing old Slack group DM conversations. Because Slack's conversations.close endpoint has a global rate limit of one request per second, the implementation could exhaust the limit and disrupt other API calls. The author describes mitigating the issue with scheduled execution, an opt-in setting, a slow-drain script, and limiting the number of DMs closed concurrently.

### Source excerpt

Yesterday I described AI-generated code as "plausible-looking, locally coherent, globally wrong." Here's a concrete example from my own codebase. I needed a cleanup job to close old Slack group DM conversations in my slack-sup2 app. The AI-generated solution looked perfectly reasonable: def close_old_sups! return 0 unless sup_close old_sups = sups.where(conditions) old_sups.each(&:close!) old_sups.count end def close! return unless conversation_id return if closed_at logger.info "Closing DM channel #{conversation_id}..." slack_client.conversations_close(channel: conversation_id) update_attributes!(closed_at: Time.now.utc) end This code looks pretty great and completely breaks the app. Slack's API has a global rate limit of 1 request per second for the conversations.close endpoint. So, when this job runs against a workspace with hundreds of old conversations, it immediately hits the rate limit. Worse, because rate limits are global across all endpoints, it takes down the entire application. Every other API call -- posting messages, fetching user info, everything -- starts failing. I asked AI to address this. It made the fix catastrophically worse. def close! # ... existing code ... begin slack_client.conversations_close(channel: conversation_id) rescue Slack::Web::Api::Errors::TooManyRequests => e sleep_time = e.retry_after || 60 sleep(sleep_time) retry end # ... rest of method ... end In socketry/async, sleep() blocks the entire fiber and prevents other concurrent operations from executing. You should use Async::Task.sleep() instead, but that still doesn't solve the fundamental architectural problem of making hundreds of sequential API calls. What made this particularly insidious is that the assistant wrote some pretty professional-looking code and seemingly handled obvious edge cases. Yet, it failed to consider the distributed system constraints or global invariants. The rate limiting problem wasn't visible in the local scope of the method - it was a system-wide conc

## Getting from tested to battle-tested

DevFeed: [Getting from tested to battle-tested](<https://devfeed.tech/articles/getting-from-tested-to-battle-tested-20169.md>)

Original publisher: [Read original article](<https://blog.janestreet.com/getting-from-tested-to-battle-tested/>)

Author: Doug Patti

Published: 2025-12-03T00:00:00Z

Content type: article

Language: en

Sources: [Jane Street](<https://devfeed.tech/sources/jane-street.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Software](<https://devfeed.tech/topics/software.md>), [Availability](<https://devfeed.tech/topics/availability.md>), [incident](<https://devfeed.tech/topics/incident.md>), [aria](<https://devfeed.tech/topics/aria.md>), [systems](<https://devfeed.tech/topics/systems.md>), [Network](<https://devfeed.tech/topics/network.md>)

Tags: [automated](<https://devfeed.tech/tags/automated.md>), [availability](<https://devfeed.tech/tags/availability.md>), [development](<https://devfeed.tech/tags/development.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [high-availability](<https://devfeed.tech/tags/high-availability.md>), [incident](<https://devfeed.tech/tags/incident.md>), [latency](<https://devfeed.tech/tags/latency.md>), [low-latency](<https://devfeed.tech/tags/low-latency.md>), [software](<https://devfeed.tech/tags/software.md>), [systems](<https://devfeed.tech/tags/systems.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

The article explains how Jane Street works to make testing more effective for reliable, high-availability software. It focuses on Aria, an internal distributed low-latency message bus, and introduces Antithesis as an end-to-end automated testing platform used to uncover critical scenarios that conventional tests may miss.

### Source excerpt

Testing is an essential part of building reliable software. It's a form of documentation, a reminder of mistakes of the past, and a boost of confidence when you want to refactor. But mostly, testing is a way of showing that your code is correct and resilient. Because it's so important, we've invested a lot of effort at Jane Street to develop techniques that make tests clearer, more effective, and more pleasant to write.

## Corrosion

DevFeed: [Corrosion](<https://devfeed.tech/articles/corrosion-1692.md>)

Original publisher: [Read original article](<https://fly.io/blog/corrosion/>)

Published: 2025-10-22T00:00:00Z

Content type: article

Language: en

Sources: [The Fly Blog](<https://devfeed.tech/sources/the-fly-blog.md>)

Topics: [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Deadlock](<https://devfeed.tech/topics/deadlock.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Network](<https://devfeed.tech/topics/network.md>), [Orchestration](<https://devfeed.tech/topics/orchestration.md>), [fly](<https://devfeed.tech/topics/fly.md>), [fly.io](<https://devfeed.tech/topics/fly-io.md>)

Tags: [cdn](<https://devfeed.tech/tags/cdn.md>), [close-to-users](<https://devfeed.tech/tags/close-to-users.md>), [deadlock](<https://devfeed.tech/tags/deadlock.md>), [deploy-app-servers](<https://devfeed.tech/tags/deploy-app-servers.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [docker](<https://devfeed.tech/tags/docker.md>), [docker-containers](<https://devfeed.tech/tags/docker-containers.md>), [elixir](<https://devfeed.tech/tags/elixir.md>), [fly](<https://devfeed.tech/tags/fly.md>), [fly-io](<https://devfeed.tech/tags/fly-io.md>), [heroku-alternative](<https://devfeed.tech/tags/heroku-alternative.md>), [heroku-competitor](<https://devfeed.tech/tags/heroku-competitor.md>), [hosting](<https://devfeed.tech/tags/hosting.md>), [i](<https://devfeed.tech/tags/i.md>), [networking](<https://devfeed.tech/tags/networking.md>), [outage](<https://devfeed.tech/tags/outage.md>), [pipelines](<https://devfeed.tech/tags/pipelines.md>), [postgresql-clusters](<https://devfeed.tech/tags/postgresql-clusters.md>), [routing](<https://devfeed.tech/tags/routing.md>), [rust](<https://devfeed.tech/tags/rust.md>), [servers](<https://devfeed.tech/tags/servers.md>), [synchronization](<https://devfeed.tech/tags/synchronization.md>)

### AI overview

This article introduces Corrosion, Fly.io's open-source distributed state synchronization and service discovery system. It explains how Fly.io propagates workload and routing state across globally distributed servers and edge proxies, and recounts a severe outage caused by a Rust concurrency bug that triggered a contagious deadlock. The article also describes Fly.io's decentralized orchestration model, in which individual servers are authoritative for their workloads instead of relying on a centralized database.

### Source excerpt

Fly.io transmogrifies Docker containers into Fly Machines: micro-VMs running on our own hardware all over the world. The hardest part of running this platform isn't managing the servers, and it isn't operating the network; it's gluing those two things together. Several times a second, as customer CI/CD pipelines tear up or bring down Fly Machines, our state synchronization system blasts updates across our internal mesh, so that edge proxies from Tokyo to Amsterdam can keep the accurate routing table that allows them to route requests for applications to the nearest customer instances. On September 1, 2024, at 3:30PM EST, a new Fly Machine came up with a new "virtual service" configuration option a developer had just shipped. Within a few seconds every proxy in our fleet had locked up hard. It was the worst outage we've experienced: a period during which no end-user requests could reach our customer apps at all. Distributed systems are blast amplifiers. By propagating data across a network, they also propagate bugs in the systems that depend on that data. In the case of Corrosion, our state distribution system, those bugs propagate quickly. The proxy code that handled that Corrosion update had succumbed to a notorious Rust concurrency footgun: an if let expression over an RWLock assumed (reasonably, but incorrectly) in its else branch that the lock had been released. Instant and virulently contagious deadlock. A lesson we've learned the hard way: never trust a distributed system without an interesting failure story. If a distributed system hasn't ruined a weekend or kept you up overnight, you don't understand it yet. Which is why that's how we're introducing Corrosion, an unconventional service discovery system we built for our platform and open sourced. Our Face-Seeking Rake State synchronization is the hardest problem in running a platform like ours. So why build a risky new distributed system for it? Because no matter what we try, that rake is waiting for our foot

## The Making of a Scalable URL Shortener

DevFeed: [The Making of a Scalable URL Shortener](<https://devfeed.tech/articles/the-making-of-a-scalable-url-shortener-38369.md>)

Original publisher: [Read original article](<https://cyrilmottier.com/posts/2025/the-making-of-a-scalable-url-shortener/>)

Author: Cyril Mottier

Published: 2025-02-18T10:57:54Z

Content type: article

Language: en

Sources: [Cyril Mottier Blog](<https://devfeed.tech/sources/cyril-mottier-blog.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>), [DynamoDB](<https://devfeed.tech/topics/dynamodb.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [Requirements](<https://devfeed.tech/topics/requirements.md>), [Database](<https://devfeed.tech/topics/database.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [aws](<https://devfeed.tech/tags/aws.md>), [build](<https://devfeed.tech/tags/build.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [dynamodb](<https://devfeed.tech/tags/dynamodb.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [go](<https://devfeed.tech/tags/go.md>), [redirection](<https://devfeed.tech/tags/redirection.md>), [requirements](<https://devfeed.tech/tags/requirements.md>), [retry](<https://devfeed.tech/tags/retry.md>), [scale](<https://devfeed.tech/tags/scale.md>)

### AI overview

The article describes the design of a custom URL shortener built with AWS Lambda, AWS DynamoDB, and Go. It outlines requirements such as fast redirection, short URLs, batch creation, and optional expiration, then examines slug-generation strategies including randomized slugs, incremental counters, and permutation of the slug space.

### Source excerpt

This article was initially published as a thread of posts on X. For the sake of readability and long-term availability, it is now available here as a single-page article. Post 1 A few months ago, I built a custom URL shortener. Quick refresher: a URL shortener does two things: Creates short URLs that map to long URLs Redirects short URL requests to those long URLs. Designing this was a fantastic engineering challenge. Here's a look at my design process!

## Building Reliable Messaging Patterns in AWS with SQS and SNS

DevFeed: [Building Reliable Messaging Patterns in AWS with SQS and SNS](<https://devfeed.tech/articles/building-reliable-messaging-patterns-in-aws-with-sqs-and-sns-18004.md>)

Original publisher: [Read original article](<https://blog.guilleojeda.com/building-reliable-messaging-patterns-in-aws-with-sqs-and-sns>)

Author: Guillermo Ojeda

Published: 2024-12-20T15:20:38Z

Content type: tutorial

Language: en

Sources: [Guille Ojeda](<https://devfeed.tech/sources/guille-ojeda.md>)

Topics: [Amazon Simple Queue Service (SQS)](<https://devfeed.tech/topics/amazon-simple-queue-service-sqs.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>), [Messaging](<https://devfeed.tech/topics/messaging.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [aws](<https://devfeed.tech/tags/aws.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [error-handling](<https://devfeed.tech/tags/error-handling.md>), [fifo](<https://devfeed.tech/tags/fifo.md>), [messaging](<https://devfeed.tech/tags/messaging.md>), [scale](<https://devfeed.tech/tags/scale.md>), [sns](<https://devfeed.tech/tags/sns.md>), [sqs](<https://devfeed.tech/tags/sqs.md>), [technical](<https://devfeed.tech/tags/technical.md>)

### AI overview

This tutorial explains how to build reliable distributed messaging systems with AWS SQS and SNS. It covers queue configuration, error handling, scaling patterns, message retention, long polling, visibility timeouts, and the differences between Standard and FIFO queues, using Node.js examples.

### Source excerpt

Building distributed systems requires putting a lot of attention on communication between components. These components often need to exchange information asynchronously, and that's where message queues and pub/sub systems are the go-to solution. AWS ...

## Git Version Control Tutorial: A Beginner's Guide to Git Version Control

DevFeed: [Git Version Control Tutorial: A Beginner's Guide to Git Version Control](<https://devfeed.tech/articles/git-version-control-tutorial-a-beginner-s-guide-to-git-version-control-28417.md>)

Original publisher: [Read original article](<https://banes.dev/git-version-control-tutorial-a-beginners-guide-to-git-version-control/>)

Author: admin

Published: 2024-05-03T07:28:35Z

Content type: tutorial

Language: en

Sources: [Posts on Chris Banes](<https://devfeed.tech/sources/posts-on-chris-banes.md>)

Topics: [Git](<https://devfeed.tech/topics/git.md>), [version-control](<https://devfeed.tech/topics/version-control.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [coding](<https://devfeed.tech/topics/coding.md>), [Development](<https://devfeed.tech/topics/development.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [beginner](<https://devfeed.tech/tags/beginner.md>), [code](<https://devfeed.tech/tags/code.md>), [coding](<https://devfeed.tech/tags/coding.md>), [collaboration](<https://devfeed.tech/tags/collaboration.md>), [commands](<https://devfeed.tech/tags/commands.md>), [commit](<https://devfeed.tech/tags/commit.md>), [core](<https://devfeed.tech/tags/core.md>), [developers](<https://devfeed.tech/tags/developers.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [efficiency](<https://devfeed.tech/tags/efficiency.md>), [files](<https://devfeed.tech/tags/files.md>), [git](<https://devfeed.tech/tags/git.md>), [guide](<https://devfeed.tech/tags/guide.md>), [machine](<https://devfeed.tech/tags/machine.md>), [merge](<https://devfeed.tech/tags/merge.md>), [projects](<https://devfeed.tech/tags/projects.md>), [repository](<https://devfeed.tech/tags/repository.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [version-control](<https://devfeed.tech/tags/version-control.md>)

### AI overview

A beginner-focused tutorial explaining Git as a distributed version control system for tracking changes, managing repositories, creating commits and branches, and collaborating with other developers.

### Source excerpt

Have you ever worked on a project and accidentally overwritten your progress? Maybe you spent hours coding a new feature, then realized you needed to go back to a previous version. This is where git version control can help! Git is a lifesaver for developers, allowing you to track changes, collaborate effectively, and ensure you [...]

## Measuring uptime for Neon's multi-tenant architecture

DevFeed: [Measuring uptime for Neon's multi-tenant architecture](<https://devfeed.tech/articles/measuring-uptime-for-neon-s-multi-tenant-architecture-5593.md>)

Original publisher: [Read original article](<https://neon.com/blog/multi-tenant-uptime>)

Author: Stas Kelvich

Published: 2023-12-08T21:49:03Z

Content type: article

Language: en

Sources: [Blog -- Neon Docs](<https://devfeed.tech/sources/blog-neon-docs.md>)

Topics: [Multitenancy](<https://devfeed.tech/topics/multitenancy.md>), [incident](<https://devfeed.tech/topics/incident.md>), [Monitoring](<https://devfeed.tech/topics/monitoring.md>), [Incident response](<https://devfeed.tech/topics/incident-response.md>), [systems](<https://devfeed.tech/topics/systems.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [cloud-native](<https://devfeed.tech/tags/cloud-native.md>), [community](<https://devfeed.tech/tags/community.md>), [databases](<https://devfeed.tech/tags/databases.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [incident](<https://devfeed.tech/tags/incident.md>), [incident-response](<https://devfeed.tech/tags/incident-response.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [monitoring-alerting](<https://devfeed.tech/tags/monitoring-alerting.md>), [platform](<https://devfeed.tech/tags/platform.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [storage](<https://devfeed.tech/tags/storage.md>), [uptime](<https://devfeed.tech/tags/uptime.md>)

### AI overview

Neon explains why it removed the default uptime percentage from its status page and is exploring project-level uptime ranges to better represent service health across its multi-tenant distributed system.

### Source excerpt

In the past two months, we've had several incidents that affected different aspects of our service. We've been transparent about them, and we made sure that each major one included details on what happened, the size of the impact, and what we're doing to prevent it from happening...

## Run a Node Grants Round Grantee Announcement

DevFeed: [Run a Node Grants Round Grantee Announcement](<https://devfeed.tech/articles/run-a-node-grants-round-grantee-announcement-17084.md>)

Original publisher: [Read original article](<https://blog.ethereum.org/en/2023/12/06/run-a-node-grantee>)

Author: Ethereum Foundation Ecosystem Support Program

Published: 2023-12-06T00:00:00Z

Content type: release

Language: en

Sources: [Ethereum Foundation Blog](<https://devfeed.tech/sources/ethereum-foundation-blog.md>)

Topics: [Ethereum](<https://devfeed.tech/topics/ethereum.md>), [Blockchain](<https://devfeed.tech/topics/blockchain.md>), [Network](<https://devfeed.tech/topics/network.md>), [Remote Procedure Call (RPC)](<https://devfeed.tech/topics/rpc.md>)

Tags: [africa](<https://devfeed.tech/tags/africa.md>), [announcement](<https://devfeed.tech/tags/announcement.md>), [blockchain](<https://devfeed.tech/tags/blockchain.md>), [build](<https://devfeed.tech/tags/build.md>), [developers](<https://devfeed.tech/tags/developers.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [ecosystem-support-program](<https://devfeed.tech/tags/ecosystem-support-program.md>), [ethereum](<https://devfeed.tech/tags/ethereum.md>), [internet](<https://devfeed.tech/tags/internet.md>), [rpc](<https://devfeed.tech/tags/rpc.md>), [security](<https://devfeed.tech/tags/security.md>), [testing](<https://devfeed.tech/tags/testing.md>), [university](<https://devfeed.tech/tags/university.md>)

### AI overview

The Run A Node Grants Round selected 35 recipients from 23 countries from 243 applications. The grants support projects using Ethereum nodes for community building, research, data access, performance evaluation, education, and related activities beyond validator operation.

### Source excerpt

The Run A Node Grants Round wanted to reach different users exploring blockchain, learning, community efforts, and research purposes. The aim of this round was to encourage the exploration of a diverse range of ideas for operating nodes beyond running a validator, such as facilitating data queries for research, examining...

## Gossip Protocol Explained

DevFeed: [Gossip Protocol Explained](<https://devfeed.tech/articles/gossip-protocol-explained-27906.md>)

Original publisher: [Read original article](<http://highscalability.com/blog/2023/7/16/gossip-protocol-explained.html>)

Author: NK

Published: 2023-07-16T16:38:02Z

Content type: article

Language: en

Sources: [High Scalability](<https://devfeed.tech/sources/high-scalability.md>), [High Scalability](<https://devfeed.tech/sources/high-scalability-2.md>)

Topics: [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [P2P](<https://devfeed.tech/topics/p2p.md>), [Availability](<https://devfeed.tech/topics/availability.md>), [consistency](<https://devfeed.tech/topics/consistency.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [Resilience](<https://devfeed.tech/topics/resilience.md>), [Network](<https://devfeed.tech/topics/network.md>)

Tags: [availability](<https://devfeed.tech/tags/availability.md>), [consistency](<https://devfeed.tech/tags/consistency.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [distributed-algorithm](<https://devfeed.tech/tags/distributed-algorithm.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [high-scalability](<https://devfeed.tech/tags/high-scalability.md>), [messages](<https://devfeed.tech/tags/messages.md>), [network](<https://devfeed.tech/tags/network.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [resilience](<https://devfeed.tech/tags/resilience.md>)

### AI overview

This article explains the gossip protocol as a peer-to-peer approach for managing state and communicating between nodes in distributed systems. It describes its relationship to high availability, eventual consistency, scalability, and resilience, and compares it with centralized state management, point-to-point broadcast, and eager reliable broadcast.

### Source excerpt

You can subscribe to the system design newsletter to excel in system design interviews and software architecture. The original article was published on systemdesign.one website. What Is Gossip Protocol? The typical problems in a distributed system are the following [1], [11]: maintaining the system state (liveness of nodes) communication between nodes The potential solutions to these problems are as follows [1]: centralized state management service peer-to-peer state management service

## Gossip Protocol Explained

DevFeed: [Gossip Protocol Explained](<https://devfeed.tech/articles/gossip-protocol-explained-33603.md>)

Original publisher: [Read original article](<https://highscalability.com/gossip-protocol-explained/>)

Author: NK

Published: 2023-07-16T15:38:02Z

Content type: tutorial

Language: en

Sources: [High Scalability](<https://devfeed.tech/sources/high-scalability-3.md>)

Topics: [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [Availability](<https://devfeed.tech/topics/availability.md>), [consistency](<https://devfeed.tech/topics/consistency.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [Resilience](<https://devfeed.tech/topics/resilience.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [availability](<https://devfeed.tech/tags/availability.md>), [consistency](<https://devfeed.tech/tags/consistency.md>), [distributed-algorithm](<https://devfeed.tech/tags/distributed-algorithm.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [messages](<https://devfeed.tech/tags/messages.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [resilience](<https://devfeed.tech/tags/resilience.md>), [scalability](<https://devfeed.tech/tags/scalability.md>)

### AI overview

This article explains the gossip protocol as a peer-to-peer approach for maintaining state and communicating in distributed systems. It contrasts gossip-based state management with centralized services such as Apache Zookeeper and discusses availability, consistency, scalability, resilience, and message-broadcasting techniques.

### Source excerpt

You can subscribe to the system design newsletter to excel in system design interviews and software architecture. The original article was published on systemdesign.one website. What Is Gossip Protocol? The typical problems in a distributed system are the following [1], [11]: maintaining the system state (liveness of nodes) communication

## Consistent hashing algorithm

DevFeed: [Consistent hashing algorithm](<https://devfeed.tech/articles/consistent-hashing-algorithm-33602.md>)

Original publisher: [Read original article](<https://highscalability.com/consistent-hashing-algorithm/>)

Author: NK

Published: 2023-02-22T16:39:15Z

Content type: tutorial

Language: en

Sources: [High Scalability](<https://devfeed.tech/sources/high-scalability-3.md>)

Topics: [consistent hashing](<https://devfeed.tech/topics/consistent-hashing.md>), [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [Cache](<https://devfeed.tech/topics/cache.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [cache](<https://devfeed.tech/tags/cache.md>), [consistent-hashing](<https://devfeed.tech/tags/consistent-hashing.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [hashing](<https://devfeed.tech/tags/hashing.md>), [high-availability](<https://devfeed.tech/tags/high-availability.md>), [load-balancing](<https://devfeed.tech/tags/load-balancing.md>), [low-latency](<https://devfeed.tech/tags/low-latency.md>), [scalability](<https://devfeed.tech/tags/scalability.md>), [sharding](<https://devfeed.tech/tags/sharding.md>), [system-design](<https://devfeed.tech/tags/system-design.md>)

### AI overview

The article explains how consistent hashing places nodes and data keys on a virtual hash ring, then assigns data by traversing the ring clockwise to the next node. It discusses cache-server scaling, hotspot reduction, dynamic load, replication, availability, and latency in distributed systems.

### Source excerpt

You can subscribe to the system design newsletter to excel in system design interviews and software architecture. You can view the original article Consistent hashing explained on systemdesign.one website. How does consistent hashing work? At a high level, consistent hashing performs the following operations: The output of the hash

## Consistent hashing algorithm

DevFeed: [Consistent hashing algorithm](<https://devfeed.tech/articles/consistent-hashing-algorithm-27905.md>)

Original publisher: [Read original article](<http://highscalability.com/blog/2023/2/22/consistent-hashing-algorithm.html>)

Author: NK

Published: 2023-02-22T16:39:15Z

Content type: tutorial

Language: en

Sources: [High Scalability](<https://devfeed.tech/sources/high-scalability.md>), [High Scalability](<https://devfeed.tech/sources/high-scalability-2.md>)

Topics: [hashing](<https://devfeed.tech/topics/hashing.md>), [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [Cache](<https://devfeed.tech/topics/cache.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [Software](<https://devfeed.tech/topics/software.md>), [Availability](<https://devfeed.tech/topics/availability.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [availability](<https://devfeed.tech/tags/availability.md>), [cache](<https://devfeed.tech/tags/cache.md>), [consistent-hashing](<https://devfeed.tech/tags/consistent-hashing.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [hashing](<https://devfeed.tech/tags/hashing.md>), [hotspot](<https://devfeed.tech/tags/hotspot.md>), [load-balancing](<https://devfeed.tech/tags/load-balancing.md>), [low-latency](<https://devfeed.tech/tags/low-latency.md>), [scalability](<https://devfeed.tech/tags/scalability.md>), [sharding](<https://devfeed.tech/tags/sharding.md>), [software-architecture](<https://devfeed.tech/tags/software-architecture.md>)

### AI overview

A tutorial explaining consistent hashing: nodes and data keys are mapped onto a virtual hash ring, and clockwise traversal assigns data to nodes. It discusses terminology, cache-server scaling requirements, hotspot reduction, dynamic load, replication, availability, and latency.

### Source excerpt

This is a guest article by NK. You can view the original article Consistent hashing explained on systemdesign.one website. How does consistent hashing work? At a high level, consistent hashing performs the following operations: The output of the hash function is placed on a virtual ring structure (known as the hash ring) The hashed IP addresses of the nodes are used to assign a position for the nodes on the hash ring The key of a data object is hashed using the same hash function to find the position of the key on the hash ring The hash ring is traversed in the clockwise direction starting from the position of the key until a node is found The data object is stored or retrieved from the node that was found Terminology

## How we used Go 1.18 when designing our Identifiers

DevFeed: [How we used Go 1.18 when designing our Identifiers](<https://devfeed.tech/articles/how-we-used-go-1-18-when-designing-our-identifiers-17804.md>)

Original publisher: [Read original article](<https://encore.dev/blog/go-1.18-generic-identifiers>)

Author: Dominic Black

Published: 2022-03-25T00:00:00Z

Content type: article

Language: en

Sources: [Encore Updates](<https://devfeed.tech/sources/encore-updates.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [data](<https://devfeed.tech/topics/data.md>), [Traces](<https://devfeed.tech/topics/traces.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [aws](<https://devfeed.tech/tags/aws.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [database](<https://devfeed.tech/tags/database.md>), [debug](<https://devfeed.tech/tags/debug.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [go](<https://devfeed.tech/tags/go.md>), [identifier](<https://devfeed.tech/tags/identifier.md>), [security](<https://devfeed.tech/tags/security.md>), [traces](<https://devfeed.tech/tags/traces.md>)

### AI overview

This article explains how Encore considered identifier design in distributed systems while using Go 1.18. It discusses the limitations of auto-incrementing identifiers and outlines requirements including sortability, scalability, collision avoidance, zero configuration, and type safety.

### Source excerpt

It turns out identifiers were generic the whole time

## Why the author stopped using the term "actors" when explaining the Actor Model

DevFeed: [Why the author stopped using the term "actors" when explaining the Actor Model](<https://devfeed.tech/articles/the-curse-of-the-a-word-35977.md>)

Original publisher: [Read original article](<https://temporal.io/blog/sergey-the-curse-of-the-a-word>)

Author: Sergey Bykov

Published: 2021-05-05T07:00:00Z

Content type: opinion

Language: en

Sources: [Temporal Blog](<https://devfeed.tech/sources/temporal-blog.md>)

Topics: [Actor](<https://devfeed.tech/topics/actor.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [.NET](<https://devfeed.tech/topics/net.md>), [Java](<https://devfeed.tech/topics/java.md>)

Tags: [actor](<https://devfeed.tech/tags/actor.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [java](<https://devfeed.tech/tags/java.md>), [net](<https://devfeed.tech/tags/net.md>), [temporal-voices](<https://devfeed.tech/tags/temporal-voices.md>)

### AI overview

The author explains why he stopped using the term "actors" when discussing the Actor Model, focusing on conflation between local and distributed actors and their differing roles in concurrency.

### Source excerpt

While it may have taken me quite some time to get around to answering it, 2020 wasn't an ordinary year by any measure.

## Dealing with failure

DevFeed: [Dealing with failure](<https://devfeed.tech/articles/dealing-with-failure-35764.md>)

Original publisher: [Read original article](<https://temporal.io/blog/dealing-with-failure>)

Author: Sergey Bykov

Published: 2021-01-21T04:00:00Z

Content type: opinion

Language: en

Sources: [Temporal Blog](<https://devfeed.tech/sources/temporal-blog.md>)

Topics: [Remote Procedure Call (RPC)](<https://devfeed.tech/topics/rpc.md>), [retry](<https://devfeed.tech/topics/retry.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [client](<https://devfeed.tech/topics/client.md>), [servers](<https://devfeed.tech/topics/servers.md>), [systems](<https://devfeed.tech/topics/systems.md>)

Tags: [conference](<https://devfeed.tech/tags/conference.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [error](<https://devfeed.tech/tags/error.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [http](<https://devfeed.tech/tags/http.md>), [opinion](<https://devfeed.tech/tags/opinion.md>), [retry](<https://devfeed.tech/tags/retry.md>), [rpc](<https://devfeed.tech/tags/rpc.md>)

### AI overview

The article examines how to handle failures in cloud and distributed systems, focusing on request-reply or RPC, persistent queues, and workflows. It explains the simplicity and limitations of RPC, including timeouts, ambiguous outcomes, retries, unavailable systems, and partial failures.

### Source excerpt

I recently gave a talk at the CodeMesh conference, and I spent half of it reflecting on the seemingly boring topic of dealing with failures.

## Flow Control in Aeron

DevFeed: [Flow Control in Aeron](<https://devfeed.tech/articles/flow-control-in-aeron-30656.md>)

Original publisher: [Read original article](<http://bad-concurrency.blogspot.com/2020/03/flow-control-in-aeron.html>)

Author: Michael Barker (noreply@blogger.com)

Published: 2020-03-19T22:20:00Z

Content type: tutorial

Language: en

Sources: [Bad Concurrency](<https://devfeed.tech/sources/bad-concurrency.md>)

Topics: [networking](<https://devfeed.tech/topics/networking.md>), [Messaging](<https://devfeed.tech/topics/messaging.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [messaging](<https://devfeed.tech/tags/messaging.md>), [multicast](<https://devfeed.tech/tags/multicast.md>), [networking](<https://devfeed.tech/tags/networking.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [udp](<https://devfeed.tech/tags/udp.md>)

### AI overview

This article explains flow control in Aeron, focusing on sliding-window behavior over UDP. It compares Aeron's receiver status messages with TCP acknowledgements and describes how receiver-window limits help prevent senders from overrunning receivers and causing message loss.

### Source excerpt

One of my more recent projects has led me to become more involved in the Aeron project. If you are unaware of Aeron, then head over to the Github site and check it out. At its core is an reliable messaging system that works over UDP, Multicast UDP and IPC. It also contains an archiving feature for recording and replay and (still under active development) an implementation of the Raft protocol for clustering. Did I mention that it was fast too. I've spent the last few weeks buried in the various strategies the Aeron has for flow control. Specifically modifying the existing flow control strategies and adding more flexible configuration on a per channel basis. Before I jump into that it would be useful to cover a little background first. What is flow control? Within a distributed system the purpose of flow control is to limit the rate of a sender so that is does not overrun it's associated receiver. UDP does not come with any form of flow control, therefore it is easy to create a sender that will out pace the receiver, leading to message loss. There are a number of different forms of flow control, but I'm going to focus on the sliding window flow control protocol used by TCP and Aeron. The sliding window protocol requires that the sender maintain a buffer of data (referred to as a window). The size of this window will typically communicated from the receiver to the sender as part of the protocol. With a bi-directional protocol like TCP the size of the window is communicated in each TCP segment header. This is the amount of data that the sender can transmit to the receiver before having to wait until an acknowledgement is received. If the application thread on the receiver side is busy and does not read the data from the socket and the sender continues to transmit, the window size value will decrease until it reaches 0, at which time the sender must stop and wait for an acknowledgement with a non-zero window size before sending again. There is a lot more networking theo

## Eth2 Consensus Mechanisms: GHOST and LMD-GHOST Fork Choice

DevFeed: [Eth2 Consensus Mechanisms: GHOST and LMD-GHOST Fork Choice](<https://devfeed.tech/articles/validated-staking-on-eth2-2-two-ghosts-in-a-trench-coat-16888.md>)

Original publisher: [Read original article](<https://blog.ethereum.org/en/2020/02/12/validated-staking-on-eth2-2-two-ghosts-in-a-trench-coat>)

Author: Carl Beekhuizen

Published: 2020-02-12T00:00:00Z

Content type: tutorial

Language: en

Sources: [Ethereum Foundation Blog](<https://devfeed.tech/sources/ethereum-foundation-blog.md>)

Topics: [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [Network](<https://devfeed.tech/topics/network.md>), [Latency](<https://devfeed.tech/topics/latency.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [consensus](<https://devfeed.tech/tags/consensus.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [latency](<https://devfeed.tech/tags/latency.md>), [network](<https://devfeed.tech/tags/network.md>), [pos](<https://devfeed.tech/tags/pos.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [research-development](<https://devfeed.tech/tags/research-development.md>)

### AI overview

This article explains the consensus mechanisms behind eth2, focusing on GHOST and its proof-of-stake variant, Latest Message Driven GHOST (LMD-GHOST). It describes how LMD-GHOST uses each validator's latest vote to select the chain head and how GHOST can reduce attack effectiveness and chain reorganization depth under high network latency.

### Source excerpt

Special thanks to Sacha Yves Saint-Leger & Danny Ryan for review. In this installment, we'll discuss the consensus mechanisms behind eth2. Eth2 has a novel approach to deciding which block is the head of the chain, along with which blocks are and are not a part of the chain....

## Open-Sourcing Panoptes, Oath's distributed network telemetry collector

DevFeed: [Open-Sourcing Panoptes, Oath's distributed network telemetry collector](<https://devfeed.tech/articles/open-sourcing-panoptes-oath-s-distributed-network-telemetry-collector-20491.md>)

Original publisher: [Read original article](<https://yahooeng.tumblr.com/post/178738044351>)

Author: amberwilsonla-blog

Published: 2018-10-04T20:59:00Z

Content type: release

Language: en

Sources: [Yahoo](<https://devfeed.tech/sources/yahoo.md>)

Topics: [telemetry](<https://devfeed.tech/topics/telemetry.md>), [Network](<https://devfeed.tech/topics/network.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Development](<https://devfeed.tech/topics/development.md>), [Python](<https://devfeed.tech/topics/python.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [Redis](<https://devfeed.tech/topics/redis.md>)

Tags: [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [network](<https://devfeed.tech/tags/network.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [python](<https://devfeed.tech/tags/python.md>), [redis](<https://devfeed.tech/tags/redis.md>), [scalability](<https://devfeed.tech/tags/scalability.md>), [telemetry](<https://devfeed.tech/tags/telemetry.md>), [yahoo-engineering](<https://devfeed.tech/tags/yahoo-engineering.md>)

### AI overview

The Oath network automation team announces the open-sourcing of Panoptes, a distributed system for collecting, enriching, and distributing network telemetry. The article describes its pluggable polling and discovery architecture, Kafka-based metrics bus, Python implementation, and Celery scheduling with Redis.

### Source excerpt

yahoodevelopers: By Ian Flint, Network Automation Architect and Varun Varma, Senior Principal Engineer The Oath network automation team is proud to announce that we are open-sourcing Panoptes, a distributed system for collecting, enriching and distributing network telemetry. We developed Panoptes to address several issues inherent in legacy polling systems, including overpolling due to multiple point solutions for metrics, a lack of data normalization, consistent data enrichment and integration with infrastructure discovery systems. Panoptes is a pluggable, distributed, high-performance data collection system which supports multiple polling formats, including SNMP and vendor-specific APIs. It is also extensible to support emerging streaming telemetry standards including gNMI. Architecture The following block diagram shows the major components of Panoptes: Panoptes is written primarily in Python, and leverages multiple open-source technologies to provide the most value for the least development effort. At the center of Panoptes is a metrics bus implemented on Kafka. All data plane transactions flow across this bus; discovery publishes devices to the bus, polling publishes metrics to the bus, and numerous clients read the data off of the bus for additional processing and forwarding. This architecture enables easy data distribution and integration with other systems. For example, in preparing for open-source, we identified a need for a generally available time series datastore. We developed, tested and released a plugin to push metrics into InfluxDB in under a week. This flexibility allows Panoptes to evolve with industry standards. Check scheduling is accomplished using Celery, a horizontally scalable, open-source scheduler utilizing a Redis data store. Celery's scalable nature combined with Panoptes' distributed nature yields excellent scalability. Across Oath, Panoptes currently runs hundreds of thousands of checks per second, and the infrastructure has been tested

[Next page](<https://devfeed.tech/tags/distributed-system.md?cursor=WyIyMDE4LTEwLTA0VDIwOjU5OjAwKzAwOjAwIiwgIjQ3MzI3OTIxLTdhMGEtNDY5MC1iMDE1LTY2NjY0NzVjMTIzNiJd>)