Пользовательский ServiceBus и «адаптер» для него с помощью WCF - PullRequest
0 голосов
/ 13 октября 2009

В настоящее время я разрабатываю сервер для спутникового мониторинга объектов. В своем текущем состоянии он очень эффективен и стабилен в сценариях с высокой нагрузкой. Сервер должен иметь возможность обрабатывать 50 + млн сообщений в день или более, если используется балансировка нагрузки. Он состоит из шлюза данных gps (singleton), «databroker» (singleton), который отвечает за сохранение данных, предоставление их по запросу и оповещение подписчиков о новых данных, услугах входа в систему (за вызов) и обслуживания клиентов (за сеанс) отвечает за подписку и работу с веб-интерфейсом и многофункциональным клиентом.

В этом состоянии я могу предвидеть следующие проблемы:

  1. Рост сложности при добавлении новых услуг.
  2. Герметичное соединение.
  3. Сложно настроить.
  4. Множество низкоуровневого кода для обработки подписок и т. Д. В будущих службах bl (например, для отчетов).

Для решения этих проблем я хочу использовать что-то вроде ServiceBus.
Решения MS стоят дорого для наших клиентов, NServiceBus меня немного пугает из-за его источников с открытым исходным кодом (и Class1 в исходном коде = D), и CIO попросил избегать его использования.
Поэтому я решил написать свою собственную простую шину и столкнулся с проблемами при адресации и подписке на разные типы услуг (синглтон, на сеанс, на вызов), а также существует потребность в балансировке нагрузки.

Я нашел довольно элегантное решение для этого: использовать «адаптеры» для сервисов bus - wcf для решения некоторых специфических вопросов работы со службами, таких как балансировка нагрузки. Так что шина будет видеть только адаптеры и маршрутизировать сообщения между ними, и они будут пересылать сообщения дальше. Но я беспокоюсь о производительности и всей идее .. Буду очень рад услышать мысли обо всем этом =)
Шина PS и адаптеры используют MSMQ для связи между ними, но другие службы могут использовать привязки http, tcp.
PS2 Извините за мой английский, это не мой родной язык =)

Ответы [ 3 ]

1 голос
/ 15 января 2010

Я, вероятно, просто возвращаю мертвых обратно, но если вы все еще хотите внедрить собственную шину, эти ссылки могут пригодиться (на уровне разработки):

http://msdn.microsoft.com/en-us/magazine/cc500646.aspx

http://msdn.microsoft.com/en-us/magazine/cc546553.aspx

Я нашел ответы на некоторые мои вопросы о том, как динамически регистрировать подсервисы и маршрутизировать сообщения от клиента к ним через службу центрального маршрутизатора

1 голос
/ 16 октября 2009

Вы можете попробовать использовать "sql service broker" в качестве служебной шины

http://javiercrespoalvez.com/2009/03/using-sql-service-broker-in-net.html

В блоге также есть ссылки на другие сервисные автобусы, которые вы можете попробовать.

0 голосов
/ 24 октября 2009

Спасибо за все ответы =) Мне удалось убедить боссов использовать NServiceBus. (После создания рабочего прототипа автобуса на выходных =). Теперь он вполне вписывается в систему =)

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