TODO(stevvooe): Discuss the architecture of the registry, internally and externally, in a few different deployment scenarios.
NOTE: This section belongs somewhere, perhaps in a design document. We are leaving this here so the information is not lost.
Running the registry on eventually consistent backends has been part of the design from the beginning. This section covers some of the approaches to dealing with this reality.
There are a few classes of issues that we need to worry about when implementing something on top of the storage drivers:
In reality, the registry must worry about these kinds of errors when doing the following:
The backend path layout employs a few techniques to avoid these problems:
Unfortunately, one must play this game when trying to build something like this on top of eventually consistent storage systems. If we run into serious problems, we can wrap the storagedrivers in a shared consistency layer but that would increase complexity and hinder registry cluster performance.