Разработка отказоустойчивой вычислительной системы

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

Содержание

 

Введение

Постановка задачи

Алгоритм работы

Функции и процедуры

Интерфейс

Код программы

Заключение

 

Введение

 

Отказоустойчивой вычислительной системой называют среду, которая предоставляет постоянное, непрерывное обслуживание - доступ к данным и приложениям - даже в случае возникновения сбоев в аппаратных, программных или сетевых компонентах.

Старый лозунг службы Federal Express звучит так: В любом случае почта должна быть доставлена за ночь. Примерно таковы и требования к современным компьютерным системам, за исключением того, что доставка информации должна гарантироваться не за одну ночь, а постоянно, вне зависимости от проблем, которые могут возникнуть в конкретных аппаратных или программных компонентах информационной системы, сбоев в сети электропитания или неприятностей другого рода.

Такая концепция называется отказоустойчивостью. Системы обеспечения отказоустойчивости встраиваются в программное обеспечение, входят в состав аппаратных средств либо являются комбинированными.

В рамках курса отказоустойчивые вычислительные системы, была поставлена задача разработать простой пример работы отказоустойчивой системы на основе клиент-серверной технологии.

 

Постановка задачи

 

Создать программный продукт на основании клиент-серверной технологии, реализующий отказоустойчивую работу системы. В случае потери связи с одним из серверов клиент подключается на другой сервер.

 

 

В случае потере связи с обоими серверами клиент продолжит искать работоспособный сервер из списка доступных серверов, пока не подключится к одному из них, либо пока работа приложения не будет остановлена. Для примера будет реализован сервер погоды, и клиент запрашивающий погоду с сервера.

 

Алгоритм работы

программный отказоустойчивый сервер клиент

1.Запускается сервер и альтернативный сервер, прослушивающие 999 порт по всем диапазонам айпи адресов. В случае получения пакета по этому порту анализируется содержащаяся в пакете информация, если первый символ p то это пакет проверки связи от клиента, после символа p содержится айпи адрес отправителя на который отправляется пакет аналогичного типа с информацией о том что сервер доступен. Если второй символ z, то это запрос погоды, в таком случае сервер формирует ответный пакет содержащий информацию о температуре воздуха и облачности.

.Аналогично работает второй сервер.

.Клиент после запуска начинает с определенной частотой отправлять пакеты проверки связи на первый адрес из списка серверов. В случае возвращения ответного пакета, клиент понимает о том что связь с сервером в порядке. В случае если в установленный интервал ответный пакет не вернулся, осуществляется две повторных попытки подключения на этот же сервер, далее в случае успеха рабочим сервером остается все тот же, иначе осуществляется проверка связи со вторым сервером в списке, потом с третьим и т.д. Когда список серверов заканчивается клиент повторяет попытку подключения к первому.

.При запросе погоды клиент отправляет запрос на текущий сервер. Полученный пакет он разбирает, и формирует для представления пользователю.

Структура пакетов:

Пинг клиента:

Р

Пинг сервера:

Р

Запрос погоды:

Z

Ответ с погодой

Z;температура; облачность; - ; разграничение для анализа строки

 

Функции и процедуры

 

Клиент

Функция получения своего айпи:TForm1.GetLocalIP: String;

Процедура запроса погоды, клиентом:

procedure TForm1.Button1Click(Sender: TObject);

Процедура получения пакета клиентом:

procedure TForm1.sUDPRead(Sender: TObject; AData: TStream;

ABinding: TIdSocketHandle);

Процедура, таймер проверки связи с сервером:

procedure TForm1.Timer1Timer(Sender: TObject);

Процедура, таймер проверки был ли получен ответ от сервера в установленное время

procedure TForm1.Timer2Timer(Sender: TObject);

Процедура установка начальный параметров клиента:

procedure TForm1.FormCreate(Sender: TObject);

Процедура управления формой:TForm1.Button3Click(Sender: TObject);

Сервер

Функция получения своего айпи:TForm1.GetLocalIP: String;

Процедура установка начальный параметров клиента:

procedure TForm1.FormCreate(Sender: TObject);

Процедура анализа полученного пакета и соответствующего ответа:

procedure TForm1.sUDPRead(Sender: TObject; AData: TStream;

ABinding: TIdSocketHandle);

 

Интерфейс

 

Форма сервера:

 

 

Форма клиента:

 

 

Код программы

 

Код программы клиента:

 

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,IdSocketHandle, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdUDPBase, IdUDPClient, ExtCtrls, IdUDPServer, IdTCPServer, jpeg, Buttons, FileCtrl,WinSock; type TForm1 = class(TForm) Button1: TButton; s: TIdUDPServer; c: TIdUDPClient; Eip: TEdit; Timer1: TTimer; Timer2: TTimer; Memo1: TMemo; Image1: TImage; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Eip2: TEdit; Label5: TLabel; Eport: TEdit; Button2: TButton; Button3: TButton; Bevel1: TBevel; procedure Button1Click(Sender: TObject); procedure sUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); procedure Timer1Timer(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure Button2Click(Sender: TObject); procedure s2UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); procedure FormCreate(Sender: TObject); procedure Button3Click(Sender: TObject); var i : integer; mas : array [0..1000] of char; str,pg : string; begin if numP<>0 then begin if ncs=1 then Memo1.Lines.Add( 1 ) else Memo1.Lines.Add( 2 )