- •Индивидуальное задание
- •Пример.
- •Контрольные вопросы
- •1.Опишите пути достижения параллелизма.
- •2. Опишите возможные режимы выполнения независимых частей программы.
- •3. Приведите классификацию вычислительных систем по Флинну.
- •4. Дайте характеристику мультипроцессорных систем и перечислите виды мультипроцессорных систем.
- •5. Дайте характеристику мультикомпьютерных систем и перечислите виды мультикомпьютерных систем.
- •6.Опишите и дайте характеристики топологии сети передачи данных «полный граф».
- •7.Опишите и дайте характеристики топологии сети передачи данных «линейка».
- •8.Опишите и дайте характеристики топологии сети передачи данных «кольцо».
- •9. Опишите и дайте характеристики топологии сети передачи данных «звезда».
- •10. Опишите и дайте характеристики топологии сети передачи данных «решетка».
- •11. Опишите и дайте характеристики топологии сети передачи данных «гиперкуб».
- •12. Опишите и дайте характеристики топологии сети передачи данных «полное двоичное дерево».
Донецкий национальный университет
Кафедра компьютерных технологий
Отчет
по лабораторной работе №1
«Стандартные средства организации распределенных приложений»
Выполнила студентка
Вовченко М.
Донецк 2011
Индивидуальное задание
Кластеризация сессий контейнера сервлетов Jetty с использованием Terracotta.
Необходимое ПО:
-
J2SE 1.5 или старше
-
Jetty 6.1.12 или старше
-
Terracotta 2.6.4 или старше
-
Jetty TIM (Terracotta Integration Module) v. 6.1-1.0.4
Также нужно скопировать jetty-terracotta-sessions-6.1.12.jar в папку $JETTY_HOME>/lib/ext/
Конфигурация файлов Jetty
Конфигурация Jetty для использования Terracotta состоит в создании одного менеджера идентификаторов сессий Terracotta на каждый экземпляр Jetty, чтобы генерировать уникальные идентификаторы сессий, а затем установка специального менеджера сессий Terracotta на каждое веб-приложение, которое должно быть кластеризовано.
Менеджер идентификаторов сессий Terracotta (TerracottaSessionIdManager)
Один менеджер конфигурируется для каждого экземпляра Jetty, для генерации уникальных идентификаторов сессий. Для его настройки нужно добавить следующие строки в файл $JETTY_HOME/etc/jetty-terracotta.xml:
<Configure id="Server" class="org.mortbay.jetty.Server">
<New id="tcIdManager" class="org.mortbay.terracotta.servlet.TerracottaSessionIdManager">
<Arg>
<Ref id="Server" />
</Arg>
<Set name="workerName">
<SystemProperty name="jetty.node" default="node1" />
</Set>
</New>
<Call name="setAttribute">
<Arg>tcIdManager</Arg>
<Arg>
<Ref id="tcIdManager" />
</Arg>
</Call>
</Configure>
Менеджер идентификаторов сохраняется как атрибут в экземпляре сервера для дальнейшего поиска под именем tcIdManager. workerName это уникальное имя для нода Jetty. В примере это имя – node1.
Менеджер сессий Terracotta (TerracottaSessionManager)
Каждое веб-приложение, чьи сессии нужно кластеризовать, должно использовать TerracottaSessionManager вместо HashSessionManager, используемого по умолчанию. Для этого нужно добавить в файл конфигурации развертывания приложения следующие строки:
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
...
<Property name="Server" id="Server">
<Call id="tcIdManager" name="getAttribute">
<Arg>tcIdManager</Arg>
</Call>
</Property>
<Set name="sessionHandler">
<New class="org.mortbay.terracotta.servlet.TerracottaSessionHandler">
<Arg>
<New class="org.mortbay.terracotta.servlet.TerracottaSessionManager">
<Set name="idManager">
<Ref id="tcIdManager" />
</Set>
</New>
</Arg>
</New>
</Set>
...
</Configure>
Эти строки обеспечивают установку TerracottaSessionManager для каждого веб-приложения и что этот менеджер имеет доступ к уникальному TerracottaSessionIdManager экземпляру Jetty, сконфигурированному выше.
Примечание: также для каждого экземпляра Jetty нужно создать свой конфигурационный файл jetty.xml, в котором нужно указать уникальный порт сервера.
Конфигурация файлов Terracotta
На каждый экземпляр Jetty создается отдельный конфигурационный файл Terracotta. В конфигурационном файле часть настроек необходима, чтобы установить правильную интеграцию Jetty и Terracotta, а остальная часть конфигурации необходима, чтобы настроить сервер Terracotta и веб-приложения.
Базовый файл конфигурации Terracotta выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<tc:tc-config xmlns:tc="http://www.terracotta.org/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.terracotta.org/config http://www.terracotta.org/schema/terracotta-4.xsd">
<servers>
<server host="localhost">
<data>%(user.dir)/terracotta/server-data</data>
<logs>%(user.dir)/terracotta/server-logs</logs>
</server>
</servers>
<clients>
<modules>
<module name="tim-jetty-6.1" version="1.0.4" />
</modules>
<logs>%(user.dir)/terracotta/client-logs</logs>
</clients>
<application>
<dso>
<instrumented-classes>
<include>
<class-expression>...</class-expression>
</include>
</instrumented-classes>
</dso>
</application>
</tc:tc-config>
Файл конфигурации можно создать в любом месте на диске. Он подключается на этапе запуска экземпляра Jetty.
Также можно задать местоположение сервера Terracotta (по умолчанию localhost) при помощи атрибута host элемента server.
Если приложение использует пользовательские классы, их необходимо описать в секции application. Пример использования пользовательского класса com.acme.domain.User:
<tc:tc-config ...>
...
<application>
<dso>
<instrumented-classes>
<include>
<class-expression>com.acme.domain.User</class-expression>
</include>
</instrumented-classes>
</dso>
</application>
...
</tc:tc-config>
Запуск Jetty и Terracotta
Сначала запускаем сервер Terracotta:
$TC_HOME/bin/start-tc-server.bat
Затем запускаем экземпляры Jetty
cd $JETTY_HOME
$TERRACOTTA_HOME/bin/dso-java.bat –Dtc.config=tc-config.xml –jar start.jar etc/jetty.xml etc/jetty-terracotta.xml
Таким образом, мы решили проблему сохранения сессии на случай «падения» одного или нескольких серверов Jetty или же при перенаправлении пользователя на другой сервер кластера. Однако осталась проблема балансировки нагрузки. Мы не можем управлять перенаправлением пользователей на сервера в зависимости от их загруженности. Каждый сервер Jetty привязан к своему адресу, так что пользователю приходится явно указывать адрес конкретного экземпляра сервера в адресной строке браузера. Для решения этой проблемы необходимо воспользоваться специализированным ПО – балансировщиком, т.к. ни в Jetty ни в Terracotta нет готового решения этой проблемы.