2015-08-16 2 views
1

Есть данные IoT коллекция проект, а также данные IoT обработка проект. Они разрабатываются и поддерживаются отдельно. Однако было бы полезно разделить общие зерна между ними в силосе Орлеана (или силовом кластере). Как бы архитектура выглядела в самодостаточном сценарии - монолитный силос со ссылками на оба проекта для связи внутри силоса или двух отдельных силосов, взаимодействующих снаружи? Если в одном силосе, может ли силос динамически обнаруживать зерно .dll?Orleans Architecture Design - Силосные проекты объединены или раздельны?

+1

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

+1

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

+1

check out feature # 685 - https://github.com/dotnet/orleans/issues/685, он сделает все проще :) –

ответ

2

Там, вероятно, будет лучше ответы, но до тех пор:

Там не некоторые компромиссы. По производительности, лучше распределить все ваши зерна (всех сервисов) по всему кластеру. Таким образом, каждое зерно связывается с другими зернами через инфраструктуру Орлеана (я думаю, это двоичные сериализованные сообщения через tcp), без каких-либо дополнительных накладных расходов. Но когда у каждого сервиса (или проекта) есть свой собственный силос, вам может понадобиться шлюз - HTTP-прослушиватель, возможно, в дополнение к Орлеану. Однако в первом примере ваши услуги становятся связанными. Вы не можете развернуть новую версию службы, если есть силос, на котором установлена ​​более старая версия (в противном случае может быть 2 зерна одного и того же объекта). Но если вы отключите этот силос, вы отключите остальные сервисы. Это очень нетривиальная проблема.

Если в одном бункере, может силос динамически обнаруживать зерна .dll-х

Не уверен, что вы имеете в виду. Когда бункер загружается, он рекурсивно ищет DLL внутри своей папки, и если он находит зерно, загружает их.

+1

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

+1

В ранней версии примеров проектов они использовали сценарий post-build в проекте ** grains **, чтобы скопировать все dll из каталога binins в каталог ** silo **. Таким образом, проект силоса был полностью отделен от проекта зерна. Я не знаю о более новых версиях примеров проектов, но я думаю, что имеет смысл использовать ссылку на проект вместо сценария пост-сборки. –