Разработка отказоустойчивой вычислительной системы
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
Содержание
Введение
Постановка задачи
Алгоритм работы
Функции и процедуры
Интерфейс
Код программы
Заключение
Введение
Отказоустойчивой вычислительной системой называют среду, которая предоставляет постоянное, непрерывное обслуживание - доступ к данным и приложениям - даже в случае возникновения сбоев в аппаратных, программных или сетевых компонентах.
Старый лозунг службы 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 )