2016-08-28 9 views
5

Mam usługę orkiestratora, która śledzi uruchamiane instancje i z jaką prośbą aktualnie się zajmują. Jeśli wymagana jest nowa instancja, wykonuję wywołanie REST, aby zwiększyć instancje i czekać na połączenie nowej instancji z orchestratorem. To jedno żądanie na instancję.Zachowanie podczas zmniejszania liczby wystąpień aplikacji Bluemix

Orkiestrator śledzi, czy instancja coś robi i wie, które instancje można zatrzymać, jednak w interfejsie API nie ma nic, co pozwoliłoby zmniejszyć liczbę instancji zatrzymujących określoną instancję, co staram się osiągnąć .

Czy jest coś, co mogę zrobić, aby manipulować platformą w celu deterministycznego zatrzymywania wystąpień, które chcę zatrzymać? Być może przez długie odświeżanie żądań HTTP do instancji, których wymagam i zabijanie żądania, gdy nie są już potrzebne, a następnie wywołanie interfejsu API w celu zmniejszenia liczby instancji?

Częścią problemu jest to, że nie znam specyfiki obecnego zachowania ...

Odpowiedz

1

Zakładając mówisz CloudFoundry/natychmiastowe aplikacji wykonywania, wszystkie instancje od An aplikacje są uruchomione za modułem równoważenia obciążenia, który używa programu round-robin do rozsyłania żądań między instancjami (chyba że masz skonfigurowany plik cookie z ustawieniami powinowactwa). Rozróżnianie poszczególnych instancji dla żądań przychodzących lub ręcznego skalowania nie jest zalecane i jest to wzorzec przeciwny. Nie można kontrolować, która instancja wybierze zadanie zmniejszania skali.

Jeśli naprawdę chcesz mieć taki poziom kontroli przy każdej instancji, być może powinieneś wdrożyć je jako osobne aplikacje. MyApp1, MyApp2, MyApp3 itd. Wszystkie twoje aplikacje mogą mieć tę samą trasę (myapp.mybluemix.net). Każda z aplikacji może teraz rozróżniać się według ich nazwy (VCAP_APPLICATION), co pozwala na ich zakończenie.

+0

Do instancji nie są wysyłane żadne żądania; kiedy się uruchomi, wysyła prośbę do sadystora o "pracę". Po zakończeniu, jeśli nie ma więcej pracy, chciałbym zmniejszyć liczbę uruchomionych wystąpień. Problem polega na tym, że inne procesy mogą przetwarzać "prace" i nie chcę, aby były zamykane, gdy zmniejszam liczbę wystąpień o jeden. Posiadanie osobnych aplikacji działałoby tutaj, ale gdy chcę zwiększyć liczbę aplikacji - znowu stałoby się to trudniejsze, ponieważ musiałbym wystawić całą nową aplikację. – Cheetah

+0

Chyba muszę znać algorytm, według którego CF/Bluemix wybiera, która instancja ma się zatrzymać ... w celu manipulowania nią do moich potrzeb. – Cheetah

+0

Czy sprawdziłeś platformę bez serwera, taką jak OpenWhisk dla swojej aplikacji? To może być lepsze dopasowanie niż Cloud Foundry. Usługi aplikacji są wykonywane tylko po otrzymaniu żądania, nie masz instancji oczekujących na wykonanie pracy. Platforma może wykonywać wiele usług równolegle w celu obsługi skalowania. Możesz wiązać swoje usługi, aby słuchać zewnętrznych strumieni zdarzeń i być wywoływane na żądanie w przypadku wystąpienia nowych zdarzeń. –

Powiązane problemy