Санкт-Петербургский Государственный Университет Математико-механический факультет





НазваниеСанкт-Петербургский Государственный Университет Математико-механический факультет
страница13/13
Дата публикации16.08.2013
Размер0.61 Mb.
ТипДипломная работа
100-bal.ru > Информатика > Дипломная работа
1   ...   5   6   7   8   9   10   11   12   13

События


В данный момент существуют серверы [28], которые позволяют создавать comet-соединения [29]. То есть такие, что сервер, может отправлять (push) данные клиенту. Это похоже на сокеты, но в данной модели важно, что сервер может посылать уведомления, клиент же не может.

Таким образом, клиент может соединиться с сервером и получать от него уведомления о произошедших событиях. Решение поддержки такой возможности было принято уже после разработки основных возможностей RPC и показывает, что использование метапрограммирования и своей реализации системы удаленного вызова процедур, позволяет сколь угодно расширять решение и получать результаты, которые не реализованы ещё нигде или реализованы, но не применимы. Например, comet-соединение поддержано в GWT-RPC, то есть только для Java.

События расширили существующее RPC. Для этого потребовалось добавить конструкцию, которая позволяла повестить листенер не некоторое событие, а также посылать эти события с сервера на клиент.

Ниже (лист.13) указан пример того, как в сервисе выглядит описание добавления слушателя на некоторый объект.

add listener (UserListener listener) for (User user);

Листинг 13. Пример добавление слушателя на событие

Также потребовалось описать язык listeners, который содержит интерфейсы листенеров. Он практически эквивалентен языку сервисов с некоторыми уточнениями.

Реализация данной системы помогла добиться уменьшения потребления трафика за счёт отсутствия запросов на сервер. Также она помогла уменьшить нагрузку на сервер, так как позволила избавиться от запросов состояние системы, которые обращаются к базе данных при выполнении: обращения на считывание информации большей частью теперь происходят при создании соединения (первом или переподключении), изменение же состояния системы приходит в событиях.

Тестирование


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

Остальная же часть тестирования проводилась в рамках всего проекта, то есть функционально. Поэтому данное решение является стабильным, количество возможных ошибок сведено к минимуму. Кроме того было проведено тестирование удобства дизайна языка: нескольким разработчиком было предложено воспользоваться языком для сервисов и выявить основные недостатки и предложения, также им было предложено рассмотреть языки других существующих решений. Данный опыт выявил отсутствие особых замечаний к дизайну.

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

Глава 4. Внедрение


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

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

Проект является высоконагруженной клиент-серверной системой. Уже на момент тестирования имеется передача порядка 10 гигабайтов запросов к серверу в день. Таким образом, производительность RPC важна для проекта. Неоднократно был использован профилятор для выявления узких мест системы, были проведены работы по их устранению.

Также внедрение позволило выявить некоторые утечки в памяти системы на языке Objective C. Поэтому были использование инструменты для выявления утечек памяти. Данные инструменты поставляются компанией Apple и часто являются непривычными для разработчика на языке Java или C#. К концу разработки абсолютно все утечки памяти были устранены.

Заключение


В рамках данной работы были достигнуты следующие основные результаты:

  • Изучен язык Objective C

  • Создан дизайн и реализация собственных языков на платформе MPS

  • Изучены существующие подходы в реализации RPC

  • Реализована система удаленного вызова процедур

  • Придумана и реализована система сжатия

  • Проведено тестирование результатов работы


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

Основной целью являлось реализовать систему, которая сможет быть пригодной для использования на разных платформах и разных языках, а также будет лучше по некоторым параметрам, чем существующие решения. Одним из таких параметров является простота: решение удобно и просто использовать. Другой критерий – функциональность: в языке присутствуют события, такого нет в аналогичных системах. Ещё одним параметром является степень сжатия, при этом производительность не должна сильно ухудшиться. Были произведены замеры сжатия данного RPC и других популярных кодирующих систем. Стоит учесть, что оптимизация сжатия производилась не основе предположения о существовании идентификаторов сущностей, а также идентификаторов вызываемых методов. Кроме того полагалось, что передаваемые данные в среднем достаточно велики, а не ограничены 100 байтами. Поэтому тестирование проводилось на реальных данных и результаты являются среднестатистическими.

Ниже указана диаграмма (д-ма.1), в которой приведены результаты сравнения степени сжатия сообщений различными решениями, а также диаграмма (д-ма.2), в которой указана скорость сжатия этих сообщений. Технология, разработанная в рамках данного диплома, носит название myRPC в этих диаграммах.
Диаграмма 1. Сравнение степени сжатия
Диаграмма 2. Сравнение скорости сжатия

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

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

Литература


  1. Sergey Dmitriev, Language Oriented Programming: The Next Programming Paradigm, 2004 http://www.jetbrains.com/mps/docs/Language_Oriented_Programming.pdf

  2. Среда разработки JetBrains MPS

http://confluence.jetbrains.net/display/MPS/Welcome+to+JetBrains+MPS+Space

  1. Спецификация XML-RPC

http://www.xmlrpc.com/spec

  1. Спецификация SOAP

http://www.w3.org/TR/soap/

  1. Официальный портал JSON-RPC

http://json-rpc.org/

  1. Accessing Objects in Other Application Domains Using .NET Remoting

http://msdn.microsoft.com/en-us/library/72x4h507%28v=VS.71%29.aspx

  1. Официальный портал Remote Method Invocation

http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136424.html

  1. Официальный портал Corba

