ID | IEP-73 |
Author | |
Sponsor | |
Created | |
Status | DRAFT |
Motivation
...
Code Block |
---|
language | java |
---|
title | Vault and Local Configuration Manager |
---|
|
// Vault Component startup.
VaultManager vaultMgr = new VaultManager();
boolean cfgBootstrappedFromPds = vaultMgr.bootstrapped();
List<RootKey<?, ?>> rootKeys = new ArrayList<>(Collections.s
ingletonList(NetworkConfiguration.KEY));
List<ConfigurationStorage> configurationStorages =
new ArrayList<>(Collections.singletonList(new LocalConfigurationStorage(vaultMgr)));
// Bootstrap local configuration manager.
ConfigurationManager locConfigurationMgr = new ConfigurationManager(rootKeys, configurationStorages);
if (!cfgBootstrappedFromPds)
try {
locConfigurationMgr.bootstrap(jsonStrBootstrapCfg);
}
catch (Exception e) {
log.warn("Unable to parse user specific configuration, default configuration will be used", e);
}
else if (jsonStrBootstrapCfg != null)
log.warn("User specific configuration will be ignored, cause vault was bootstrapped with pds configuration"); |
Manager | Depends On | Used By |
---|
VaultManager | - | - LocalConfigurationManager in order to store local configuration and update it consistently through listeners.
- MetastorageManager in order to commit processed DMS watch notifications atomically with corresponding applied revision.
|
LocalConfigurationManager | VaultManager | - NetworkManager in order to bootstrap itself with network configuration including sort of IPFinder and handle corresponding configuration changes.
- MetaStorageManager in order to handle meta storage group changes.
- ConfigurationManager indirectly
|
though - through LocalConfigurationStorage for the purposes of handling local configuration changes.
|
NetworkManager
Cause local configuration manager with vault underneath it are ready it's possible to instantiate network manager.
Code Block |
---|
language | java |
---|
title | Network Manager |
---|
|
NetworkView netConfigurationView =
locConfigurationMgr.configurationRegistry().getConfiguration(NetworkConfiguration.KEY).value();
// Network startup.
Network net = new Network(
new ScaleCubeNetworkClusterFactory(
localMemberName,
netConfigurationView.port(),
Arrays.asList(netConfigurationView.networkMembersNames()),
new ScaleCubeMemberResolver()));
NetworkCluster netMember = net.start(); |
Manager | Depends On | Used By |
---|
NetworkManager | LocalConfigurationManager | - MetaStorageManager in order to handle cluster init message.
- RaftManager in order to handle RaftGroupClientService requests and for the purposes of inner raft group communication.
- BaselineManger in order to retrieve information about current network members.
|
RaftManager <Loza>
After starting network member Raft Manager is instantiated. Raft Manager is responsible for handling raft servers and services life cycle.
Code Block |
---|
language | java |
---|
title | RaftManager |
---|
|
// Raft Component startup.
Loza raftMgr = new Loza(netMember); |
Manager | Depends On | Used By |
---|
Raftmanager | NetworkManager | - MetaStorageManager in order to instantiate and handle distributes metaStorage raft group.
- TableManager in order to instantiate and handle partitioned/ranged raft groups.
|
MetaStorageManger and ConfigurationManger
...
Code Block |
---|
language | java |
---|
title | MetaStorage Manager and Configuration Manager |
---|
|
// MetaStorage Component startup.
MetaStorageManager metaStorageMgr = new MetaStorageManager(
netMember,
raftMgr,
locConfigurationMgr
);
// Here distirbuted configuraion keys are registered.
configurationStorages.add(new DistributedConfigurationStorage(metaStorageMgr));
// Start configuration manager.
ConfigurationManager configurationMgr = new ConfigurationManager(rootKeys, configurationStorages); |
Manager | Depends On | Used By |
---|
MetaStorageManager | - VaultManager
- NetworkManager
- RaftManager
- LocalConfigurationManager
| - ConfigurationManager in order to store and handle distributed configuration changes.
- BaselineManager in order to watch private distributed keys, cause ConfigurationManger handles only public keys.
- AffinityManager for the same purposes.
- Probably SchemaManager for the same purposes.
- TableManager for the same purposes.
|
ConfigurationManager | - LocalConfigurationManager
- MetaStoragemanager
| - BaselineManager in order to watch public keys.
- AffinityManager for the same purposes.
- Probably SchemaManager for the same purposes.
- TableManager for the same purposes.
- IgnitionImpl
|
Business logic components: BaselineManager, AffinityManager, SchemaManager, TableManager, etc.
...
Code Block |
---|
language | java |
---|
title | Top Level Managers |
---|
|
// Baseline manager startup.
BaselineManager baselineMgr = new BaselineManager(configurationMgr, metaStorageMgr, netMember);
// Affinity manager startup.
AffinityManager affinityMgr = new AffinityManager(configurationMgr, metaStorageMgr, baselineMgr);
SchemaManager schemaManager = new SchemaManager(configurationMgr);
// Distributed table manager startup.
TableManager distributedTblMgr = new TableManagerImpl(
configurationMgr,
netMember,
metaStorageMgr,
affinityMgr,
schemaManager);
// Rest manager also goes here. |
Manager | Depends On | Used By |
---|
BaselineManager | - ConfigurationManager
- MetaStorageManager
- NetworkManager
| AffinityManager in order to retrieve current baseline. |
AffinityManager | - ConfigurationManager
- MetaStorageManager
- BaselineManager
| TableManager strictly or indirectly through corresponding private distributed affinityAssignment key. |
SchemaManager | - ConfigurationManager
- Probabaly MetaStorageManager
| TableManager in order to handle corresponding schema changes. |
TableManager | - ConfigurationManager
- MetaStorageManager
- NetworkManager
- AffinityManager
- SchemaManager
| IgnitionImpl |
Delpoying wathes and preparing IgnitionImpl
...