Podręcznik
4. Systemy rozproszone
4.6. Architektura klient/serwer w systemie pomiarowym
Podstawowym kreatorem rozproszonego systemu pomiarowo-kontrolnego jest użytkownik (klient), używający swego komputera w roli wirtualnego panelu stworzonego do obsługi wszystkich zasobów pomiarowo-kontrolnych oraz serwery zbierające rozproszone dane pomiarowe. Aplikacja klienta odpowiedzialna jest za wysyłanie poprzez sieć poleceń użytkownika do serwerów, których zadaniem jest sterowanie urządzeniami i uruchamianie określonych procesów pomiarowych. Każdy serwer przetwarza odebrane polecenia (zapytania) w celu uaktywnienia stosownego przyrządu i uzyskania żądanej przez klienta odpowiedzi (danych pomiarowych). Następnie wysyła odpowiedź do klienta, który odpowiednio przetwarza i wyświetla wynik.
Wymieniona struktura podstawowa ma jednak kilka istotnych wad:
- Użytkownik musi znać wcześniej adresy serwerów, z którymi chce się komunikować.
- Dane (wyniki) przychodzące z różnych serwerów nie są zsynchronizowane w czasie z powodu opóźnień wprowadzanych przez sieć (niemożliwych do przewidzenia).
- W sieci z liczbą klientów większą niż jeden, powstają problemy z podziałem zasobów (plików z danymi, urządzeń pomiarowych itp.).
- Tylko jeden użytkownik ma w danej chwili dostęp do wybranego urządzenia, jednak opóźnienie w sieci może łatwo doprowadzić do sytuacji, gdy kilka poleceń do urządzenia nadejdzie w tym samym czasie od różnych użytkowników, wprowadzając zamęt.
Znane są różne sposoby obejścia wyżej wymienionych problemów. Rozwiązaniem pierwszego problemu może być zastosowanie „listy urządzeń” jako zbioru przyrządów podłączonych do różnych serwerów. Po zdefiniowaniu „listy urządzeń” użytkownik może wysłać żądanie do dowolnego z dostępnych serwerów, który następnie łączy się z innym serwerem przekazując polecenie dalej. Właściwość tę (auto-routing) uzyskuje się dzięki koncepcji tzw. „zaufanych serwerów”. Kiedy żądanie dojdzie do odpowiedniego serwera, przetwarza je i wysyła odpowiedź bezpośrednio do klienta.
Problem synchronizacji można rozwiązać przy użyciu protokołu NTP (Network Time Protocol). Polega to na ustawieniu takiego samego czasu na wszystkich serwerach należących do tej samej domeny. Natomiast każde polecenie użytkownika powinno zawierać znacznik czasu, czyli informację o chwili wykonania pomiaru. Po wysłaniu poleceń do kilku serwerów, wszystkie wykonują pomiar w określonym czasie i wysyłają odpowiedź do klienta. Dokładność synchronizacji zależy od jakości NTP oraz opóźnień systemu operacyjnego i nie przekracza ułamka sekundy.
Problem kolejności dostępu do zasobów można rozwiązać przez zastosowanie priorytetów. Polecenia, które nie muszą być wykonane w określonym czasie są kolejkowane, a następnie przetwarzane w kolejności nadesłania, natomiast polecenia ze znacznikiem czasu (o wyższym priorytecie) są przesyłane do oddzielnej kolejki.