Так я говорю о SOA здесь?

По государственному заказу мы будем предлагать построить архитектуру мониторинга трафика. У нас будут следующие компоненты:

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

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

Если это не идеально реализовано SOA, то где еще я должен искать. Если это идеально для SOA, то с чего мне начать при его разработке? (И я начал в основном с того, что прочитал страницу SOA в Википедии.) Есть ли здесь какие-нибудь хорошие тематические исследования?


person JnBrymn    schedule 26.08.2010    source источник


Ответы (1)


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

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

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

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

person Paul Sasik    schedule 26.08.2010
comment
Очень хороший совет! Спасибо. Однако один комментарий: в моей структуре есть несколько сервисов, которые не могут быть без гражданства (или иначе я неправильно понимаю, что означает безгражданство в этом случае). Например, служба определения местоположения транспортных средств будет клиентом видеослужбы и будет отслеживать местоположение автомобилей (своеобразное состояние), непрерывно просматривая новые кадры видео. Возможно, важно то, что каждая служба не должна сохранять состояние своих клиентов. Я думаю, что я могу уйти от этого здесь. - person JnBrymn; 26.08.2010
comment
Что делать, если я хочу, чтобы служба отслеживала слушателей и уведомляла их всякий раз, когда доступна новая информация. Это не будет означать, что служба хранит состояние своих клиентов, но будет означать, что служба хранит указатели на своих клиентов. Это что-то болит? - person JnBrymn; 26.08.2010
comment
Клиенты и сервис имеют более тесную связь. Клиент может быть отключен, и вам нужно решить, что служба должна делать в такой ситуации, прерывать работу, игнорировать, повторять попытку или уведомлять другую систему? - person Kwebble; 26.08.2010
comment
Не могли бы вы ответить на stackoverflow.com/questions/9538710/? - person LCJ; 02.03.2012