Sequence Order vs Delivery Order #23438
Unanswered
phudlow-trimble
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
I have a question which is a bit theoretical but, I think, may have practical value. I understand that Fluid data structures provide eventual consistency through a "total order broadcast" and the documentation states that "each client receives every operation relayed from the server with enough information to apply them in the correct order." However, it is unclear whether a Fluid service should be expected to deliver the operations in that same order.
Of course I realize that local changes are applied optimistically and so the practical change order observed by application code will usually be different, but I feel this may still be important for a few applications.
For example, I see some of the legacy data structures (such as Task Manager) which appear to be using the delivery order of the sequenced op messages to achieve "consensus". I say that because I do not see the sequence number being read in processCore. However, I might be misunderstanding. Indeed, "consensus" seems like a misnomer if the service-level order is being used to achieve it.
Another reason I think this is important is for the implementation of a custom Fluid service. If I were to write my own service, would I need to ensure that it delivered operation messages to clients in the same order as the sequence it attached to them?
By now y'all may be sensing that I have an ulterior motive for asking this question. I am working with a layered application which maintains a legacy data structure with Fluid data structures being used as an intermediate format. I am sheepish about this because I realize it is not the intended use for Fluid and undermines some of the awesome benefits. Nevertheless, I am seeing potential for success with the performance characteristics of Fluid Relay and participant management the SDK. The sticking point, however, is this ordering. I am currently working around the optimistic local changes to use the delivery order in my own data merging algorithm and this works, but I do not know whether it is really safe. Obviously this consistent delivery order is not part of the Fluid Relay SLA, but is it inherent to the Fluid Framework itself?
Beta Was this translation helpful? Give feedback.
All reactions