Open divergentdave opened 1 month ago
Right now, all of these require explicit "transactional"/"serializable" synchronization between the relevant components of the system (except for report uploads, as noted).
Reducing these to something requiring only eventual consistency would be valuable even for an implementation using a monolithic database (e.g. Postgres transactions can still encounter distributed systems-like inconsistencies at transaction isolation levels lower than SERIALIZABLE
, without implementation effort to ensure the appropriate transactions necessarily encounter a write conflict).
I think it would be helpful to explicitly list what sort of synchronization guarantees the aggregators need to uphold. Some of these are implicit in the text elsewhere, and they would be important to the architecture of a distributed aggregator. Here's what I have so far: