Итак, у меня есть эта идея, над которой я работаю, где сервисы на некоторых узлах должны динамически обнаруживать другие службы во время выполнения на основе метаданных, которые они могут публиковать. И я пытаюсь выяснить, как это сделать.Публикация метаданных в Service Fabric
Некоторые из этих метаданных будут обнаружены на локальной машине во время выполнения, но затем должны быть опубликованы в Ткань, чтобы другие службы могли принимать на нее решения.
Я вижу материал расширения в ServiceManifests. Это хорошее начало. Но похоже, что вы можете изменять или добавлять расширения во время выполнения. Это было бы чудесно!
Представьте себе мой прецедент. У меня много машин на Fabric, с множеством сервисов, развернутых для них. То, что я рекламирую, - это аудиокодеки, которые может поддерживать данный компьютер. Некоторые узлы имеют DirectShow. Таким образом, они будут публиковать локальные кодеки. На некоторых машинах работают 32-битные службы и публикуются 32-битные кодеки DirectShow, которые у них есть (это действительно то, что мне нужно, поскольку у меня есть некоторые проприетарные кодеки ACM, которые работают только в 32 бит). Некоторые машины - это Linux-машины и хотят предоставить их кодеки GStreamer.
Каждый из них должен публиковать связанные метаданные о том, что они могут делать, чтобы другие службы могли связывать вместе из этих метаданных график о том, как обрабатывать данный мультимедийный файл.
И тогда каждый будет хорошо сообщать о своей информации о здоровье и нагрузке, поэтому ткань может определить, как масштабироваться.
Каждая из этих служб будет поддерживать один и тот же интерфейс IService, но каждый из них будет использоваться только клиентами, которые решили использовать их на основе опубликованных метаданных.
Итак, мне нравится эта идея. Но это оставляет без ответа вопрос о динамическом открытии. Есть ли хороший способ я могу динамически внедрять службы в кластер после обнаружения локальных кодеков? – wasabi
@ vaclav-turecek как достичь этого? Каким образом можно указать метаданные в экземплярах? И где я могу найти документацию о том, как можно управлять услугами/приложением для достижения этого? Благодарю. –