Сервис Fabri c позволит вам реализовать архитектуру, которую вы хотите.
- Можно ли вручную создавать новые экземпляры агентов веб-сканирования с помощью программируемого кода и передавать им параметр имени хоста, используя Azure Service Fabri c? (Может быть, используя класс FabricClient для управления кластером и создания экземпляров службы?)
Да. Служба, которую вы будете разрабатывать и развертывать в Service Fabri c, будет иметь значение ServiceType
. Типы сервисов на самом деле не запускаются, вместо этого из ServiceType вы можете создать настоящие сервисы с именами. Одна служба (например, ServiceA) будет иметь несколько экземпляров, чтобы обеспечить масштабирование и доступность. Вы можете программно создавать и удалять сервисы определенного типа и передавать им параметры, чтобы каждый сервис знал, какой URL сканировать. Посмотрите пример здесь .
Какая модель программирования ASF лучше всего подходит для этого параллельного сценария с долгосрочными агентами? Службы без сохранения состояния, службы с отслеживанием состояния или модель актера? Каждый агент может запускаться как долго выполняемая задача, поскольку он рекурсивно сканирует указанные c URL-адреса имени хоста и прослушивает очередь.
Я бы выбрал службы без сохранения состояния, поскольку они будут наиболее эффективный с точки зрения использования ресурсов и самый простой в управлении (нет необходимости хранить состояние и управлять состоянием, разбиением и репликами). Единственное, что вам нужно учитывать, - это то, что каждый сервис в конечном итоге обработает sh и перезапустится, поэтому вам нужно сохранить текущее место сканирования в постоянном хранилище, а не в памяти.
Можно ли контролировать и изменять этот верхний предел максимального числа активных агентов во время выполнения приложения?
Да. Служба Службы Fabri c работают в узлах (виртуальных машинах), а в Azure они управляются наборами масштабов виртуальных машин. Вы можете легко добавлять и удалять узлы из VMSS, что позволит вам настроить необходимую вам общую вычислительную мощность и объем памяти, а фактическое количество сервисов уже контролируется вами, как указано в пункте 1.
Возможно ли иметь бесконечный l oop компонент CWCE службы без сохранения состояния, который постоянно прослушивает сообщения очереди, чтобы породить новых агентов?
Абсолютно. Микросервисы, управляемые сообщениями, очень распространены. Технически это не бесконечный l oop, а сервис с прослушивателем связи по шине. Я нашел один здесь в качестве ссылки, но я не знаю, готов ли он к производству