-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Better replication techniques for Fedora / Drupal synchronization. #121
Comments
I depends (as always) which our master will be.
On the other side we don't control blocking on fedora4, but we still do drupal, so basically our whole chain is based on what happens after the message is in ActiveMQ and we are writing back to drupal (at least i see this so). If this is so, then really, ActiveMQ is our master. Some basic useful info here, have to research really what values do we have (like is the transaction id in the message?) So, question/acertions:
I really like the version vectors idea, not sure if it's optimal in a really distributed, multi origin environment, but if we relay only on activeMQ as a source for "what comes next" then it's Ok. On a simpler scenario, we can use http://symfony.com/doc/current/components/filesystem/lock_handler.html and/or (drupal 8 always in my mind) Since from how i see currently our lock needs (or better said what we are in control of) are on the drupal side. What i don't would like to see is blocking the UI during operations. We could just create a drupal entity with rdf and let all other expensive operations to depending entities as result of activeMQ getting consumed after all happened in the background. Then we can "sync" this depending entities in background (locking briefly) to a version of the main one and discard afterwards. In any scenario we should define a few things as needed/enforced:
|
The current sync machinery will inevitably yield inconsistencies under load. In a recent committers call (Nov 25th, 2015), a handful of techniques for better replication were discussed.
@nigelgbanks mentioned Bitcoin's block chain algorithm. Another option is per-resource version vectors. There's other options, such as hash histories (which would lead to a simplistic block chain algorithm), etc...
Please use this issue to discuss pros/cons of various approaches, and how we can best handle the multi-master setup that our project requirements dictate.
The text was updated successfully, but these errors were encountered: