Scaling phase 2: hub-store, the repository service, and hub-edge issue #363
open andymccall opened this · 0 comments
andymccall
Scaling, phase 2 (docs/scaling.md §4): the repository service, so web and worker nodes hold no repositories and scale out freely. Starts once phase 0 (issue #362) has a baseline.
hub-store: a service owning a set of repositories on its disks, with the API the hub asks of oxy-core today (load a state, trees and files, history, blame, diff, negotiate, apply a push, move a bookmark by compare-and-swap, project a proposal, export to Git, archive, search). gRPC (tonic) with streaming reads; it holds the per-repository locks.
hub-edge: the oxy wire protocol and large uploads through a thin proxy that finds the store node owning a repository and streams to it, so web nodes never carry pack data.
Routing in PostgreSQL: repository to store node; online moves between nodes (copy changes, fence writes briefly, copy bookmarks, flip the route).
The single-node edition keeps working as one process: the store is a trait with today's in-process implementation as one side.
Exit: web, worker and store run as separate processes in a test cluster on Earth, a store node drains with no downtime, and hub-load shows the web tier scaling with nodes.
Scaling, phase 2 (docs/scaling.md §4): the repository service, so web and worker nodes hold no repositories and scale out freely. Starts once phase 0 (issue #362) has a baseline.
oxywire protocol and large uploads through a thin proxy that finds the store node owning a repository and streams to it, so web nodes never carry pack data.