В настоящем разделе описываются необходимые записи, которые автоматически создаются при создании распределенного проекта (см. также Создание распределенной системы). Записи задаются в конфигурационном файле, находящемся в proj_path/config/.
Для распределенной системы необходимы следующие записи:
ПРИМЕР 1
Распределенная система, состоящая из 2 систем:
Рисунок: Распределенная система, состоящая из 2 систем
Чтобы создать распределенную систему, содержащую две разных системы, связанных друг с другом (System1 и System2), в двух системах необходимо ввести следующие записи:
System1 (имя хоста Host1):
[general]
distributed = 1
#Для System1 не нужна запись distPeer, так как она является сервером для System2.
System2 (имя хоста Host2):
[general]
distributed = 1
[dist]
distPeer = «Host1» 1 #Connect to Host1 (of System1), system number 1
ПРИМЕР 2
Распределенная система, состоящая из 4 систем, которые соединены друг с другом:
Рисунок: Распределенная система, состоящая из 4 систем
Чтобы создать распределенную систему, содержащую четыре разных системы (System1, System2, System3 и System4), необходимо ввести следующие записи (в данном примере System4 является сервером для всех остальных систем, System3 — клиентом для System4 и сервером для System1 и System2. System2 является клиентом для System3 и System4, и сервером для System1. System1 является клиентом для всех остальных систем):
System1 (имя хоста Host1):
[general]
distributed = 1
[dist]
distPeer = «Host2» 2 #Connect to Host2 (of System2), system number 2
distPeer = «Host3» 3 #Connect to Host3 (of System3), system number 3
distPeer = «Host4» 4 #Connect to Host4 (of System4), system number 4
System2 (имя хоста Host2):
[general]
distributed = 1
[dist]
distPeer = «Host3» 3 #Connect to Host3 (of System3), system number 3
distPeer = «Host4» 4 #Connect to Host4 (of System4), system number 4
System3 (имя хоста Host3):
[general]
distributed = 1
[dist]
distPeer = «Host4» 4 #Connect to Host4 (of System4), system number 4
System4 (имя хоста Host4):
[general]
distributed = 1
ПРИМЕР 3
Распределенная система (содержащая 7 разных систем) с иерархической структурой
(Все системы связаны с System1. System5 связана с System2, а System 6 и System7 — с System3).
В иерархической структуре лучше всего, чтобы система высшего уровня была сервером для всех остальных систем, системы нижнего уровня были клиентами для всех остальных систем, а системы среднего уровня были серверами для всех систем, которые располагаются ниже, и клиентами для всех систем, которые располагаются выше. Это дает два преимущества: нужно меньше конфигурационных записей, и, если вы добавляете системы «нижнего уровня», вам не надо изменять конфигурационный файл систем «верхнего уровня» (следовательно вам не придется перезапускать системы «верхнего уровня»).
Рисунок: Распределенная система, состоящая из 7 систем
System1 (имя хоста Host1):
[general]
distributed = 1
Для системы 1 (System1) не нужна запись distPeer, так как она является сервером.
System2 (имя хоста Host2):
[general]
distributed = 1
[dist]
distPeer = «Host1» 1 #Connect to Host1 (of System1), system number 1
System3 (имя хоста Host3):
[general]
distributed = 1
[dist]
distPeer = «Host1» 1 #Connect to Host1 (of System1), system number 1
System4 (имя хоста Host4):
[general]
distributed = 1
[dist]
distPeer = «Host1» 1 #Connect to Host1 (of System1), system number 1
System5 (имя хоста Host5):
[general]
distributed = 1
[dist]
distPeer = «Host1» 1 #Connect to Host1 (of System1), system number 1
distPeer = «Host2» 2 #Connect to Host2 (of System2), system number 2
System6 (имя хоста Host6):
[general]
distributed = 1
[dist]
distPeer = «Host1» 1 #Connect to Host1 (of System1), system number 1
distPeer = «Host3» 3 #Connect to Host3 (of System3), system number 3
System7 (имя хоста Host7):
[general]
distributed = 1
[dist]
distPeer = «Host1» 1 #Connect to Host1 (of System1), system number 1
distPeer = «Host3» 3 #Connect to Host3 (of System3), system number 3
ПРИМЕЧАНИЕ
Вы можете изменить номер системы и имя существующего проекта с помощью WCCOAtoolSyncTypes. Обратите внимание, что проект прекращает работу и запускает WCCOAtoolSyncTypes с помощью следующей командной строки:
WCCOAtoolSyncTypes -system 3 newSysName -proj «Demo_3.5»
Как показано выше, сначала необходимо указать номер системы, а потом ее имя.
Имя и номер системы можно запросить в CONTROL с помощью функций getSystemName() и getSystemId():
main()
{
int sysId;
string sysNam;
sysNam = getSystemName();
DebugN(«NAME IS:»,sysNam);
sysId=getSystemId(sysId);
DebugN(«ID IS:»,sysId);
}