Скачать 0.61 Mb.
|
СобытияВ данный момент существуют серверы [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#. К концу разработки абсолютно все утечки памяти были устранены. ЗаключениеВ рамках данной работы были достигнуты следующие основные результаты:
Результирующим продуктом данного диплома является реализованная и внедренная технология удаленного вызова процедур. Разработка вышла за рамки изначально поставленной задачи: была также реализована система событий, что позволило заметно ослабить нагрузку на сервер. Основной целью являлось реализовать систему, которая сможет быть пригодной для использования на разных платформах и разных языках, а также будет лучше по некоторым параметрам, чем существующие решения. Одним из таких параметров является простота: решение удобно и просто использовать. Другой критерий – функциональность: в языке присутствуют события, такого нет в аналогичных системах. Ещё одним параметром является степень сжатия, при этом производительность не должна сильно ухудшиться. Были произведены замеры сжатия данного RPC и других популярных кодирующих систем. Стоит учесть, что оптимизация сжатия производилась не основе предположения о существовании идентификаторов сущностей, а также идентификаторов вызываемых методов. Кроме того полагалось, что передаваемые данные в среднем достаточно велики, а не ограничены 100 байтами. Поэтому тестирование проводилось на реальных данных и результаты являются среднестатистическими. Ниже указана диаграмма (д-ма.1), в которой приведены результаты сравнения степени сжатия сообщений различными решениями, а также диаграмма (д-ма.2), в которой указана скорость сжатия этих сообщений. Технология, разработанная в рамках данного диплома, носит название myRPC в этих диаграммах. Диаграмма 1. Сравнение степени сжатия Диаграмма 2. Сравнение скорости сжатия Данные диаграммы показывают, что сжатие улучшено на порядок для данных моделей, при этом время на сжатие и распаковку отличается от других решений не столь значительно. При этом kryo использует всевозможные оптимизации применимые конкретно к Java, что невозможно в общем случае. В дальнейшем данная технология будет расширена на другие платформы и языки, будут расширены её возможности. Уже сейчас видно, что данное решение удобно в использовании, предлагает дополнительный функционал, является быстрым и сжимает лучше других существующих решений. Литература
http://confluence.jetbrains.net/display/MPS/Welcome+to+JetBrains+MPS+Space
http://www.xmlrpc.com/spec
http://www.w3.org/TR/soap/
http://json-rpc.org/
http://msdn.microsoft.com/en-us/library/72x4h507%28v=VS.71%29.aspx
http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136424.html
http://www.corba.org/
http://code.google.com/intl/ru-RU/webtoolkit/doc/latest/tutorial/RPC.html
http://tools.ietf.org/html/rfc5531
http://www.opengroup.org/dce/
http://www.dcerpc.org/
http://www.routix.net/rpc/ http://www.zeroc.com/doc/Ice-3.4.1-IceTouch/manual/index.html
http://hessian.caucho.com/doc/burlap-1.0-spec.xtp
http://hessian.caucho.com/doc/hessian-1.0-spec.xtp
http://www.itu.int/ITU-T/studygroups/com17/languages/X.691-0207.pdf
https://cwiki.apache.org/ETCH/documentation.html
http://wiki.apache.org/thrift/
http://code.google.com/intl/ru-RU/apis/protocolbuffers/docs/overview.html
http://code.google.com/p/kryo/
http://code.google.com/p/protostuff/w/list
http://avro.apache.org/docs/current/
http://code.google.com/p/thrift-protobuf-compare/wiki/BenchmarkingV2
http://developer.apple.com/library/ios/#referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/_index.html
http://developer.apple.com/technologies/tools/features.html
http://www.jetbrains.com/objc/
http://code.google.com/intl/en/appengine/docs/java/channel/
|
Санкт-Петербургский государственный университет Математико-механический факультет Министерством образования и науки Российской Федерации. В 2012-2013 учебном году литературное образование в школе на базовом уровне... | Санкт-Петербургский государственный морской технический университет... Рецензия на книгу: С. А. Остроумов "Биотический механизм самоочищения пресных и морских вод: элементы теории и приложения" (Москва,... | ||
Математико-механический факультет Государственное образовательное учреждение высшего профессионального образования | «Санкт-Петербургский государственный университет» (СПбГУ) Исторический факультет утверждаю Краснодарский государственный историко-археологический музей-заповедник им. Е. Д. Фелицына | ||
Обзор современных систем управления бизнес-процессами Агапова Татьяна, математико-механический факультет, 2 курс | Психическое здоровье в Германии и России: Клиническая и исследовательская инициатива Санкт-Петербургский научно-исследовательский Санкт-Петербургский государственный университет | ||
Математико-механический факультет asmpy ассемблер python compiled (*. pyc ) файлов Государственное образовательное учреждение высшего профессионального образования | Санкт-петербургский Государственный университет Восточный факультет Филиппов Е. А. Аннотация Метадическая разработка интегрированного урока с использованием возможностей интерактивной доски | ||
Правительство Российской Федерации Санкт Петербургский государственный... Муниципальное автономное образовательное учреждение «Средняя общеобразовательная школа №21» | Санкт-Петербургский центр научно-технической информации «Прогресс»,... Особенности размещения государственного заказа в связи с изменениями в федеральном | ||
«Санкт-Петербургский государственный университет» (СПбГУ) Исторический факультет утверждаю Учебно-методический комплекс по дисциплине «Биохимия молока и мяса» составлен на основе | Программа по формированию навыков безопасного поведения на дорогах... Санкт-Петербургский Государственный Политехнический Университет, Факультет Иностранных Языков | ||
Российской Федерации Санкт Петербургский государственный университет Физический факультет Цель изучения дисциплины: Обучение магистрантов аналитическим методам анализа структуры и эволюции нелинейных полей | Основная образовательная программа (ооп) бакалавриата, реализуемая... «Санкт-Петербургский государственный университет телекоммуникаций им проф. М. А. Бонч-Бруевича» (СПбгут) по направлению подготовки... | ||
Основная образовательная программа (ооп) бакалавриата, реализуемая... «Санкт-Петербургский государственный университет телекоммуникаций им проф. М. А. Бонч-Бруевича» (СПбгут) по направлению подготовки... | Санкт-Петербургский государственный университет Факультет философии и политологии Контрольная работа по дисциплине «Культура речи и деловое общение» является допуском студента заочной формы обучения к зачету |