Jump to a problem, path or page
Jump to a problem, path or page
Updates as you edit. Run the review to record it; passing every check completes the problem.
Not yet passed: Client responsibility
Add Client and define its responsibility.
Not yet passed: API service responsibility
Add API service and define its responsibility.
Not yet passed: Database responsibility
Add Database and define its responsibility.
Not yet passed: Durable log responsibility
Add Durable log and define its responsibility.
Not yet passed: Ingest worker responsibility
Add Ingest worker and define its responsibility.
Not yet passed: Query engine responsibility
Add Query engine and define its responsibility.
Not yet passed: Client → API service
A directed path must connect Client to API service. Arrows represent requests, dependencies, or event flow.
Not yet passed: API service → Durable log
A directed path must connect API service to Durable log. Arrows represent requests, dependencies, or event flow.
Not yet passed: API service → Database
A directed path must connect API service to Database. Arrows represent requests, dependencies, or event flow.
Not yet passed: Durable log → Ingest worker
A directed path must connect Durable log to Ingest worker. Arrows represent requests, dependencies, or event flow.
Not yet passed: Ingest worker → Database
A directed path must connect Ingest worker to Database. Arrows represent requests, dependencies, or event flow.
Not yet passed: Query engine → Database
A directed path must connect Query engine to Database. Arrows represent requests, dependencies, or event flow.
Not yet passed: When should ingestion acknowledge a batch?
Not yet passed: What prevents a label explosion?
Not yet passed: What policy should replay use for identical samples?
Not yet passed: API and data model notes
Write at least 80 characters describing concrete operations, inputs, outputs, state and errors. This check measures completeness, not semantic correctness.
Not yet passed: Trade-offs and failure cases
Write at least 80 characters about alternatives, failure handling and edge cases. Review the reasoning yourself using the reference discussion.
Rule-based educational feedback. Notes are checked by length only; topology checks confirm directed reachability. These checks do not validate semantics, latency, reliability or every valid design.
Validate tenant-scoped batches, append them to a durable partitioned log and asynchronously index time series. Quotas, deterministic sample identities and retention control the service’s operating envelope. Authenticate the tenant and bound request bytes, sample counts, label counts and timestamp skew. Canonicalize labels into a tenant-scoped series identity and enforce active-series admission quotas. Append accepted batches durably, partitioned by series identity for useful local ordering. Acknowledge append success and return retryable failure when admission or storage is unavailable. Workers upsert samples using (tenant, series, timestamp). For this exercise, accept an identical duplicate and reject conflicting values for the same identity. Commit indexing progress only after durable writes; replay is then safe. Query by tenant, bounded time range and selected series. Build rollups with idempotent bucket replacement and a defined lateness window. Retain raw and rolled-up data under separate policies and expose indexing lag.
There is no single correct diagram. Explain where yours differs and which requirement justifies it.