lightninglabs / lightninglabs/aperture

Dynamic backend service discovery

Open
#13 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
268
Forks
78
Avg merge
22h 25m
Merged PRs (30d)
1

Description

(from chat)

Possible working path:
* modify L402 to not read the services from disk anymore (well have the option, but a new interface), instead it accesses etcd to get the current working config set
* there's an entry for each service it proxies to (key hierachy ofc flexible), it then watches those key sets for changes, when they change it updates its in-memory forwarding/service table
* we have the normal 3f+1 instance of the naut server itself active
* upon start up, they each attempt to grab win the election by grabbing the underlying mutex w/ a lease (https://godoc.org/github.com/coreos/etcd/clientv3/concurrency#Election)
* the leader then sets a bit in their etcd service discovery config, which updates the L402 proxy to direct traffic as needed
* anytime they instance die or become unavailable (fail the hearbeat, or their lease expires), then the election restarts

docs on their election API: https://github.com/etcd-io/etcd/blob/master/Documentation/dev-guide/api_concurrency_reference_v3.md

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating L402 and read the etcd v3 concurrency election API documentation linked in the issue. The proposed work involves replacing or extending disk-based service configuration with etcd-backed discovery, watches, in-memory updates, and leader election; done would require agreement on the interface and behavior for startup, changes, and lease or heartbeat failure.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
api, backend, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.