[WIP] Introduce generation id in openstack delimiter

This document describes the use of generation id in openstack
delimiter. I have neither fixed the format of the document nor
it may be the right place to host it. But this is something to
start the discussion within the team.

Change-Id: I55451c44c3b95a82f629fed44e19155a377c64d7
This commit is contained in:
Sudipta Biswas 2016-05-31 20:06:09 +05:30
parent 047acde202
commit ea320b1727
1 changed files with 58 additions and 0 deletions

58
doc/source/gen_id.rst Normal file
View File

@ -0,0 +1,58 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
=========================================
Openstack Delimeter - Generation ID usage
=========================================
No blueprint, this is intended as a reference document.
Statement of intent
===================
How to resolve a problem of cross project quota management seemlessly
by ensuring that atomicity of each transaction is kept intact in a
multi-user environment.
Sequencing transactions using generation id
===========================================
- There are various ways to do locking of resources to ensure data
consistency.
- The generation id is a concept of sequencing parallel writes to a
database via multiple threads in a highly concurrent environment in such
a way that data consistency is retained.
- To a layman, generation id is just a sequencing number that ensures
that the state of the database is correctly updated in a multi-threaded
world by making sure that all clients writing to the database have a
consistent view/single view.
- The generation id concept goes in parallel with a retry mechanism to
ensure that if the generation ids don't match for a client during
updates to the DB - a retry is performed to ensure that the data is
updated on the right state of the DB.
Delimeter's use of generation id
=================================
- Two aspects - One on the producer/resource provider side and the other
on the consumer side. However, the resource provider side of the story is
NOT the responsibility of delimeter and hence it's purely left out to the
individual services.
- generation id is a generic concept that could be applied in case of
delimeter to ensure that the consumers of the quotas have a consistent
view in a highly concurrent environment.
Example usage of generation id in OpenStack Delimiter
=====================================================
<TBD>