GlobalContext Design Discussion
Zone Assumptions Regarding Persistence, Replications, Sharing, etc
Some Definitions
- Restart - User directed stopping and starting of the application. The user has decided to take the app offline and then online again. Equivalent to a zero stop followed by zero start
- Recycle - A system directed (trigger by ZSO) bounce of the JVM (due to idleness or excessive requests) to maintain help of the system. From the user's standpoint, the app was not stopped, should remain available and all state should survive the restart.
Scenarios/Topologies
In order to discuss these state issues, we will use the following scenarios:
- Single - A single instance of the application's JVM on a single machine
- Cluster - A collection of JVMs hosting the same application
For
Cluster there are two subscenarios we will consider related to restart/recycle
- Member Bounce - An individual member of the cluster is bounced
- Full Cluster Bounce - All cluster members are bounced (this could be all bounced at once, or the behavior when the last existing cluster member is stopped
State Lifecycle Assumptions
| | Single Recycle | Single Restart | Cluster Member Recycle | Cluster Member Restart | Cluster Full Recycle | Cluster Full Restart |
| App | State Survives | State is discarded | State Survives | State is discarded from member but recreated on start from other cluster members | State Survives | State is discarded |
| Request | State is discarded | State is discarded | State is discarded | State is discarded | State is discarded | State is discarded |
| Event | State is discarded | State is discarded | State is discarded | State is discarded | State is discarded | State is discarded |
| Config | State is reloaded from files | State is reloaded from files | State is reloaded from files | State is reloaded from files | State is reloaded from files | State is reloaded from files |
| User | State Survives | State is discarded | State Survives | State is discarded from member but recreated on start from other cluster members | State Survives | State is discarded |
| Storage | State Survives and is reloaded from persistent storage | State Survives and is reloaded from persistent storage | State Survives and is reloaded from persistent storage | State Survives and is reloaded from persistent storage | State Survives and is reloaded from persistent storage | State Survives and is reloaded from persistent storage |
| Transient | State is discarded | State is discarded | State is discarded | State is discarded | State is discarded | State is discarded |
State Replication in a Cluster Assumptions
| Zone | Replication? |
| App | Replicated |
| Request | Not Replicated |
| Event | Not Replicated |
| Config | Not Replicated (assumes shared config file) |
| User | Replicated |
| Storage | Depends (either replicated or assumes shared storage and storage locking) |
| Transient | Not Replicated |
State Mutability Assumptions
| Zone | Mutability |
| App | Read/Write |
| Request | Read/Write |
| Event | Read/Write |
| Config | Read-Only |
| User | Read/Write |
| Storage | Read/Write |
| Transient | Read/Write |