http://www.corba.org/

  1. Документация по GWT-RPC

http://code.google.com/intl/ru-RU/webtoolkit/doc/latest/tutorial/RPC.html

  1. Спецификация ONC-RPC версии 2

http://tools.ietf.org/html/rfc5531

  1. Официальный портал OpenDCE

http://www.opengroup.org/dce/

  1. Портал DCE/RPC поставляемой Apple

http://www.dcerpc.org/

  1. Официальный портал Routix.PRC

http://www.routix.net/rpc/

  1. Michi Henning, Mark Spruiell, Distributed Programming with Ice

http://www.zeroc.com/doc/Ice-3.4.1-IceTouch/manual/index.html

  1. Спецификация Burlap

http://hessian.caucho.com/doc/burlap-1.0-spec.xtp

  1. Спецификация Hessian

http://hessian.caucho.com/doc/hessian-1.0-spec.xtp

  1. Specification of Packed Encoding Rules

http://www.itu.int/ITU-T/studygroups/com17/languages/X.691-0207.pdf

  1. Apache Etch Documentation

https://cwiki.apache.org/ETCH/documentation.html

  1. Thrift documentation

http://wiki.apache.org/thrift/

  1. Protobuf documentation

http://code.google.com/intl/ru-RU/apis/protocolbuffers/docs/overview.html

  1. Kryo homepage

http://code.google.com/p/kryo/

  1. Protostuff documentation

http://code.google.com/p/protostuff/w/list

  1. Avro documentation

http://avro.apache.org/docs/current/

  1. Comparing varius aspects of Serialization libraries on the JVM platform

http://code.google.com/p/thrift-protobuf-compare/wiki/BenchmarkingV2

  1. Learning Objective-C: A Primer

http://developer.apple.com/library/ios/#referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/_index.html

  1. XCode official page

http://developer.apple.com/technologies/tools/features.html

  1. AppCode official page

http://www.jetbrains.com/objc/

  1. The Channel API

http://code.google.com/intl/en/appengine/docs/java/channel/

  1. Илья Кантор, Передача данных по инициативе сервера, обзор COMET http://javascript.ru/ajax/comet/overview



1   ...   5   6   7   8   9   10   11   12   13

Похожие:

Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский государственный университет Математико-механический факультет
Министерством образования и науки Российской Федерации. В 2012-2013 учебном году литературное образование в школе на базовом уровне...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский государственный морской технический университет...
Рецензия на книгу: С. А. Остроумов "Биотический механизм самоочищения пресных и морских вод: элементы теории и приложения" (Москва,...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconМатематико-механический факультет
Государственное образовательное учреждение высшего профессионального образования
Санкт-Петербургский Государственный Университет Математико-механический факультет icon«Санкт-Петербургский государственный университет» (СПбГУ) Исторический факультет утверждаю
Краснодарский государственный историко-археологический музей-заповедник им. Е. Д. Фелицына
Санкт-Петербургский Государственный Университет Математико-механический факультет iconОбзор современных систем управления бизнес-процессами
Агапова Татьяна, математико-механический факультет, 2 курс
Санкт-Петербургский Государственный Университет Математико-механический факультет iconПсихическое здоровье в Германии и России: Клиническая и исследовательская инициатива
Санкт-Петербургский научно-исследовательский Санкт-Петербургский государственный университет
Санкт-Петербургский Государственный Университет Математико-механический факультет iconМатематико-механический факультет asmpy ассемблер python compiled (*. pyc ) файлов
Государственное образовательное учреждение высшего профессионального образования
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-петербургский Государственный университет Восточный факультет Филиппов Е. А. Аннотация
Метадическая разработка интегрированного урока с использованием возможностей интерактивной доски
Санкт-Петербургский Государственный Университет Математико-механический факультет iconПравительство Российской Федерации Санкт Петербургский государственный...
Муниципальное автономное образовательное учреждение «Средняя общеобразовательная школа №21»
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский центр научно-технической информации «Прогресс»,...
Особенности размещения государственного заказа в связи с изменениями в федеральном
Санкт-Петербургский Государственный Университет Математико-механический факультет icon«Санкт-Петербургский государственный университет» (СПбГУ) Исторический факультет утверждаю
Учебно-методический комплекс по дисциплине «Биохимия молока и мяса» составлен на основе
Санкт-Петербургский Государственный Университет Математико-механический факультет iconПрограмма по формированию навыков безопасного поведения на дорогах...
Санкт-Петербургский Государственный Политехнический Университет, Факультет Иностранных Языков
Санкт-Петербургский Государственный Университет Математико-механический факультет iconРоссийской Федерации Санкт Петербургский государственный университет Физический факультет
Цель изучения дисциплины: Обучение магистрантов аналитическим методам анализа структуры и эволюции нелинейных полей
Санкт-Петербургский Государственный Университет Математико-механический факультет iconОсновная образовательная программа (ооп) бакалавриата, реализуемая...
«Санкт-Петербургский государственный университет телекоммуникаций им проф. М. А. Бонч-Бруевича» (СПбгут) по направлению подготовки...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconОсновная образовательная программа (ооп) бакалавриата, реализуемая...
«Санкт-Петербургский государственный университет телекоммуникаций им проф. М. А. Бонч-Бруевича» (СПбгут) по направлению подготовки...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский государственный университет Факультет философии и политологии
Контрольная работа по дисциплине «Культура речи и деловое общение» является допуском студента заочной формы обучения к зачету


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск