Исследование и разработка методов построения. Платформы распределенного управления

Изначально World Wide Web (WWW) представлялась ее создателям как "пространство для обмена информацией, в котором люди и компьютеры могут общаться между собой". Поэтому первые Веб-приложения представляли собой примитивные файловые серверы, которые возвращали статические HTML-страницы запросившим их клиентам. Таким образом, Веб начиналась как документо-ориентированная.

Следующим этапом развития Веб стало появление понятия приложений, которые базировались на таких интерфейсах, как CGI (или FastCGI), а в дальнейшем – на ISAPI. Common Gateway Interface (CGI) – это стандартный интерфейс работы с серверами, позволяющий выполнять серверные приложения, вызываемые через URL. Входной информацией для таких приложений служило содержимое HTTP-заголовка (и тело запроса при использовании протокола POST). CGI-приложения генерировали HTML-код, который возвращался браузеру. Основной проблемой CGI-приложений было то, что при каждом клиентском запросе сервер выполнял CGI-программу в реальном времени, загружая ее в отдельное адресное пространство.

Появление Internet Server API (ISAPI) позволило не только решить проблемы производительности, которые возникали с CGI-приложениями, но и предоставить в распоряжение разработчиков более богатый программный интерфейс. ISAPI DLL можно было ассоциировать с расширениями имен файлов через специальную мета-базу. Эти два механизма (CGI и ISAPI) послужили основой создания первого типа Веб-приложений, в которых, в зависимости от каких-либо клиентских действий, выполнялся серверный код. Таким образом, стала возможной динамическая генерация содержимого Веб-страниц и наполнение Веб перестало быть чисто статическим.

Интерфейс ISAPI – это особенность Microsoft Internet Information Server. ISAPI-приложения представляют собой динамические загружаемые библиотеки (DLL), которые выполняются в адресном пространстве Веб-сервера. У других Веб-серверов через некоторое время также появилась возможность выполнять приложения, реализованные в виде библиотек. В случае Веб-серверов Netscape этот программный интерфейс назывался NSAPI (Netscape Server API). У довольно популярного Веб-сервера Apache также имеется возможность выполнять Веб-приложения, реализованные в виде библиотек; такие библиотеки называются Apache DSO (Dynamic Shared Objects ).

Естественно, что при использовании как CGI-, так и ISAPI-приложений разработчики в основном решали одни и те же задачи, поэтому естественным шагом стало появление нового, высокоуровневого интерфейса, который упростил задачи генерации HTML-кода, позволил обращаться к компонентам и использовать базы данных. Таким интерфейсом стала объектная модель Active Server Pages (ASP), построенная на основе ISAPI-фильтра.

Основной идеей ASP с точки зрения создания интерфейса приложения является то, что на Веб-странице присутствуют фрагменты кода, который интерпретируется Веб-сервером и вместо которого пользователь получает результат выполнения этих фрагментов кода.

Вскоре после появления ASP были созданы и другие технологии, реализующие идею размещения внутри Веб-страницы кода, выполняемого Веб-сервером. Наиболее известная из них на сегодняшний день – технология JSP (Java Server Pages), основной идеей которой является однократная компиляция Java-кода (сервлета) при первом обращении к нему, выполнение методов этого сервлета и помещение результатов выполнения этих методов в набор данных, отправляемых в браузер.

Новейшая версия технологии Active Server Pages – ASP .NET, являющаяся ключевой в архитектуре Microsoft .NET Framework. С помощью ASP .NET можно создавать Веб-приложения и Веб-сервисы, которые не только позволяют реализовать динамическую генерацию HTML-страниц, но и интегрируются с серверными компонентами и могут использоваться для решения широкого круга бизнес-задач, возникающих перед разработчиками современных Веб-приложений.

В общем случае клиентом Веб-сервера может быть не только персональный компьютер, оснащенный обычным Веб-браузером. Одновременно с широким распространением мобильных устройств появилась и проблема предоставления Веб-серверами данных, которые могут быть интерпретированы этими устройствами. Поскольку мобильные устройства обладают характеристиками, отличными от характеристик персональных компьютеров (ограниченным размером экрана, малым объемом памяти, а нередко и невозможностью отобразить что-либо, кроме нескольких строк черно-белого текста), для них существуют и другие протоколы передачи данных (WAP – Wireless Access Protocol) и соответствующие языки разметки ( WML – Wireless Markup Language, СHTML – Compact HTML и т.п.). При этом возникает задача передачи данных на мобильное устройство в соответствующем формате (и для этой цели существуют специальные сайты), либо, что представляется более удобным, происходит опознание типа устройства в момент его обращения к серверу и преобразование исходного документа (например, в формате XML) в формат, требующийся данному мобильному устройству (например, с помощью XSLT-преобразования).

Другим способом поддержки различных типов клиентов является создание "разумных" серверных компонентов, которые способны генерировать различный код в зависимости от типа клиента. Такой подход, в частности, реализован в Microsoft ASP .NET.

Другим направлением развития клиентских частей Веб-приложений стало размещение некоторой части логики приложения (такой как проверка корректности вводимых данных) в самом Веб-браузере. В частности, современные Веб-браузеры способны интерпретировать скриптовые языки (VBScript, JavaScript), код на которых, как и ASP-код, внедряется в Веб-страницу, но интерпретируется не Веб-сервером, а браузером и соответственно выполняется на клиентском устройстве. Кроме того, современные браузеры способны отображать и выполнять Java-аплеты – специальные Java-приложения, которые пользователь получает в составе Веб-страницы, а некоторые из браузеров могут также служить контейнерами для элементов управления ActiveX – выполняющихся в адресном пространстве браузера специальных COM-серверов, также получаемых в составе Веб-страницы. И в Java-аплетах, и в элементах управления ActiveX можно реализовать практически любую функциональность.

Отметим, что с ростом объема используемых данных и числа посетителей Веб-сайтов возрастают и требования к надежности, производительности и масштабируемости Веб-приложений. Следующим этапом эволюции подобных приложений стало отделение бизнес-логики, реализованной в Веб-приложении, а нередко и сервисов обработки данных и реализации транзакций от его интерфейса. В этом случае в самом Веб-приложении обычно остается так называемая презентационная часть, а бизнес-логика, обработка данных и реализация транзакций переносятся в сервер приложений в виде бизнес-объектов. В зависимости от типа сервера приложений подобные бизнес-объекты могут быть выполняющимися самостоятельно COM-серверами, CORBA-серверами, а также объектами COM+, выполняющимися с помощью служб компонентов Windows 2000, или объектами EJB (Enterprise Java Beans), исполняемыми сервером приложений , поддерживающим спецификаци ю J2EE (Java 2 Enterprise Edition). В качестве механизма доступа к данным подобные объекты могут использовать OLE DB, ODBC, JDBC (это зависит от того, как реализован бизнес-объект).

Нередко подобные бизнес-объекты предоставляют доступ к данным корпоративных информационных систем либо реализуют какую-либо часть их функциональности. Нередко они позволяют, например, интегрировать Веб-сайт с CRM-системами (Customer Relationship Management) или с ERP-системами (Enterprise Resource Planning), сохраняя в корпоративных системах сведения о посетителях сайта и предоставляя потенциальным клиентам сведения об имеющейся продукции для осуществления заказов.

Поскольку современный Интернет – это не столько средство демонстрации присутствия компании на рынке или инструмент маркетинга, сколько инструмент ведения бизнеса, достаточно важными становятся задачи реализации организации через Интернет таких взаимоотношений с клиентами, как продажа товаров и услуг. И здесь довольно важными становятся решения для электронной коммерции типа "предприятие-клиент" ( B2C – business-to-consumer). Не менее важными становятся и задачи интеграции Веб-приложений c данными и приложениями партнеров с целью реализации схемы "предприятие-предприятие" ( B2B – business-to-business), позволяющей заключать торговые сделки между предприятиями, обмениваться каталогами товаров, проводить аукционы, создавать электронные торговые площадки.

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

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

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

Обобщая вышесказанное можно выделить основные особенности веб-архитектуры [ , ]:

  • отсутствие необходимости использовать дополнительное ПО на стороне клиента – это позволяет автоматически реализовать клиентскую часть на всех платформах;
  • возможность подключения практически неограниченного количества клиентов;
  • благодаря единственному месту хранения данных и наличия системы управления базами данных обеспечиваются минимальные требования для поддержания целостности данных;
  • доступность при работоспособности сервера и каналов связи;
  • недоступность при отсутствии работоспособности сервера или каналов связи;
  • достаточно низкая скорость Веб сервера и каналов передачи данных;
  • относительно объема данных – архитектура Веб систем не имеет существенных ограничений.

Схематически такую архитектуру (в трехзвенном варианте) можно представить, как показано на рис. 5.9 .


Рис. 5.9.

5.1.8. Сервис-ориентированная архитектура

Решение многих описанных выше задач, возникающих при создании современных Веб-приложений, теперь начинает возлагаться на Веб-сервисы – не зависящие от платформы, объектной модели и клиента программные компоненты, которые можно вызывать из клиентских Веб-приложений (а также из самих Веб-сервисов) через основанный на протоколе HTTP и языке XML протокол SOAP . Для описания Веб-сервисов используется XML-подобный язык WSDL, а для организации реестров Веб-сервисов, в которых разработчики и компании могут искать необходимые им сервисы, а также публиковать данные о своих сервисах – интерфейс UDDI .

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

(SOA, service-oriented architecture) – модульный подход к разработке программного обеспечения, основанный на использовании сервисов (служб) со стандартизированными интерфейсами .

OASIS (Организация по распространению открытых стандартов структурированной информации) определяет SOA следующим образом ( OASIS Reference Model for Service Oriented Architecture V 1.0): Сервисно-ориентированная архитектура – это парадигма организации и использования распределенных информационных ресурсов таких как: приложения и данные, находящихся в сфере ответственности разных владельцев, для достижения желаемых результатов потребителем, которым может быть: конечный пользователь или другое приложение.

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

Компоненты программы могут быть распределены по разным узлам сети, и предлагаются как независимые, слабо связанные, заменяемые сервисы-приложения. Программные комплексы, разработанные в соответствии с SOA, часто реализуются как набор веб-сервисов, интегрированных при помощи известных стандартных протоколов (SOAP, WSDL, и т. п.)

Интерфейс компонентов SОА-программы предоставляет инкапсуляцию деталей реализации конкретного компонента (ОС, платформы, языка программирования, вендора, и т. п.) от остальных компонентов. Таким образом, SOA предоставляет гибкий и элегантный способ комбинирования и многократного использования компонентов для построения сложных распределенных программных комплексов.

SOA хорошо зарекомендовала себя для построения крупных корпоративных программных приложений. Целый ряд разработчиков и интеграторов предлагают инструменты и решения на основе SOA (например, платформы IBM WebSphere, Oracle/BEA Aqualogic, Microsoft Windows Communication Foundation, SAP NetWeaver, ИВК Юпитер, TIBCO, Diasoft).

Основными целями применения SOA для крупных информационных систем, уровня предприятия, и выше являются :

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

Принципы SOA:

  • архитектура , как таковая, не привязана к какой-то определенной технологии;
  • независимость организации системы от используемой вычислительной платформы (платформ);
  • независимость организации системы от применяемых языков программирования;
  • использование сервисов, независимых от конкретных приложений, с единообразными интерфейсами доступа к ним;
  • организация сервисов как слабосвязанных компонентов для построения систем.

Архитектура не привязана к какой-то определенной технологии. Она может быть реализована с использованием широкого спектра технологий, включая такие технологии как REST, RPC, DCOM, CORBA или веб-сервисы. SOA может быть реализована, используя один из этих протоколов и, например, может использовать, дополнительно, механизм файловой системы, для обмена данными.

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

SOA также может рассматриваться как стиль архитектуры информационных систем, который позволяет создавать приложения, построенные путем комбинации слабосвязанных и взаимодействующих сервисов. Эти сервисы взаимодействуют на основе какого-либо строго определенного платформо-независимого и языково-независимого интерфейса (например, WSDL). Определение интерфейса скрывает языково-зависимую реализацию сервиса.

Таким образом, системы, основанные на SOA, могут быть независимы от технологий разработки и платформ (таких как Java, .NET и т. д.). К примеру, сервисы, написанные на C#, работающие на платформах.Net и сервисы на Java, работающие на платформах Java EE , могут быть с одинаковым успехом вызваны общим составным приложением. Приложения, работающие на одних платформах, могут вызывать сервисы, работающие на других платформах, что облегчает повторное использование компонентов.

, , Терминал , Сервер приложений , Сервер базы данных , Архитектура распределенных систем , , Сервис-ориентированная архитектура .

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

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

1.1 Принципы построения распределенных веб-систем

Что именно означает создание и управление масштабируемым веб-сайтом или приложением? На примитивном уровне это просто соединение пользователей с удаленными ресурсами через Интернет. А ресурсы или доступ к этим ресурсам, которые рассредоточены на множестве серверов и являются звеном, обеспечивающим масштабируемость веб-сайта.

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

  • Доступность: длительность работоспособного состояния веб-сайта критически важна по отношению к репутации и функциональности многих компаний. Для некоторых более крупных онлайновых розничных магазинов, недоступность даже в течение нескольких минут может привести к тысячам или миллионам долларов потерянного дохода. Таким образом, разработка их постоянно доступных и эластичных к отказу систем и является и фундаментальным деловым и технологическим требованием. Высокая доступность в распределенных системах требует внимательного рассмотрения избыточности для ключевых компонентов, быстрого восстановления после частичных системных отказов и сглаженного сокращения возможностей при возникновении проблем.
  • Производительность: Производительность веб-сайта стала важным показателем для большинства сайтов. Скорость веб-сайта влияет на работу и удовлетворенность пользователей, а также ранжирование поисковыми системами - фактор, который непосредственно влияет на удержание аудитории и доход. В результате, ключом является создание системы, которая оптимизирована для быстрых ответов и низких задержек.
  • Надежность: система должна быть надежной, таким образом, чтобы определенный запрос на получение данных единообразно возвращал определенные данные. В случае изменения данных или обновления, то тот же запрос должен возвращать новые данные. Пользователи должны знать, если что-то записано в систему или храниться в ней, то можно быть уверенным, что оно будет оставаться на своем месте для возможности извлечения данных впоследствии.
  • Масштабируемость: Когда дело доходит до любой крупной распределенной системы, размер оказывается всего лишь одним пунктом из целого списка, который необходимо учитывать. Не менее важным являются усилия, направленные на увеличение пропускной способности для обработки больших объемов нагрузки, которая обычно и именуется масштабируемость системы. Масштабируемость может относиться к различным параметрам системы: количество дополнительного трафика, с которым она может справиться, насколько легко нарастить ёмкость запоминающего устройства, или насколько больше других транзакций может быть обработано.
  • Управляемость: проектирование системы, которая проста в эксплуатации еще один важный фактор. Управляемость системы приравнивается к масштабируемости операций «обслуживание" и «обновления». Для обеспечения управляемости необходимо рассмотреть вопросы простоты диагностики и понимания возникающих проблем, легкости проведения обновлений или модификации, прихотливости системы в эксплуатации. (То есть, работает ли она как положено без отказов или исключений?)
  • Стоимость: Стоимость является важным фактором. Она, очевидно, может включать в себя расходы на аппаратное и программное обеспечение, однако важно также рассматривать другие аспекты, необходимые для развертывания и поддержания системы. Количество времени разработчиков, требуемое для построения системы, объем оперативных усилий, необходимые для запуска системы, и даже достаточный уровень обучения - все должно быть предусмотрено. Стоимость представляет собой общую стоимость владения.

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

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

1.2 Основы

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

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

Пример: Приложение хостинга изображений

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

Вообразите систему, где пользователи имеют возможность загрузить свои изображения на центральный сервер, и при этом изображения могут запрашиваться через ссылку на сайт или API, аналогично Flickr или Picasa. Для упрощения описания давайте предположим, что у этого приложения есть две основные задачи: возможность загружать (записывать) изображения на сервер и запрашивать изображения. Безусловно, эффективная загрузка является важным критерием, однако приоритетом будет быстрая доставка по запросу пользователей (например, изображения могут быть запрошены для отображения на веб-странице или другим приложением). Эта функциональность аналогична той, которую может обеспечить веб-сервер или граничный сервер Сети доставки контента (Content Delivery Network, CDN). Сервер CDN обычно хранит объекты данных во многих расположениях, таким образом, их географическое/физическое размещение оказывается ближе к пользователям, что приводит к росту производительности.

Другие важные аспекты системы:

  • Количество хранимых изображений может быть безгранично, таким образом, масштабируемость хранения необходимо рассматривать именно с этой точки зрения.
  • Должна быть низкая задержка для загрузок/запросов изображения.
  • Если пользователь загружает изображение на сервер, то его данные должны всегда оставаться целостными и доступными.
  • Система должна быть простой в обслуживании (управляемость).
  • Так как хостинг изображений не приносит большой прибыли, система должна быть экономически эффективной.

Другая потенциальная проблема с этим дизайном состоит в том, что у веб-сервера, такого как Apache или lighttpd обычно существует верхний предел количества одновременных соединений, которые он в состоянии обслужить (значение по умолчанию - приблизительно 500, но оно может быть намного выше), и при высоком трафике записи могут быстро израсходовать этот предел. Так как чтения могут быть асинхронными или использовать в своих интересах другую оптимизацию производительности как gzip-сжатие или передача с делением на порции, веб-сервер может переключить чтения подачи быстрее и переключиться между клиентами, обслуживая гораздо больше запросов, чем максимальное число соединений (с Apache и максимальным количеством соединений, установленном в 500, вполне реально обслуживать несколько тысяч запросов чтения в секунду). Записи, с другой стороны, имеют тенденцию поддерживать открытое соединение на протяжении всего времени загрузки. Так передача файла размером 1 МБ на сервер могла занять больше 1 секунды в большинстве домашних сетей, в результате веб-сервер сможет обработать только 500 таких одновременных записей.


Рисунок 1.2: Разделение чтения и записи

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

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

Конечно, работа вышеупомянутой модели будет оптимальной, в случае наличия двух различных конечных точек (фактически, это очень похоже на несколько реализаций провайдеров «облачного» хранилища и Сетей доставки контента). Существует много способов решения подобных проблем, и в каждом случае можно найти компромисс.

