livepeer/go-livepeer

Document O selection and reliability strategy

Open

#868 opened on May 16, 2019

View on GitHub
 (0 comments) (0 reactions) (0 assignees)Go (223 forks)auto 404
area: broadcastinghelp wantedstatus: backlogtype: documentation

Repository metrics

Stars
 (583 stars)
PR merge metrics
 (PR metrics pending)

Description

Is your feature request related to a problem? Please describe. We're starting to accumulate quite a bit of "oral knowledge" on how the O selection mechanism works, the overall reliability strategy, and the justifications for that strategy. It would be good to document those.

There are two possible audiences here that the documentation should be addressed towards: developers working on the goclient, and users of the goclient (B/O/T operators).

This probably means separate sections or separate pages; it would be good to clearly identify the target audience when writing.

Describe the solution you'd like

A docs/reliability.md page describing our accumulated knowledge and strategy.

Describe alternatives you've considered

Separate pages, one for developers and another for users. Whichever is more appropriate probably depends on the depth of each.

It may be enough to begin with a high-level description suitable for users, then drill down into details suitable for developers.

Additional context

Some things to describe, off the top of my head:

  • Reliability and load control: round robin, retries
  • Backpressure: One segment in flight
  • Load balancing: -maxSessions
  • BroadcasterManager list refresh intervals https://github.com/livepeer/go-livepeer/pull/806#discussion_r274187906
  • Front running prevention: External storage prefix for multi-O
  • Justification for each of these mechanisms, the problem(s) they solve and how

(this list is not exhaustive)

Contributor guide