Лабораторные работы по курсу “Архитектуры распределенных систем”

 

Задания выполняются в бригадах. Максимальный размер бригады указан в задании.

Лабораторная работа 0 выполняется по желанию. Остальные лабораторные работы обязательны.

Возможные языки программирования для выполнения лабораторных работ: C# (рекомендуетcя), Java, C++, Python.

Лабораторные работы:

0. Введение в язык C#. (в данной работе выполняется реализация основного вычислительного алгоритма из вашего задания на языке C#; интерфейс: консольный, реализация многопоточная).

1. Синхронный и асинхронный метод взаимодействия по сети.

2. Методы синхронизации в многопоточных приложениях. В качестве модели распределенной системы использовать результат выполнения лабораторной работы 1. (После выполнения этой лабораторной работы, использование потоков и элементов синхронизации в дальнейших лабораторных заданиях 3-5 обязательно)

3. Передача данных по именованным каналам.

4. Создание распределенного приложения с использованием технологии DCOM.

5. Создание распределенного приложения с использованием технологий SOAP и/или XML-RPC.

 

Задания:

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

1) Реализовать в виде сервиса алгоритм быстрой сортировки (параллельную версию алгоритма – начиная с Л/Р №.2). Размер бригады: 2-3 человека.

2) Разработать сервис хранения данных на основе ключей (хэш-таблица?). Клиент может записывать и читать данные по ключу. Множество клиентов могут одновременно читать данные, но записывать данные может только один. Размер бригады: 2 человека.

3) Разработать сервис хранения данных на основе ключей (хэш-таблица?). Клиент может записывать и читать данные по ключу. Множество клиентов могут одновременно читать данные, но записывать данные может только один. Использовать в приложении модель множественных записей/чтений из хранилища в рамках одной сессии (транзакции). Реализовать возможность отката транзакции в случае неуспеха какой-либо операции Размер бригады: 3-4 человека.

4) Реализовать в виде сервиса алгоритма построения АВЛ-дерева по большому объему несортированных данных (словари >10000 записей). Начиная со 2-й Л/Р реализовать параллельную версию алгоритма. Реализовать сервис для быстрого поиска по построенному дереву. Размер бригады: 2-3 человека.

5) Реализовать сервис получения текущей погоды с какого-либо погодного сервиса в сети Internet. Клиент, обращается к сервису и отправляет свой город, а в ответ получает данные о текущей погоде в этом городе. Сервер должен реализовывать технологию кэширования состояния погоды в городах, с обновлением в 1 час. Размер бригады: 2-4 человека.

6) Реализовать сервис решения задачи коммивояжера (начиная со 2-й Л/Р – параллельной версии алгоритма). Размер бригады: 2 человека.

7) Реализовать сервис “длина строки”: клиент отправляет серверу строку, сервер возвращает её длину. Реализовать возможность работы с множеством клиентов одновременно. Размер бригады: 1 человек.

8) Реализовать сервис “текущее время”: клиент подключается к серверу, сервер возвращает свое текущее время. Реализовать возможность работы с множеством клиентов одновременно. Размер бригады: 1 человек.

9) Реализовать сервис обмена сообщениями между двумя клиентами: два клиента, подключившись к серверу, могут обмениваться сообщениями. Сервер должен кэшировать сообщения, в случае если один из клиентов не подключен. Размер бригады: 2 человека.

10) Реализовать сервис обмена криптосообщениями между множеством клиентов, используя симметричный криптоалгоритм (DES, 3DES, AES или RC4). Клиенты могут обмениваться сообщениями. Каждый клиент имеет записную книжку с другими собеседниками, в которой хранится история сообщений и ключи собеседников. Реализовать к 3-4 Л/Р простейшую версию графического интерфейса клиента*. Размер бригады: 3-4 человека.

11) Реализовать сервис решения задачи о клике (или задачи о независимом множестве). Начиная с Л/Р №2 – его параллельную версию. Размер бригады: 2-3 человека.

12) Реализовать сервис удаленного управления процессами на сервере (получить список задач, запустить задачу, завершить задачу). Размер бригады: 2-3 человека.

13) Реализовать сервис доступа к любой СУБД (по выбору исполнителей). Сервис должен обеспечивать параллельную работу множества клиентов. Размер бригады: 2-3 человека.

14) Реализовать сервис удаленной командной строки на сервере. Сервис должен обеспечивать аутентификацию и авторизацию клиента. Размер бригады: 2 человека.