Практическая SOA для новичка - PullRequest
6 голосов
/ 15 апреля 2009

Я абсолютный новичок в мире SOA. Поэтому я смотрю на некоторые «инфраструктуры / технологии SOA» и пытаюсь понять, как их использовать для создания хорошо масштабируемого (класс Facebook) веб-сайта.

Здесь я пытаюсь решить несколько «проблем»:

  1. Возможность компоновки (+ управление зависимостями, Pub / Sub)
  2. Языковая независимость услуг
  3. Масштабируемость и производительность
  4. Высокая доступность

Я изучил некоторые технологии, которые отвечают подмножеству вышеуказанных критериев:

  1. Thrift - кроссплатформенная платформа RPC Facebook
  2. WCF - поддерживает SOAP, JSON & REST, поэтому его можно считать совместимым с языком. Создает WSDL файлы, которые можно использовать для создания прокси Java.
  3. Microsoft DSS - просто включил его в мой опрос, но он не выглядит актуальным, поскольку он сильно зависит от состояния и зависит от .NET.
  4. Веб-сервисы

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

Как использовать технологии SOA для решения проблем, которые я определил выше? Где я могу найти технические руководства для этого? Я ищу не просто системные диаграммы, а реальные библиотеки, примеры кода, APIS ...

Ответы [ 7 ]

6 голосов
/ 18 апреля 2009

Я думаю, что вопрос больше связан с концепциями, чем с инструментами. Ответы на вопросы:

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

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

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

2 голосов
/ 25 апреля 2009

Говорит об услугах и архитектуре технический директор Amazon - Вернер Фогельс:

1 голос
/ 18 апреля 2009

IDesign.net имеет кучу отличных загрузок для WCF.

0 голосов
/ 20 апреля 2009

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

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

Вы никогда не сможете предвидеть каждый случай, когда приложение потерпит неудачу, так как вы можете определить, является ли [[insert tech here]] вашим ответом?

0 голосов
/ 19 апреля 2009

Могу ли я порекомендовать книгу: Enterprise Service Oriented Architecture, изданную Springer Verlag.

0 голосов
/ 18 апреля 2009

Ознакомьтесь с проектом Mule , который объединяет стек служб CXF, а также пакетом Mule REST, который предоставляет альтернативы RESTful. Я думаю, вы увидите, что это решает все ваши проблемы, и в документации есть много примеров, а также дистрибутив.

0 голосов
/ 15 апреля 2009

Стоит взглянуть на: http://www.manning.com/davis/?

...