Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


IDIEP-73
Author
Sponsor
Created

 

StatusDRAFT

Table of Contents

Motivation

...

Code Block
languagejava
titleVault 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");


ManagerDepends 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.
LocalConfigurationManagerVaultManager
  • 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
languagejava
titleNetwork 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();


ManagerDepends OnUsed By
NetworkManagerLocalConfigurationManager
  • 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
languagejava
titleRaftManager
// Raft Component startup.
Loza raftMgr = new Loza(netMember);


ManagerDepends OnUsed By
RaftmanagerNetworkManager
  • 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
languagejava
titleMetaStorage 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);


ManagerDepends OnUsed 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
languagejava
titleTop 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.


ManagerDepends OnUsed 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

...