К примеру, Flickr решает эту проблему чтения-записи, распределяя пользователи между разными модулями, таким образом, что каждый модуль может обслуживать только ограниченное число определенных пользователей, и когда количество пользователи увеличиваются, больше модулей добавляется к кластеру (см. презентацию масштабирования Flickr,
http://mysqldba.blogspot.com/2008/04/mysql-uc-2007-presentation-file.html). В первом примере проще масштабировать аппаратные средства на основе фактической нагрузки использования (число чтений и записей во всей системе), тогда как масштабировние Flickr просиходит на основе базы пользователей(однако, здесь используется предположение равномерного использования у разных пользователей, таким образом, мощность нужно планировать с запасом). В прошлом недоступность или проблема с одной из служб приводили в нерабочее состояние функциональность целой системы (например, никто не может записать файлы), тогда недоступность одного из модулей Flickr будет влиять только на пользователей, относящихся к нему. В первом примере проще выполнить операции с целым набором данных - например, обновляя службу записи, чтобы включить новые метаданные, или выполняя поиск по всем метаданным изображений - тогда как с архитектурой Flickr каждый модуль должен был быть подвергнут обновлению или поиску (или поисковая служба должна быть создана, чтобы сортировать те метаданные, которые фактически для этого и предназначены).

Что касается этих систем - не существует никакой панацеи, но всегда следует исходить из принципов, описанных в начале этой главы: определить системные потребности (нагрузка операциями «чтения» или «записи» или всем сразу, уровень параллелизма, запросы по наборам данных, диапазоны, сортировки, и т.д.), провести сравнительное эталонное тестирование различных альтернатив, понять условия потенциального сбоя системы и разработать комплексный план на случай возникновения отказа.

Избыточность

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

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

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

.

Другая ключевая роль избыточности службы - создание архитектуры, не предусматривающей разделения ресурсов . С этой архитектурой каждый узел в состоянии работать самостоятельно и, более того, в отсутствие центрального «мозга», управляющего состояниями или координирующего действия других узлов. Она способствует масштабируемости, так как добавление новых узлов не требует специальных условий или знаний. И что наиболее важно, в этих системах не найдется никакой критически уязвимой точки отказа, что делает их намного более эластичными к отказу.

.

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


Рисунок 1.3: Приложение хостинга изображений с избыточностью

Сегментирование

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

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

Горизонтальное масштабирование, с другой стороны, предполагает добавление большего количества узлов. В случае большого набора данных это означало бы добавление второго сервера для хранения части всего объема данных, а для вычислительного ресурса это означало бы разделение работы или загрузки через некоторые дополнительные узлы. Чтобы в полной мере воспользоваться потенциалом горизонтального масштабирования, его необходимо реализовать как внутренний принцип разработки архитектуры системы. В противном случае изменение и выделение контекста, необходимого для горизонтального масштабирования может оказаться проблематичным.

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

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


Рисунок 1.4: Приложение хостинга изображений с избыточностью и сегментированием

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

Другая потенциальная проблема возникает в форме
несогласованности (неконсистетности) .Когда различные сервисы выполняют считывание и запись на совместно используемом ресурсе, потенциально другой службе или хранилище данных, существует возможность возникновения условий «состязания» - где некоторые данные считаются обновленными до актуального состояния, но в реальности их считывание происходит до момента актуализации - и таком случае данные неконсистентны. Например, в сценарии хостинга изображений, состояние состязания могло бы возникнуть в случае, если бы один клиент отправил запрос обновления изображения собаки с изменением заголовка «Собака» на «Гизмо», в тот момент, когда другой клиент считывал изображение. В такой ситуации неясно, какой именно заголовок, «Собака» или «Гизмо», был бы получен вторым клиентом.

.

Есть, конечно, некоторые препятствия, связанные с сегментированием данных, но сегментирование позволяет выделять каждую из проблем из других: по данным, по загрузке, по образцам использования, и т.д. в управляемые блоки. Это может помочь с масштабируемостью и управляемостью, но риск все равно присутствует. Есть много способов уменьшения риска и обработки сбоев; однако, в интересах краткости они не охвачены в этой главе. Если Вы хотите получить больше информации по данной теме, вам следует взглянуть на блог-пост по отказоустойчивости и мониторингу.

1.3. Структурные компоненты быстрого и масштабируемого доступа к данным

Рассмотрев некоторые базовые принципы в разработке распределенных систем, давайте теперь перейдем к более сложному моменту - масштабирование доступа к данным.

Самые простые веб-приложения, например, приложения стека LAMP, схожи с изображением на .


Рисунок 1.5: Простые веб-приложения

С ростом приложения возникают две основных сложности: масштабирование доступа к серверу приложений и к базе данных. В хорошо масштабируемом дизайне приложений веб-сервер или сервер приложений обычно минимизируется и часто воплощает архитектуру, не предусматривающую совместного разделения ресурсов. Это делает уровень сервера приложений системы горизонтально масштабируемым. В результате использовании такого дизайна тяжёлый труд сместится вниз по стеку к серверу базы данных и вспомогательным службам; именно на этом слое и вступают в игру настоящие проблемы масштабирования и производительности.

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


Рисунок 1.6: Упрощенное веб-приложение

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

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


Рисунок 1.7: Доступ к определенным данным

Это особенно трудно, потому что загрузка терабайтов данных в память может быть очень накладной и непосредственно влияет на количество дисковых операций ввода-вывода. Скорость чтения с диска в несколько раз ниже скорости чтения из оперативной памяти - можно сказать, что доступ к памяти с так же быстр, как Чак Норрис, тогда как доступ к диску медленнее очереди в поликлинике. Эта разность в скорости особенно ощутима для больших наборов данных; в сухих цифрах доступ к памяти 6 раз быстрее, чем чтение с диска для последовательных операций чтения, и в 100,000 раз - для чтений в случайном порядке (см. «Патологии Больших Данных», http://queue.acm.org/detail.cfm?id=1563874).). Кроме того, даже с уникальными идентификаторами, решение проблемы нахождения местонахождения небольшой порции данных может быть такой же трудной задачей, как и попытка не глядя вытащить последнюю конфету с шоколадной начинкой из коробки с сотней других конфет.

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

Кэши

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

Каким же образом кэш может использоваться для ускорения доступа к данным в рамках нашего примера API? В этом случае существует несколько мест, подходящих размещения кэша. В качестве одного из возможных вариантов размещения можно выбрать узлы на уровне запроса, как показано на
.


Рисунок 1.8: Размещение кэша на узле уровня запроса

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


Рисунок 1.9: Системы кэшей

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

Глобальный кэш

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

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


Рисунок 1.10: Глобальный кэш, где кэш ответственен за извлечение



Рисунок 1.11: Глобальный кэш, где узлы запроса ответственны за извлечение

Большинство приложений, усиливающих глобальные кэши, склонно использовать первый тип, где сам кэш управляет замещением и данными выборки, чтобы предотвратить лавинную рассылку запросов на те же данные от клиентов. Однако, есть некоторые случаи, где вторая реализация имеет больше смысла. Например, если кэш используется для очень больших файлов, низкий процент удачного обращения в кэш приведет к перегрузке кэша буфера неудачными обращениями в кэш; в этой ситуации это помогает иметь большой процент общего набора данных (или горячего набора данных) в кэше. Другой пример - архитектура, где файлы, хранящиеся в кэше, статичны и не должны быть удалены. (Это может произойти из-за основных эксплуатационных характеристик касательно такой задержки данных - возможно, определенные части данных должны оказаться очень быстрыми для больших наборов данных - когда логика приложения понимает стратегию замещения или горячие точки лучше, чем кэш.)

Распределенный кэш

Данные индексы часто хранятся в памяти или где-нибудь очень локально по отношению к входящему запросу клиента. Berkeley DB (BDB) и древовидные структуры данных, которые обычно используются, чтобы хранить данные в упорядоченных списках, идеально подходят для доступа с индексом.

Часто имеется много уровней индексов, которые служат картой, перемещая вас от одного местоположения к другому, и т.д., до тех пор пока вы не получите ту часть данных, которая вам необходима. (См. )


Рисунок 1.17: Многоуровневые индексы

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

Например, предположим, что система хостинга изображений, упомянутая выше, на самом деле размещает изображения книжных страниц, и сервис обеспечивает возможность клиентских запросов по тексту в этих изображениях, ища все текстовое содержимое по заданной теме также, как поисковые системы позволяют вам искать по HTML-содержимому. В этом случае все эти книжные изображения используют очень много серверов для хранения файлов, и нахождение одной страницы для представления пользователю может быть достаточно сложным. Изначально обратные индексы для запроса произвольных слов и наборов слов должны быть легкодоступными; тогда существует задача перемещения к точной странице и месту в этой книге и извлечения правильного изображения для результатов поиска. Таким образом, в этом случае инвертированный индекс отобразился бы на местоположении (таком как книга B), и затем B может содержать индекс со всеми словами, местоположениями и числом возникновений в каждой части.

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

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

И это ключевой момент в крупномасштабных системах, потому что даже будучи сжатыми, эти индексы могут быть довольно большими и затратными для хранения. Предположим, что у нас есть много книг со всего мира в этой системе, - 100,000,000 (см. запись блога «Внутри Google Books»)- и что каждая книга состоит только из 10 страниц (в целях упрощения расчетов) с 250 словами на одной странице: это суммарно дает нам 250 миллиардов слов. Если мы принимаем среднее число символов в слове за 5, и каждый символ закодируем 8 битами (или 1 байтом, даже при том, что некоторые символы на самом деле занимают 2 байта), потратив, таким образом, по 5 байтов на слово, то индекс, содержащий каждое слово только один раз, потребует хранилище емкостью более 1 терабайта. Таким образом, вы видите, что индексы, в которых есть еще и другая информация, такая, как наборы слов, местоположение данных и количества употреблений, могут расти в объемах очень быстро.

Создание таких промежуточных индексов и представление данных меньшими порциями делают проблему «больших данных» более простой в решении. Данные могут быть распределены на множестве серверов и в то же время быть быстродоступны. Индексы - краеугольный камень информационного поиска и база для сегодняшних современных поисковых систем. Конечно, этот раздел лишь в общем касается темы индексирования, и проведено множество исследований о том, как сделать индексы меньше, быстрее, содержащими больше информации (например, релевантность), и беспрепятственно обновляемыми. (Существуют некоторые проблемы с управляемостью конкурирующими условиями, а также с числом обновлений, требуемых для добавления новых данных или изменения существующих данных, особенно в случае, когда вовлечены релевантность или оценка).

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

Балансировщики нагрузки

Наконец, другая критически важная часть любой распределенной системы - балансировщик нагрузки. Балансировщики нагрузки - основная часть любой архитектуры, поскольку их роль заключается в распределении нагрузки между узлами, ответственными за обслуживание запросов. Это позволяет множеству узлов прозрачно обслуживать одну и ту же функцию в системе. (См. .) Их основная цель состоит в том, чтобы обрабатывать много одновременных соединений и направлять эти соединения к одному из запрашиваемых узлов, позволяя системе масштабироваться, просто добавляя узлы, чтобы обслужить большее количество запросов.


Рисунок 1.18: Балансировщик нагрузки

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

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


Рисунок 1.19: Множественные балансировщики нагрузки

Как и прокси, некоторые балансировщики нагрузки могут также направлять запросы по-разному, в зависимости от типа запроса. Они также известны как реверсивные (обратные) прокси.

Управление данными, специфичными для определенного сеанса пользователя, является одной из проблем при использовании балансировщиков нагрузок. На сайте электронной коммерции, когда у Вас есть только один клиент, очень просто позволить пользователям помещать вещи в свою корзину и сохранять ее содержимое между визитами (это важно, так как вероятность продажи товара значительно возрастает, если по возвращении пользователя на сайт, продукт все еще находится в его корзине). Однако если пользователь направлен к одному узлу для первого сеанса, и затем к другому узлу во время его следующего посещения, то могут возникать несоответствия, так как новый узел может не иметь данных относительно содержимого корзины этого пользователя. (Разве вы не расстроитесь, если поместите упаковку напитка Mountain Dew в Вашу корзину, и, когда вернетесь, ее там уже не будет?) Одно из решений может состоять в том, чтобы сделать сеансы «липкими», так чтобы пользователь был всегда направлен к тому же узлу. Однако использование в своих интересах некоторых функций надежности, таких как автоматическая отказоустойчивость, будет существенно затруднено. В этом случае корзина пользователя всегда будет иметь содержание, но если их липкий узел станет недоступным, то будет необходим особый подход, и предположение о содержании корзины не будет больше верно (хотя, стоит надеяться, что это предположение не будет встроено в приложение). Конечно, данную проблему можно решить при помощи других стратегий и инструментов, как описанных в этой главе, таких как службы, так и многих других (как кэши браузера, cookie и перезапись URL).

Если у системы только несколько узлов, то такие приемы, как DNS-карусель, скорее всего окажутся более практичными, чем балансировщики загрузки, которые могут быть дорогими и увеличивать сложность системы добавлением ненужного уровня. Конечно, в больших системах есть все виды различных алгоритмов планирования и выравнивания нагрузки, включая как простые вроде случайного выбора или карусельного алгоритма, так и более сложные механизмы, которые принимают во внимание производительность особенности модели использования системы. Все эти алгоритмы позволяют распределить трафик и запросы, и могут обеспечить полезные инструменты надежности, такие как автоматическая отказоустойчивость или автоматическое удаление поврежденного узла (например, когда он перестает отвечать на запросы). Однако, эти расширенные функции могут сделать диагностику проблем громоздкой. Например, в ситуациях с высокой нагрузкой, балансировщики нагрузки будут удалять узлы, которые могут работать медленно или превышать время ожидания (из-за шквала запросов), что только усугубит ситуацию для других узлов. В этих случаях важен обширный контроль потому, что даже если кажется, что полный системный трафик и нагрузка снижаются (так как узлы обслуживают меньшее количество запросов) - отдельные узлы могут оказаться нагруженными до предела.

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

Очереди

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


Рисунок 1.20: Синхронный запрос

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

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


Рисунок 1.21: Использование очередей для управления запросами

Очереди входа. Механизм работы очереди очень прост: задача приходит, попадает в очередь, и затем «рабочие» принимают следующую задачу, как только у них появляется возможность обработать ее. (См. .) Эти задачи могут представлять собой простые записи в базу данных или что-то столь же сложное как генерация изображения предварительного просмотра для документа. Когда клиент отправляет запросы постановки задач в очередь, ему больше не требуется ожидать результатов выполнения; вместо этого запросы нуждаются только в подтверждении факта их получения должным образом. Это подтверждение может позже служить ссылкой на результаты работы, когда клиент затребует их.

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

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

Очереди - основной принцип в управлении распределенной передачей между различными частями любой крупномасштабной распределенной системы, и есть много способов реализовать их. Есть довольно много реализаций очередей с открытым исходным кодом как RabbitMQ ,
ActiveMQ ,
BeanstalkD , но некоторые также используют службы как

  • масштабирование
  • distributed computing
  • web-разработка
  • Kate Matsudaira
  • Добавить метки

    ПРОЕКТИРОВАНИЯ НА ОСНОВЕ ТЕХНОЛОГИИ ВЕБ-СЕРВИСОВ

    Специальность: 05. 13. 12 – Системы автоматизации проектирования

    Санкт Петербург 2013 2

    Работа выполнена в федеральном государственном бюджетном образовательном учреждении высшего профессионального образования «Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В. И. Ульянова (Ленина), кафедра системы автоматизированного проектирования

    Научный руководитель – доктор технических наук, профессор Дмитревич Геннадий Даниилович

    Официальные оппоненты :

    доктор технических наук, профессор, «Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В. И.

    Ульянова (Ленина), кафедра автоматизированные системы обработки информации и управления Кутузов Олег Иванович кандидат технических наук, Открытое Акционерное Общество "Концерн

    «НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ «АВРОРА»,

    начальник лаборатории Пахоменков Юрий Михайлович

    Ведущая организация : Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики»

    Защита диссертации состоится «23» мая 2013 г. в 16.30 часов на заседании диссертационного совета Д212.238.02 Санкт-Петербургского государственного электротехнического университета «ЛЭТИ» им. В.И.

    Ульянова (Ленина) по адресу: 197376, г.Санкт-Петербург, ул. Профессора Попова, д. 5.

    С диссертацией можно ознакомиться в библиотеке СПбГЭТУ Автореферат разослан «_» 2013 г.

    Ученый секретарь Диссертационного совета Д212.238.02 Н. М. Сафьянников

    ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ

    Актуальность исследования Широкое внедрение систем автоматизированного проектирования в практику инженерных задач существенно ограничивается высокой стоимостью лицензионного программного обеспечения. Наряду с этим создание собственных САПР связано с огромными затратами ресурсов и не может быть реализовано в сжатые строки, так как на разработку современных САПР требуются сотни человеколет. Проблема усложняется также и потому, что в реальных ситуациях эксплуатации многофункциональные интегрированные САПР используются, как правило, крайне неэффективно, поскольку при решении конкретных задач из основного состава этих систем часто применяется не более 10-20% программного обеспечения, наиболее специфичного для каждого подразделения.

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

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

    Протоколы Интернет-технологий представляют надежную базу для связывания подсистем и не требуют согласованного использования ресурсов, находящихся в разных узлах сети, что существенно упрощает процесс построения и эксплуатации распределенной САПР. Основным требованием для возможности реализации такой распределенной системы является согласованность интерфейсов, посредством которых связаны отдельные подсистемы. При выполнении этого требования отдельные компоненты распределенной САПР могут создаваться различными разработчиками и поддерживаться на различных сайтах, откуда они будут поставляться (возможно, на коммерческой основе) потребителям.

    Самым эффективным методом объединения подсистем в распределенное приложение следует считать организацию удаленного вызова процедур на базе сервис-ориентированной архитектуры с использованием веб-сервисов. Интеграция на базе веб-сервисов при разработке децентрализованных САПР позволяет перейти к описанию интерфейсов и взаимодействий на базе XML, обеспечивая возможность модификации и развития построенного программного обеспечения в условиях сохранения выбранного интерфейса. Это позволяет вследствие слабосвязанности отдельных подсистем обеспечивать взаимодействие между сервисами на произвольной платформе и проводить адаптацию существующих приложений к меняющимся условиям проектирования.

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

    приложение консольного типа, приложение оконного типа и вебприложение.

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

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

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

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

    Цель работы и основные задачи исследования Настоящая диссертация посвящена исследованию и разработке методов построения платформенно-независимых распределенных САПР с использованием веб-сервисов. Для конкретной реализации выбрана задача разработки распределенной системы автоматизации схемотехнического проектирования.

    Для достижения поставленной цели следует решить следующие задачи:

    1. Разработать общую методику построения, автономного тестирования и развертывания на выбранном сервере веб-сервисов Java.

    программного обеспечения веб-сервисов Java для распределенной системы автоматизации схемотехнического проектирования.

    3. Исследовать и разработать методику построения веб-сервисов Java с использованием технологии сжатия данных.

    4. Провести исследование и разработку общей методики построения шаблонов клиентских приложений консольного и оконного типов, а также клиентских веб-приложений.

    5. Разработать методику реализации функционирования вебсервисов и клиентских приложений в гетерогенных средах.

    Методы исследования При выполнении поставленных задач в диссертации использованы основы общей теории САПР, тория систем моделирования, основы теории матриц и графов.

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

    Новые научные результаты распределенной САПР с использованием веб-сервисов.

    2. Разработана общая методика реализации, автономного тестирования, а также развертывания на сервере распределенной САПР вебсервисов Java.

    3. Исследованы и разработаны методы построения программного обеспечения веб-сервисов Java для решения типовых задач проектирования электронных схем.

    5. Разработана общая методика построения консольных и оконных клиентских приложений, а также клиентских веб-приложений.

    6. Разработана методика реализации программного обеспечения распределенной САПР для организации взаимодействия в гетерогенных средах веб-сервисов и клиентских приложений.

    Основные положения , выносимые на защиту 1. Архитектура распределенной сервис-ориенировнной САПР на основе веб-сервисов.

    2. Общая методика восходящего проектирования веб-сервисов Java 3. Методика реализации программного обеспечения веб-сервисов Java на основе сжатия данных.

    Практическая ценность 1. Предложенная структура распределенной САПР обеспечивает возможность организовать взаимодействие между различными вебсервисами на выбранной платформе и адаптировать приложения к изменяющимся условиям проектирования.

    2. Построенная библиотека вспомогательных функций на основе сжатия данных повышает эффективность создания программного обеспечения веб-сервисов Java для систем автоматизации схемотехнического проектирования 3. Разработанная методика реализации клиент-серверного взаимодействия обеспечивает работу распределенных САПР в средах гетерогенного типа.

    4. Программное обеспечение разработанной распределенной системы автоматизации схемотехнического проектирования содержит инвариантное ядро для организации как символьного, так и численного этапов работы Java-программ, которое можно использовать в качестве базы при построении систем проектирования широкого перечня объектов.

    Реализация и внедрение результатов Разработанная в диссертации распределенная САПР с использованием веб-сервисов была реализована на языке Java c использованием платформы WTP (Web Tools Platform). Практическим результатом является платформенно-независимая распределенная схемотехническая САПР, которая осуществляет многовариантное моделирование нелинейных схем в стационарном режиме, в динамическом режиме, для расчета частотных характеристик, а также обеспечивает расчет чувствительности передаточных функций и чувствительности переменных стационарного режима к вариации параметров.

    Результаты диссертационной работы использовались в госбюджетных НИР по теме «Разработка моделей и методов анализа и синтеза интеллектуальных систем поддержки принятия решений для управления сложными распределенными объектами» (шифр САПР-47 тем. плана СПбГЭТУ 2011 г.) и по теме «Математико-логические основы построения сред виртуальных инструментов» (шифр САПР-49 тем. плана СПбГЭТУ 2012 г.) Результаты диссертации внедрены в инженерную практику научнопроизводственной фирмы «Модем» и используются в учебном процессе кафедры САПР СПБГЭТУ для изучения методики построения программного обеспечения систем автоматизации схемотехнического проектирования при подготовке бакалавров и магистров по направлению «Информатика и вычислительная техника».

    Апробация работы Основные положения диссертации докладывались и обсуждались на следующих конференциях:

    1. 9-ая конференция молодых ученых «Навигация и управление движением».– СПб.;

    2. 5-ая международная конференция «Приборостроение в экологии и безопасности человека».– СПб., ГУАП;

    3. XIII, XIV, XVII -ая международные конференции « Современное образование: содержание, технологии, качество». – СПб., 4. 60, 61, 63-ая научно-технические конференции профессорскопреподавательского состава ГЭТУ.

    Публикации Основное теоретическое и практическое содержание диссертации опубликовано в 16 научных работах, в числе которых 4 статьи в ведущих рецензируемых изданиях, рекомендованных в действующем перечне ВАК, 1 свидетельство об официальной регистрации программы для ЭВМ, зарегистрированной в Федеральной службе по интеллектуальной собственности, патентам и товарным знакам.

    Структура и объем диссертации Диссертация содержит введение, четыре главы основного содержания, заключение и список литературы, содержащий 69 источников. Работа изложена на 154 страницах текста, и содержит 21 рисунок и одну таблицу.

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

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

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

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

    Для построения распределенных САПР в диссертации предлагается использовать сервис-ориентированную архитектуру (SOA) на основе модульной структуры программного обеспечения и стандартизированных интерфейсов. SOA использует унификацию основных операционных процессов, принципы неоднократного применения функциональных элементов, организацию на базе платформы интеграции. Хотя архитектура SOA не связана с какой-то определённой технологией удаленного вызова процедур, программные подсистемы, разработанные согласно с SOA, обычно реализуются как совокупность веб-сервисов, связанных при помощи основных протоколов (SOAP, WSDL).

    Системы на основе сервис-ориентированной архитектуры относятся к классу мультиагентных систем (МАС), которые образованы несколькими взаимодействующими интеллектуальными агентами, обеспечивающими автономность, ограниченность представления и децентрализацию отдельных подсистем распределенной информационно-вычислительной системы.

    Веб-сервисы основаны на XML-стандарте и предоставляют возможность пользователям обеспечить взаимодействие с внешними системными средствами через сеть Интернет, являясь слабосвязанными компонентами системы программного обеспечения, которые доступны для использования через Интернет-протоколы. В диссертационной работе показано, что при практической реализации распределенных САПР с использованием веб-сервисов существенное внимание следует уделять правильному разделению функциональных обязанностей, возлагаемых на основное клиентское приложение и на веб-сервис, взаимодействующий с этим приложением.

    Конкретная методика реализации веб-сервисов существенно зависит от выбранного языка программирования. В работе показано, что предпочтение при выборе языка программирования для построения веб-сервисов следует отдать языку Java, который наиболее полно обеспечивает платформенную независимость реализованных решений. Немаловажным обстоятельством в пользу такого выбора является также наличие мощной инструментальной поддержки разработки веб-ориентированных приложений на Java, которая обеспечивается средой WTP (Web Tools Platform).

    В диссертационной работе проведен сравнительный анализ двух основных методов построения веб-сервисов Java – восходящего (Bottom-Up), когда сначала создается Java-класс веб-сервиса, а затем на его основе генерируется WSDL-документ, и нисходящего (Top-Down), когда сначала создается требуемый документ WSDL, а затем на его базе формируется код реализации веб-сервиса. На основании сравнительной оценки показано, что проектирование веб-сервисов следует выполнять восходящим методом, поскольку при этом WSDL-документ формируется на основании созданного заранее Java-класса, в котором описаны все передаваемые методу вебсервиса параметры и возвращаемые этим методом значения. При этом вся имеющаяся в Java-классе информация автоматически преобразуется в соответствующий WSDL-документ, содержание которого точно соответствует базовой структуре спецификации WSDL и основным характеристикам вызываемого метода веб-сервиса, что обеспечивает полную достоверность содержащейся в WSDL-документе информации.

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

    В диссертации приводится методика организации вызова информационного метода веб-сервиса непосредственно из интегрированной среды разработки Java-приложений, в которой по URL-адресу веб-сервиса можно получить доступ к Soap-ответу информационного метода, и к содержанию его возвращаемого значения.

    Во второй главе рассматриваются методы построения веб-сервисов распределенной САПР, при помощи которой осуществляется расчет нелинейных схем в стационарном режиме, расчет схемных функций линейных и линеаризованных схем для частотной области, выполняется расчет нелинейных схем в динамических режимах. Помимо этого, в число включаемых в распределенную систему подсистем входит веб-сервис для расчета чувствительности схемных функций в частотной области, и вебсервис для расчета чувствительности переменных стационарного режима нелинейных схем к вариации параметров. В качестве компонентов проектируемых на базе разработанных веб-сервисов схем можно использовать двухполюсники типа R, C, L, линейные частотно-зависимые управляемые источники, нелинейные управляемые источники, трансформаторы, биполярные и униполярные транзисторы, операционные усилители, а также задающие источники тока и напряжения.

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

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

    Для решения первой группы задач расчета частотных свойств электронных схем при выполнении диссертационной работы построен вебсервис ModService_Java. Для возможности работы с комплексными числами при его построении создан пользовательский класс Complex, поскольку на момент выполнения настоящей работы такой класс не входит в состав стандартных средств API Java. Класс Complex содержит конструкторы и вспомогательные функции для обработки комплексных данных и все необходимые функции для выполнения арифметических и логических операций с комплексными числами, поскольку в языке Java отсутствует оператор переопределения этих операций. Веб-сервис получает в качестве аргументов описание компонентов схемы и директивы расчета и возвращает массив с описанием результатов расчета частотных характеристик.

    Для расчета стационарного режима нелинейных систем в диссертации предлагается общая методика построения программного обеспечения соответствующих веб-сервисов, реализованная при создании веб-сервиса StaticService_Java. Веб-сервис также получает в качестве аргументов описание компонентов схемы и директивы расчета и возвращает массив с описанием результатов расчета базисных переменных и координат стационарного режима для всех нелинейных компонентов (диоды, биполярные транзисторы, униполярные транзисторы, операционные усилители, нелинейные управляемые источники). Нулевой элемент возвращаемого массива резервируется для передачи на клиентскую сторону информации в случае отсутствия сходимости вычислительного процесса, что требует изменения директив расчета и повторного обращения к методу вебсервиса.

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

    При разработке методики построения веб-сервиса для расчета динамических режимов нелинейных систем используется математическое описание схемы в модифицированном расширенном базисе узловых потенциалов, что позволяет получить в наиболее общей форме систему уравнений алгебро-дифференциального типа. Исключение производных из компонентных уравнений выполняется на основе формул коррекции, которые вытекают из многошаговых неявных методов высших порядков, при этом принят в качестве основного метод Гира второго порядка с возможностью увеличения его порядка. В качестве компонентов, из уравнений которых исключаются производные, выступают двухполюсники типа С и L, диоды, трансформаторы, биполярные и униполярные транзисторы, операционные усилители, а также частотно-зависимые управляемые источники. Для вычисления значений автономных источников, сохраняющих значения соответствующих переменных на предшествующих шагах, построены вспомогательные функции дискретизации dis_cmp для всех перечисленных компонентов cmp с частотно-зависимыми свойствами.

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

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

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

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

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

    В диссертации рассмотрена блок-схема реализации двухэтапной обработки данных при построении Java-приложений, согласно с которой на этапе символьного анализа формируется индексная матрица целого типа, для которой проводится символьный этап LU-факторизации, где выполняется упорядочивание строк (столбцов) с целью минимизации числа вновь появляющихся элементов с ненулевыми значениями. На заключительном шаге символьного этапа осуществляется построение координатных матриц, в которых содержится информация о структуре индексной матрицы, в результате чего эту матрицу можно удалить.

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

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

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

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

    Основанный на дифференцировании уравнений метод веб-сервиса VaryService позволяет рассчитать значения абсолютной и относительной векторной чувствительности схемных функций для частотной области к выбранному вариируемому параметру для всей совокупности базисных переменных. В качестве вариируемых параметров могут выступать значения сопротивления, емкости, или индуктивности произвольного двухполюсника схемы типа R, C или L, и параметры передач управляемых частотнозависимых источников типа ИТУН, ИНУН, ИТУТ или ИНУТ.

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

    Для расчета чувствительности переменных, задающих стационарный режим нелинейных схем, к вариации их параметров, разработан веб-сервис StVaryService, который так же содержит два метода, один из которых основан на дифференцировании уравнений, а второй – на присоединенной схеме. В качестве вариируемого параметра в обоих методах могут выступать значения сопротивлений резисторов и параметры передачи управляемых источников типа ИТУН, ИНУН, ИТУТ или ИНУТ.

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

    Практическая реализация метода основана на дифференцировании уравнений вариируемых компонентов с использованием результатов расчета базисных переменных стационарного режима нелинейной схемы.

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

    В четвертой главе рассматриваются методы построения пользовательских клиентских приложений, обеспечивающих взаимодействие с веб-сервисами, которые после окончания их построения в инструментальной среде разработки Java-приложений должны быть развернуты на сервере распределенной САПР. Для развертывания вебсервиса необходимо знать его основные характеристики, в числе которых имя сервиса, имя класса, имена методов, тип WSDL-документа.

    Соответствующая информация о разработанных и описанных выше вебсервисах для распределенной системы схемотехнического проектирования приводится в диссертации, и в информационных методах с именем getInf, которые входят во все разработанные веб-сервисы. В работе предлагается простая методика непосредственного развертывания на сервере веб-сервисов, и рассматриваются возможные способы импортирования на клиентскую сторону файла WSDL. На основании сравнительного анализа в работе показывается, что корректность выполнения операции доставки WSDLфайла из удаленного веб-сервиса в клиентское приложение наиболее эффективно может быть обеспечена путем использования инструмента Web Services Explorer, и устанавливается наиболее оптимальная последовательность импортирования WSDL-файла в начальный каркас клиентского приложения.

    После доставки WSDL-файла в проект клиентского приложения дальнейшие преобразования начального каркаса проекта в законченное клиентское приложение предлагается проводить в два этапа. Первым этапом такого преобразования является создание прокси-объекта в начальном каркасе проекта, а вторым этапом – формирование классов, содержащих методы, поддерживающие функционирование прокси-объекта и взаимодействие удаленного сервиса с клиентским приложением. Реализация первого этапа сводится к дополнению проекта операторами, создающими прокси-объект, второй этап выполняется при помощи инструмента Web Services платформы WTP, наиболее эффективные способы использования которого приводятся в диссертации.

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

    При выполнении диссертации для всех перечисленных выше вебсервисов распределенной САПР были реализованы клиентские консольные приложения. Их исходные файлы могут быть доставлены стандартными средствами через сеть Интернет клиенту и использованы, как для построения простейшего варианта консольного приложения для взаимодействия с сервисами распределенной САПР, так и в качестве методического пособия для разработки более совершенных оконных приложений.

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

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

    Положительным свойством этой архитектуры является возможность организации доступа к распределенной САПР через произвольный вебброузер без необходимости построения собственного клиентского приложения, недостатком такого подхода к организации распределенной САПР является неизбежное увеличение интервала времени, которое требуется для описания компонентов системы в процессе диалогового взаимодействия.

    В диссертации построена методика организации процесса развертывания клиентских приложений, целью которого является обеспечение возможности запуска клиентского приложения общесистемными средствами без использования инструментальной среды разработки приложения, при этом как для клиентских приложений консольного типа, так и для клиентских приложений оконного типа, запуск должен осуществляться через командную строку, а для веб-приложений – из броузера. Информация о месторасположении веб-сервиса передается через объект прокси-класса, для которого должна быть предварительно осуществлена настройка на соответствующий URL-адрес.

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

    В диссертации показано, что при использовании клиентских вебприложений в зависимости от выбранной структуры связи между клиентским и серверным компьютером, информация о расположении веб-сервиса может передаваться как через объект прокси-класса, так и через URL-адрес, вводимый из броузера. Соответствующие способы взаимодействия клиента с сервисом при реализации их функциональных задач для выбранной структуры связи также рассмотрены в работе.

    Стандартизация SOAP предоставляет возможность соединения между собой слабосвязанных приложений независимо от платформы их реализации, что позволяет при использовании веб-сервисов обеспечить эффективное и оптимальное использование широкого ряда гетерогенных, слабосвязанных ресурсов в распределенных приложениях. В диссертации приводится общая методика построения программного обеспечения для осуществления взаимодействия объекта прокси-класса приложения среды.NET с сервисом среды Java/J2EE. На основании этой методики реализована организация взаимодействия разработанных веб-сервисов Java с клиентскими Windowsприложениями, построенными в среде.NET на основе языка C#.

    Возможность функционирования распределенной САПР в гетерогенных средах существенно расширяет область ее применения.

    В заключении сформулированы основные научные и практические результаты, полученные на основе проведенных в диссертации исследований.

    Основные результаты работы 1. Разработана архитектура распределенной сервисориентированной САПР на основе веб-сервисов, отличающаяся децентрализованной структурой, платформенной независимостью и возможностью проведения непрерывной модернизации отдельных подсистем для адаптации их свойств к изменяющимся условиям проектирования.

    2. Реализована общая методика построения восходящим методом веб-сервисов Java и соответствующих WSDL-документов, а также доставки их на сервер распределенной САПР после проведения автономного тестирования в среде разработки.

    3. Разработана методика построения программного обеспечения веб-сервисов Java для решения типовых задач моделирования непрерывных систем при автоматизированном проектировании электронных схем.

    4. Построена библиотека вспомогательных функций для реализации программного обеспечения веб-сервисов Java на основе сжатия данных.

    5. Разработана общая методика построения шаблонов консольных и оконных клиентских приложений распределенной системы автоматизации схемотехнического проектирования и реализована организация функционирования распределенной САПР с клиентскими вебприложениями.

    6. Разработана методика построения распределенных САПР, обеспечивающая взаимодействие веб-сервисов Java и клиентских приложений произвольного типа в гетерогенных средах.

    1. Анисимов Д.А. Построение систем автоматизированного проектирования на основе Web-сервисов [Текст] / Анисимов Д.А. Гридин В.Н., Дмитревич Г.Д. // Автоматизация в промышленности – 2011. – №1 – С. 9-12.

    2. Анисимов Д.А. Построение систем автоматизированного проектирования на основе Web-технологий [Текст] / Гридин В.Н., Дмитревич Г.Д., Анисимов Д.А // Информационные технологии – 2011. – №5. – С. 23-27.

    3. Анисимов Д.А. Построение веб-сервисов систем автоматизации схемотехнического проектирования [Текст] / Гридин В.Н., Дмитревич Г.Д., Анисимов Д.А // Информационные технологии и вычислительные системы – 2012. – №4. – С. 79-84.

    4. Анисимов Д.А. Методы построения систем автоматизации схемотехнического проектирования на основе веб-сервисов [Текст] /Анисимов Д.А // Известия СПбГЭТУ «ЛЭТИ» – 2012. – №10. – СПб.: Изд-во СПбГЭТУ «ЛЭТИ»,– С. 56-61.

    5. Анисимов Д.А. Доступ к Web-ресурсам в САПР систем навигации и управления [Текст] / Ларистов Д.А., Анисимов Д.А. // Гироскопия и навигация. 2007. № 2. –С. 106.

    Web-сервисы - новое слово в технологии распределенных систем. Спецификация Open Net Environment (ONE) корпорации Sun Microsystems и инициатива. Net корпорации Microsoft обеспечивают инфраструктуры для написания и развертывания Web -сервисов. В настоящий момент имеется несколько определений Web -сервиса. Web -сервисом может быть любое приложение, имеющее доступ к Web , например, Web -страница с динамическим содержимым. В более узком смысле Web -сервис - это приложение, которое предоставляет открытый интерфейс, пригодный для использования другими приложениями в Web . Спецификация ONE Sun требует, чтобы Web -сервисы были доступны через HTTP и другие Web -протоколы, чтобы дать возможность обмениваться информацией посредством XML -сообщений и чтобы их можно было найти через специальные сервисы - сервисы поиска. Для доступа к Web -сервисам разработан специальный протокол - Simple Object Access Protocol (SOAP) ,который представляет средства взаимодействия на базе XML для многих Web -сервисов. Web -сервисы особенно привлекательны тем, что могут обеспечить высокую степень совместимости между различными системами.

    Гипотетический Web -сервис, разработанный в соответствии с архитектурой ONE Sun , может принимать форму, в которой реестр сервисов публикует описание Web -сервиса в виде документа .

    Огромный потенциал Web -сервисов определяется не технологией, примененной для их создания. HTTP , XML и другие протоколы, используемые Web -сервисами, не новы. Функциональная совместимость и масштабируемость Web -сервисов подразумевает, что разработчики могут быстро создавать большие приложения и более крупные Web -сервисы из меньших Web -сервисов. Спецификация Sun Open Net Environment описывает архитектуру для создания интеллектуальных Web-сервисов .Интеллектуальные Web -сервисы задействуют общее операционное окружение. Совместно используя контекст, интеллектуальные Web -сервисы могут выполнять стандартную аутентификацию для финансовых транзакций, предоставлять рекомендации и указания в зависимости от географического местоположения компаний, участвующих в электронном бизнесе .

    Для того чтобы создать приложение, являющееся Web -сервисом, необходимо применить целый ряд технологий.

    Взаимосвязь этих технологий условно представлена на рис. 10.1 .


    Рис. 10.1.

    По сути, Web -сервисы являются одним из вариантов реализации компонентной архитектуры , при которой приложение рассматривается как совокупность компонентов, взаимодействующих друг с другом. Как уже неоднократно говорилось, взаимодействие компонент, выполняющихся на разных платформах, представляет собой достаточно сложную задачу, в частности, требует разработки коммуникационного протокола , учитывающего особенности передачи данных между различными платформами. Одной из основных идей, положенных в основу рассматриваемой технологии Web -сервисов, является отказ от бинарного коммуникационного протокола . Обмен сообщениями между компонентами системы осуществляется посредством передачи XML -сообщений. Поскольку XML -сообщения представляют собой текстовые файлы, транспортный протокол передачи может быть самый различный - XML -сообщения можно передавать по HTTP -, SMTP -, FTP -протоколам, причем использование различных транспортных протоколов прозрачно для приложений. Как уже говорилось, протокол, обеспечивающий возможность взаимодействия Web -сервисов, называется SOAP (Simple Object Access Protocol ). Он определен на основе XML . SOAP обеспечивает взаимодействие распределенных систем, независимо от объектной модели или используемой платформы. Данные в рамках SOAP передаются в виде XML -документов особого формата. SOAP не навязывает какого-либо определенного транспортного протокола. Однако в реальных приложениях наиболее часто реализуется передача SOAP -сообщений по протоколу HTTP . Также широко распространено использование в качестве транспортного протокола SMTP , FTP и даже "чистого" TCP . Итак, SOAP определяет механизм, с помощью которого Web -сервисы могут вызывать функции друг друга. В каком-то смысле работа этого протокола напоминает вызов удаленной процедуры - вызывающая сторона знает имя Web -сервиса, имя его метода, параметры, которые метод принимает, оформляет вызов этого метода в виде SOAP -сообщения и отсылает его Web -сервису.

    Однако описанный подход годится лишь в том случае, если заранее известны "сигнатуры" методов, которые реализует Web -сервис. Но как быть, если это не так? Для решения этой проблемы в модель Web -сервиса введен дополнительный слой - слой описания интерфейсов сервисов. Этот слой представлен в виде описания WSDL .

    Согласно определению W3C , " WSDL - формат XML для описания сетевых сервисов как набора конечных операций, работающих при помощи сообщений, содержащих документно-ориентированную или процедурно-ориентированную информацию". Документ WSDL полностью описывает интерфейс Web -сервиса с внешним миром. Он предоставляет информацию об услугах, которые можно получить, воспользовавшись методами сервиса, и способах обращения к этим методам. Таким образом, в случае если сигнатура метода Web -сервиса точно не известна (например, она изменилась со временем), у целевого Web -сервиса может быть запрошено WSDL -описание - файл, в котором эта информация будет содержаться.

    Следующим слоем технологии является сервис Universal Description, Discovery and Integration (UDDI) .Эта технология предполагает ведение реестра Web -сервисов. Подключившись к этому реестру, потребитель сможет найти Web -сервисы, которые наилучшим образом подходят для решения его задач. Технология UDDI дает возможность поиска и публикации нужного сервиса, причем эти операции могут быть выполнены как человеком, так и другим Web -сервисом или специальной программой-клиентом. UDDI , в свою очередь, также представляет собой Web -сервис.

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

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

    Следует отметить, что с их применением могут строиться и так называемые "стандартные" приложения, где в качестве Web -сервиса оформляется серверная часть.

    Простой протокол доступа к объектам (SOAP)

    Базовым протоколом, обеспечивающим взаимодействие в среде Web -сервисов, является протокол

    Глава 1. Общая методика построения распределенных систем на основе веб-сервисов

    1.1. Сервис-ориентированная архитектура.

    1-2. Методика построения веб-сервисов Java.

    1-3. Предварительное тестирование веб-сервисов.

    Глава 2. Методы построения программного обеспечения веб-сервисов распределенной системы автоматизации схемотехнического проектирования

    2-1. Математическое обеспечение систем автоматизации схемотехнического проектирования.

    2-2. Веб-сервис для проектирования линейных систем в частотной области.

    2-3. Веб-сервис для расчета стационарного режима нелинейных систем.

    2-4. Сервис-ориентированная интегрированная система для частотного анализа линеаризованных схем.

    2-5. Веб-сервис для расчета нелинейных систем в динамическом режиме.

    Глава 3. Построение веб-сервисов на основе методов сжатия данных.

    3-1. Методы устранения нулевых элементов при хранении и обработке матриц.

    3-2. Методика разработки модифицированных версий веб-сервисов.

    3-2-1. Модификация на символьном этапе.

    3-2-2. Модификация на численном этапе.

    3-3. Веб-сервис для расчета чувствительности схемных функций к вариации параметров.

    3-3-1. Построение метода веб-сервиса на основе дифференцирования уравнений.

    3-3-2. Метод веб-сервиса на основе присоединенной схемы.

    3-4. Веб-сервис для расчета чувствительности переменных стационарного режима.

    3-4-1. Построение метода веб-сервиса для расчета векторной чувствительности переменных.

    3-4-2. Метод веб-сервиса для расчета скалярной чувствительности переменных.

    Глава 4. Методы построения клиентских приложений распределенных САПР.

    4-1. Методика построения клиентских приложений на основе WSDL-документа.

    4-1-1. Развертывание веб-сервисов на сервере Apache Tomcat.

    4-1-2. Методика импортирования файла WSDL и построения каркаса клиентского приложения.

    4-2. Клиентские приложения распределенной системы схемотехнического проектирования.

    4-2-1. Методика построения консольных клиентов.

    4-2-2. Методика построения оконных клиентских приложений.

    4-2-3. Методика построения клиентских веб- приложений.

    4-3. Развертывание клиентских Java-приложений.

    4-3-1. Развертывание клиентских Java-приложений, запускаемых из командной строки.

    4-3-2. Развертывание клиентских Java-приложений, запускаемых из веб-броузера.

    4-4. Организация взаимодействия клиентских приложений с вебсервисами в гетерогенных средах.

    Введение диссертации (часть автореферата) на тему "Исследование и разработка методов построения распределенных систем автоматизированного проектирования на основе технологии веб-сервисов"

    Широкое внедрение систем автоматизированного проектирования в практику решения инженерных задач существенно ограничивается высокой стоимостью лицензионного программного обеспечения САПР. Вместе с тем создание собственных систем автоматизированного проектирования связано с огромными затратами ресурсов и не может быть реализовано в сжатые строки, так как на разработку современных САПР требуются сотни человеколет. Проблема усложняется также и тем, что в реальных ситуациях эксплуатации многофункциональные интегрированные САПР (например, Micro-Cap 7, PSPICE, DISPC ) используются, как правило, крайне неэффективно, поскольку в процессе решения конкретных задач из базового программного обеспечения этих систем часто применяется не более 10-20% программного обеспечения, наиболее специфичного для каждого подразделения.

    Решением этой актуальной проблемы может быть децентрализация архитектуры САПР путем перехода к распределенным системам проектирования, построенным на основе Интернет-технологий, реализующих задачи коммуникации и информационного обмена между приложениями. Такие независимо управляемые приложения являются автономными и могут взаимодействовать между собой в процессе выполнения общей задачи. Протоколы Интернет-технологий представляют надежную базу для связывания подсистем, и в отличие от Грид-технологий , не требуют согласованного использования ресурсов, находящихся в разных узлах сети, что существенно упрощает процесс построения и эксплуатации распределенной САПР. Основным требованием для возможности реализации такой распределенной системы является согласованность интерфейсов, посредством которых отдельные подсистемы могут взаимодействовать между собой. При выполнении этого требования отдельные компоненты распределенной САПР могут создаваться различными разработчиками и поддерживаться на различных сайтах, откуда они будут поставляться возможно, на коммерческой основе) потребителям.

    Наиболее эффективным методом интеграции отдельных подсистем в распределенное приложение является удаленный вызов процедур на основе сервис-ориентированной архитектуры с использованием технологии веб-сервисов . Интеграция на основе веб-сервисов при разработке децентрализованных САПР позволяет перейти к описанию интерфейсов и взаимодействий на основе XML, обеспечивая возможность модификации и развития программного обеспечения при условии сохранения выбранного интерфейса. Это позволяет вследствие слабосвязанности отдельных подсистем обеспечивать взаимодействие между различными сервисами на любой платформе и проводить адаптацию существующих приложений к меняющимся условиям проектирования.

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

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

    Оконные приложения дают возможность в наилучшей степени реализовать графический интерфейс и больше всего подходят для разработки САПР на основе технологии веб-сервисов. При этом для любого веб-сервиса предоставляется возможность построения нескольких однотипных приложений с разными способами реализации диалогового взаимодействия.

    Веб-приложения обеспечивает возможность полностью разместить все программное обеспечение распределенной системы проектирования в сети Интернет. Достоинством приложения такой структуры является открытый доступ к использованию распределенной САПР через броузер любого типа, недостатком приложения такого типа является увеличение времени, необходимого для ввода описания компонентов моделируемой системы, вызванное ожиданием реакции на каждом шаге ввода исходных данных.

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

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

    Для достижения поставленной задачи необходимо:

    Разработать общую методику построения, автономного тестирования и развертывания на сервере веб-сервисов Java.

    Выполнить исследование и разработку программного обеспечения веб-сервисов Java для распределенной системы автоматизации схемотехнического проектирования.

    Исследовать и разработать методику построения веб-сервисов Java на основе технологии сжатия данных.

    Провести исследование и разработку общей методики построения шаблонов клиентских приложений консольного и оконного типов, а также клиентских веб-приложений.

    Разработать методику реализации функционирования веб-сервисов в гетерогенных средах.

    Диссертационная работа содержит введение, четыре главы основного содержания, заключение и список литературы, содержащий 69 наименований. Работа изложена на 154 странице текста, и включает 21 рисунок и одну таблицу.

    Заключение диссертации по теме "Системы автоматизации проектирования (по отраслям)", Анисимов, Денис Андреевич

    Основные результаты диссертационной работы сводятся к следующим:

    1. Разработана архитектура распределенной сервис-ориентированной САПР на основе веб-сервисов, отличающаяся децентрализованной структурой, платформенной независимостью и возможностью проведения непрерывной модернизации отдельных подсистем для адаптации их свойств к изменяющимся условиям проектирования.

    2. Реализована общая методика построения восходящим методом веб-сервисов Java и соответствующих WSDL-документов, а также доставки их на сервер распределенной САПР после проведения автономного тестирования в среде разработки.

    3. Разработана методика построения программного обеспечения веб-сервисов Java для решения типовых задач моделирования непрерывных систем при автоматизированном проектировании электронных схем.

    4. Построена библиотека вспомогательных функций для реализации программного обеспечения веб-сервисов Java на основе сжатия данных.

    5. Разработана общая методика построения шаблонов консольных и оконных клиентских приложений распределенной системы автоматизации схемотехнического проектирования и реализована организация функционирования распределенной САПР с клиентскими веб-приложениями.

    6. Разработана методика построения распределенных САПР, обеспечивающая взаимодействие веб-сервисов Java и клиентских приложений произвольного типа в гетерогенных средах.

    Заключение

    При выполнении диссертационной работы были рассмотрены вопросы исследования и разработки методов построения платформенно-независимых распределенных САПР с сервис-ориентированной архитектурой и использованием веб-сервисов. Для конкретизации такой САПР была выбрана распределенная система для решения задач схемотехнического проектирования.

    В работе показано, что использование веб-сервисов при построении программного обеспечения децентрализованных САПР позволяет осуществит описание интерфейсов и взаимодействий на базе XML, предоставляя возможность модификации и развития системы при условии сохранения необходимого интерфейса. Это позволяет организовать взаимодействие между сервисами на любых платформах и адаптировать используемые приложения к изменяющимся условиям проектирования.

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

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

    Список литературы диссертационного исследования кандидат технических наук Анисимов, Денис Андреевич, 2013 год

    1. Автоматизация схемотехнического проектирования Текст.: монография / В.Н.Ильин [и др.]; под ред. В.Н.Ильина. М.: Радио и связь, 1987. - 368 с.

    2. Автоматизация схемотехнического проектирования на мини-ЭВМ Текст.: учебное пособие / В.И.Анисимов [и др.]. JL: Изд-во Ленингр. ун-та, 1983. - 199 с.

    3. Анисимов, В.И. Комплекс диалоговых пакетов моделирования аналоговых и цифровых электронных схем на IBM/PC Текст. / В.И.Анисимов, К.Б.Скобельцын, А.В.Никитин // Автоматизированное проектирование в радиоэлектронике и приборостроении: 1991.-С.3-6.

    4. Анисимов, В.И. Чувствительность нелинейных систем к вариации параметров Текст. / В.И.Анисимов, Ю.М.Амахвр // Изв.СПБГЭТУ «ЛЭТИ». Сер. Информатика, управление и компьютерные технологии, -2007. Вып.2. - С. 22-26.

    5. Анисимов, В.И. Моделирование непрерывных систем Текст.: учебное пособие / В.И.Анисимов. СПб.: ЛЭТИ, 2006. - 172 с.

    6. Беллиньясо, М. Разработка Web-приложений в среде ASP.NET 2.0 Текст.: монография / М.Беллиньясо.; пер. с англ. под ред. Ю.Н. Артеменко. М.: ООО «И.Д.Вильямс», 2007. - 640 с.

    7. Беллман, Р. Введение в теорию матриц Текст.: монография / Р.Беллман.; пер. с англ. под ред. В.Б. Лидского. М.: Наука, 1969. - 336 с.

    8. Богданов, A.B. Сервис-ориентированная архитектура: новые возможности в свете развития GRID технологий / А.В.Богданов, Е.Н.Станкова, В.В.Мареев (http//www.ict.edu.ru/lib/index.php?idres=5639)

    9. Влах, И. Машинные методы анализа и проектирования электронных схем Текст.: монография / И.Влах, К.Сингхал.; пер. с анг. М.: Радио и связь, 1988. - 560 с.

    10. Гамма, Э. Приемы объектно-ориентированного проектирования Текст.: монография / Э.Гамма, Р.Хелм.; пер. с анг. СПб.: Питер, 2001.

    11. И. Гербер, Ш. Полный справочник по С# Текст.: монография / Ш.Гербер.; пер. с анг. СПб.: Питер, 2006. - 740 с.

    12. Глориозов, Е.Л. Введение в автоматизацию схемотехнического проектирования Текст.: монография / Е.Л.Глориозов, В.Г.Сорин, П.П.Сыпчук. М.: Советское радио, 1976. - 232 с.

    13. Даконта, М. XML и Java 2. Библиотека программиста Текст.: монография / М.Даконта, А.Саганич.; пер. с анг. СПб.: 2001. - 384 с.

    14. Дей, Н. Eclipse: Платформа Web-инструментов Текст.: монография / Н.Дей, Л.Мандел, А.Райман.; пер. с англ. М.:, 2008.- 688 с.

    15. Дейтел, Х.М. Технология программирования на Java 2: Книга 1. Графика, JavaBeans, интерфейс пользователя Текст.: монография / Х.М.Дейтел, П.Д.Дейтел, С.И.Сантри.; М.: ООО «Бином-Пресс», 2003.-560 с.

    16. Дейтел, Х.М. Технология программирования на Java 2: Книга 2. Распределенные приложения Текст.: монография / Х.М. Дейтел, П.Д.Дейтел, С.И.Сантри.; М.: ООО «Бином-Пресс», 2003.-464 с.

    17. Дейтел, Х.М. Технология программирования на Java 2: Книга 3. Корпоративные системы, сервлеты, JSP, Web-сервисы Текст.: монография / Х.М.Дейтел, П.Д.Дейтел, С.И.Сантри.; пер. с анг. М.: ООО «Бином-Пресс», 2003.- 672 с.

    18. Демидович, Б.П. Основы вычислительной математики Текст.: монография / Б.П.Демидович, И.А.Марон. М.: Физматгиз, 1963. - 658 с.

    19. Джеймс, О. Итерационные методы решения нелинейных систем уравнений Текст.: монография / О.Джеймс, Р.Венер.; пер. с англ. под ред. Э.В. Вершкова, Н.П. Жидкова, И.В. Коновальцева. М.: Мир, 1975.- 551 с.

    20. Джордж, А. Численное решение больших разреженных систем уравнений Текст.: монография / А.Джордж, Дж.Лю.; пер. с англ. Х.Д. Икрамова М.: Мир, 1984. - 333 с.

    21. Диалоговые системы схемотехнического проектирования Текст.: монография / В.И.Анисимов [и др.]. М.: Радио и связь, 1988. - 287 с.

    22. Дунаев С.Б. Java для Internet в Windows и Linux Текст.: монография / С.Б.Дунаев. М.: ДИАЛОГ-МИФИ, 2004. - 496 с.

    23. Зеленухина, В.А. Разработка Интернет-ориентированных виртуальных лабораторий математического моделирования посредством разделения вычислительных и визуализационных задач Текст. / В.А.Зеленухина, //Информационные технологии, 2010. №10. - С.

    24. Зыков, A.A. Основы теории графов Текст.: монография / А.А.Зыков. -М.: Наука, 1987.-256 с.

    25. Ильин, В.Н. Основы автоматизации схемотехнического проектирования Текст.: монография / В.Н.Ильин. М.: Энергия, 1979. - 391 с.

    26. Имитационное моделирование производственных систем Текст.: монография / А.А.Вавилов [и др.]. Киев: Техника, 1983. - 415 с.

    27. Как программировать на XML Текст.: монография / Х.М.Дейтел, [и др.].; пер. с анг. М.: ЗАО «Издательство БИНОМ», 2001.- 944 с.

    28. Калиткин, H.H. Численные методы Текст.: монография / Н.Н.Калиткин. -М.: Наука, 1978,- 519 с.

    29. Кнут, Д. Искусство программирования для ЭВМ Текст.: монография / Д.Кнут.; пер. с англ. Г.П.Бавенко, Ю.М.Ваяковского.; под ред. К.И.Бабенко, В.С.Штаркмана. М.: Мир, 1976. - 734 с.

    30. Кристофидес, Н. Теория графов. Алгоритмический подход Текст.: монография / Н.Кристофидес.; пер. с анг. под ред. Г.П.Гаврилова. М.: Мир, 1978.-432 с.

    31. Мак-Дональд, М. Microsoft ASP.NET 2.0 с примерами на С# 2005 для профессионалов Текст.: монография / М. Мак-Дональд, М.Шпушта; пер. с анг. под ред. Ю.Н. Артеменко. М.: ООО «И.Д.Вильямс», 2006. - 1408 с.

    32. Михайлов, В.Б. Численно-аналитические методы решения сверхжестких дифференциально-алгебраических систем уравнений Текст.: монография /В.Б.Михайлов. СПб.: Наука, 2005. - 223 с.

    33. Норенков, И.П. Введение в автоматизированное проектирование технических устройств и систем Текст.: монография / И.П.Норенков. -М.: Высшая школа, 1986. 302 с.

    34. Норенков, И.П. Основы теории и проектирования САПР Текст.: монография / И.П.Норенков, В.Б.Маничев. М.: 1990. -334 с.

    35. Норенков, И.П. Системы автоматизированного проектирования электронной и вычислительной аппаратуры Текст.: монография / И.П.Норенков, В.Б.Маничев. -М.: Высшая школа, 1983. 272 с.

    36. Ноутон, П. Java 2 Текст.: монография / П. Ноутон, Г.Шилдт. ; пер. с англ. СПб.: БХВ-Петербург, 2001. - 1072 с.

    37. Петренко, А.И. Основы построения систем автоматизированного проектирования Текст.: монография / А.И.Петренко, О.И.Семенков. -Киев: Высшая школа, 1984. 293 с.

    38. Петренко, А.И. Табличные методы моделирования электронных схем на ЭЦВМ Текст.: монография / А.И. Петренко, А.И.Власов, А.П.Тимченко. -Киев: Высшая школа, 1977. 186 с.

    39. Писсанецки, С. Технология разреженных матриц Текст.: монография / С.Писсанецки.; пер. с анг. под ред. Х.Д.Икрамова. М.: Мир, 1988. - 410 с.

    40. Разевиг, В. Схемотехническое моделирование с помощью Micro-Cap 7 Текст.: монография / В.Разевиг. М. : Телеком, 2003. - 368 с.

    41. Разработка распределенных приложений на платформе Microsoft .Net Framework Текст.: монография / С.Морган [и др.].; пер. с англ. М.: «Русская Редакция», 2008. - 608 с.

    42. Разработка клиентских веб-приложений на платформе Microsoft .Net Framework Текст.: монография / Гленн Д. [и др.].; пер. с англ. М.: «Русская Редакция», 2007. - 768 с.

    43. Руководство разработчика Borland JBuilder Текст.: монография / М.Ленди [и др.].; пер. с англ. М.: Издательский дом «Вильяме», 2004. -864 с.

    44. Райе, Дж. Матричные вычисления и математическое обеспечение Текст.: монография / Дж.Райс.; пер. с анг. М.: Мир, 1984. - 264 с.

    45. С# для профессионалов Текст.: монография / Симон Робинсон [и др.].; пер. с англ. С.Коротыгин [и др.]. М.: Лори, 2005. - 1002 с.

    46. Саймон, P. Microsoft Windows 2000 API. Энциклопедия программиста Текст.: монография / Р.Саймон.; СПб.: ДиаСофт, 2002.-1088 с.

    47. Секреты программирования для Internet на Java Текст.: монография / М.Томас [и др.].; пер. с англ. СПб.: Питер, 1997. - 640 с.

    48. Сешу, С. Линейные графы и электрические цепи Текст.: монография / С.Сешу, М.Б.Рид.; пер. с англ. М.: Высшая школа, 1971. - 448 с.

    49. Сигорский, В.П. Алгоритмы анализа электронных схем Текст.: /

    50. B.П.Сигорский, А.И.Петренко. М.: Советское радио, 1976. - 606 с.

    51. Сигорский, В.П. Математический аппарат инженера Текст.: монография / В.П.Сигорский. Киев: Техника, 1975. - 765 с.

    52. Слипченко, В.Г. Машинные алгоритмы и программы моделирования электронных схем Текст.: монография / В.Г.Слипченко, В.Г.Табарный -Киев: Техника, 1976. 157 с.

    53. Советов, Б.Я. Моделирование систем Текст.: монография / Б.Я.Советов,

    54. C.А.Яковлев. М.: Высшая школа, 1985. - 271 с.

    55. Сольницев, Р.И. Автоматизация проектирования систем автоматического управления Текст.: монография / Р.И.Сольницев. М.: Высшая школа, 1991. - 328 с.

    56. Сольницев, Р.И. Основы автоматизации проектирования гироскопических систем. Текст.: монография / Р.И. Сольницев. М.: Высшая школа, 1985. - 240 с.

    57. Степаненко, И.П. Основы микроэлектроники: учеб. пособие для вузов Текст / И.П.Степаненко. М.: Советское радио, 1980. -567 с.

    58. Тарасик, В.П. Математическое моделирование технических систем Текст.: монография / В.П. Тарасик. Минск: Дизайн ПРО, 2004. - 639 с.

    59. Троелсен, Э. Язык программирования С# 2005 и платформа.NET 2.0 Текст.: монография / Э.Троелсен,; пер. с англ. под ред. А.Г.Спивака. М.: ООО «И.Д.Вильямс», 2007. - 1168 с.

    60. Тьюарсон, Ф.Р. Разреженные матрицы Текст.: монография / Ф.Р.Тьюарсон.; пер. с анг. М.: Мир, 1977. - 189 с.

    61. Фадеев, Д.К. Вычислительные методы линейной алгебры Текст.: монография / Д.К.Фадеев, В.Н. Фадеева. М.: Изд-во Физ-мат литературы, 1963. - 734 с.

    62. Феррара, А. Программирование web-сервисов для.NET Текст.: монография / А.Феррара, М.Мак-Дональд. СПб.: Питер, 2003. - 422 с.

    63. Форсайт, Дж. Машинные методы математических вычислений Текст.: монография / Дж.Форсайт, М.Малькольм, К.Моулер.; пер. с англ. под ред. Х.Д.Икрамова. М.: Мир, 1980. - 277 с.

    64. Цимбал, A.A. Технология создания распределенных систем Текст.: монография / А.А.Цимбал, М.Л.Аншина. СПб.: Питер, 2003. - 576 с.

    65. Чуа, Л.О. Машинный анализ электронных схем Текст.: монография / Л.О.Чуа, Лин.Пен-Мин.; пер. с анг. -М.: Энергия, 1980. 631с.

    66. Хайнеман, P. PSPICE Моделирование работы электронных схем Текст.: монография / Р.Хайнеман. -М.: Издательство ДМК, 2005. 327с.

    67. Хабибулин, И. Разработка Web-служб средствами Java Текст.: монография / И. Хабибулин. СПб.: БХВ-Петербург, 2003. - 400 с.

    68. Холл, М. Сервлеты и JavaServer Pages Текст.: монография / М.Холл.; пер. с анг. -СПб.: Питер, 2001. 496 с.

    69. Эстербю, О. Прямые методы для разреженных матриц Текст.: монография / О.Эстербю, З.Златев.; пер. с анг. М.: Мир, 1987. - 111 с.

    70. Янг, М.Д. Microsoft XML. Шаг за шагом Текст.: монография / М.Д.Янг.; пер. с англ. -М.: Издательство ЭКОМ, 2002. 384с.69. http://bigor.bmstu.ru/?doc=080IS/ai006.mod/?cou-140CADedu/CAD.cou

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