Wiele warstw w jednej lub wielu usługach? (i dlaczego)

13

Mam zagadkę, że otrzymuję mieszane porady, jak się poruszać. Dlatego chciałbym przekazać go do GIS-SE w celu uzyskania uzasadnionych odpowiedzi.

Scenariusz:

  • Klient ma aplikację do mapowania stron internetowych. Nie chce dzielić się na wiele mniejszych aplikacji. Chociaż jest to sprzeczne z tym, co jest współczesne podejście do map w Internecie (tj. Wiele skoncentrowanych aplikacji do map internetowych na jednej głównej mapie), mocno wierzę, że dla niektórych użytkowników próba replikacji aplikacji GIS w sieci jest ok ( czasami ).

  • Klient zbuforował tyle swoich warstw mapy bazowej do osobnych usług.

  • Klient nadal wymaga dodatkowych 600-700 warstw w dynamicznej usłudze map ...
  • Usługa zostanie opublikowana z wyłączonymi wszystkimi tymi warstwami .
  • Nie przewiduje się, że użytkownicy będą włączać więcej niż 10–40 warstw jednocześnie.

Wyobrażam sobie, że twoja początkowa reakcja na to jest podobna do mojej (600+ ?! WTF ?!)

Jednak - wymaganie jest określone w kamieniu, a dlaczego nie? Ich poprzednia aplikacja ArcIMS miała podobną funkcjonalność, więc dlaczego ten nowszy produkt ArcGIS Server nie robi tego samego? Użytkownicy mogą potencjalnie mieć możliwość porównywania i przeprowadzania analizy całego zakresu warstw, nawet jeśli warstwy te należą do innych działów.

Zanim wyciągniesz wnioski, klient jest zdeklarowanym administratorem ArcGIS Server.
Administrowali 600 warstwami zgodnie z wszystkimi zasadami najlepszych praktyk: np. Zakresy skali w połączeniu z zapytaniami dotyczącymi definicji; adnotacja na etykiecie; uogólnienie złożonych warstw w małych skalach; publikować jako MSD; itp

Problem :

Jakie jest tutaj lepsze podejście?

  1. Opublikuj wszystkie 600 warstw w jednej dynamicznej usłudze map

  2. Podziel warstwy na logiczne grupy (hydrologia, planowanie, ekologia, narzędzia itp.)

Jeśli wybierzesz numer 1 i masz włączonych kilka złożonych warstw. Jeśli chcesz włączyć prostą warstwę punktów, wówczas ArcGIS Server nadal będzie musiał ponownie renderować całe warstwy.

Jeśli wybierzesz numer 2, potencjalnie za każdym razem, gdy wysyłasz żądanie, aplikacja sieciowa może być zmuszona do wysłania kilku żądań GET dla ExportMaps z poszczególnych usług mapowych (czy to źle, czy też powoduje dodatkowe obciążenie ArcGIS Server ponad numer 1 ?)

Prowadzi to do konfiguracji i dostrajania, aby wszystko było jak najszybciej. Możemy przeskalować zaplecze ArcGIS Server do wielu hostów i mieć dobry sprzęt, aby go obsadzić.

Jeśli wybierzesz numer 1, możesz rzucić maksymalną liczbę instancji obsługiwanych przez AGS.

Jeśli wybierzesz numer 2, zakładam, że oceniasz wydajność usług mapowych (testowanie obciążenia i sprawdzanie czasów oczekiwania) i odpowiednio reagujesz na wystąpienia min / max, aby upewnić się, że nie ma jednej usługi, która byłaby „słabym łączem”.

Obecnie skłaniam się ku podejściu nr 2, ponieważ moja głowa wciąż mówi mi, że posiadanie 600 warstw w jednej usłudze to szaleństwo, ale jeśli wszystkie są domyślnie wyłączone, naprawdę nie ma problemu.

Bardzo chciałbym usłyszeć twoje myśli. Daj mi znać, jeśli potrzebujesz więcej informacji za pomocą komentarzy, ale nie szukasz odpowiedzi takich jak „użyj aplikacji komputerowej” lub „naucz ich, aby działali inaczej”


Z dyskusji w komentarzach nie wspomniałem o innym rozważaniu. Aplikacja, w ramach której usługa będzie używana, ma możliwość zabezpieczenia na poziomie warstwy (na poziomie aplikacji). Dlatego grupa użytkowników (która jest dość duża) przypisana jest do określonej roli i ta rola będzie miała dostęp do pełnych 600 warstw. Inne role będą ograniczone.

Szymon
źródło
Osobiście zadałem pytanie premierowi, nakreślając problem, doradzając najlepsze praktyki, doradzając wyjście, a następnie zostawiając to w ich rękach. Pod koniec dnia, gdy tylko ktoś mówi: „ale tak już było”, masz pełne ręce roboty. W tej sytuacji zrobiłbym jak wyżej, wtedy byłeś profesjonalistą, wykonałeś swoją pracę, a reszta należy do nich. Radzę również, aby uwzględnić każdego, kto jest bogaty i sławny pod względem miejsca pracy, w wiadomości e-mail, aby upewnić się, że porady są dostępne i że każdy wie, co to była porada i kto ją udzielił.
Hairy
Nie mówisz o rodzaju aplikacji internetowej, która będzie używana do przeglądania warstw, ale zakładam, że jest to rodzaj openlayerów. W takim przypadku należy pamiętać, że przeglądarka może również powodować problemy, ponieważ nie będzie wysyłała więcej niż kilku (między 2 a 6) równoczesnych żądań do tego samego serwera (w tym XHR, css i wszystkiego). Zobacz ten artykuł, aby uzyskać szczegółowe informacje i niektóre alternatywy (zwykle używam wielu nazw, gdy IT współpracuje): stevesouders.com/blog/2008/03/20/…
unicoletti
@Hairy - tak naprawdę uważam, że możemy spełnić wymagania klienta dzięki ArcGIS Server i chociaż przesuwa on granice możliwości programu AGS, wciąż jest w stanie go wykonać i nadal możemy polegać na naszych wcześniejszych poradach, aby przełamać aplikację do wielu aplikacji.
Simon
1
Wiem, że jest to wykonalne, pracuję z klientami, którzy robią to samo, ale nie sądzę, że jest to wskazane, ponieważ są to różne rzeczy. Jeśli zdecydują się mieć 10 klientów, którzy chcą wszystkich 600 warstw jednocześnie, bez względu na to, na czym uruchomisz AGS, to się przewróci
Hairy
2
Zobacz powiązane pytanie
Kirk Kuykendall

Odpowiedzi:

8

Wykorzystano narzędzie do planowania pojemności, aby porównać jedną bardzo ciężką usługę mapy z 4 usługami map Lite, a wyniki wskazują, że usługa ciężkiej mapy jest właściwą drogą.

To może nie być właściwa odpowiedź, a narzędzie do planowania wydajności nie uwzględnia wszystkich czynników (np. Przepływów pracy użytkowników) - daj mi znać poprzez komentarze, co myślisz.

1 bardzo ciężka usługa
mapowa : wykorzystanie procesora przez serwer aplikacji = 49,4%
wykorzystanie procesora przez serwer bazy danych = 7,6%
obciążenie sieci = 16 Mb / s
Czas reakcji wyświetlacza = 0,88 s

(Obrazy można wyświetlić w całości w widoku RC i otworzyć w nowej karcie)

wprowadź opis zdjęcia tutaj

4 usługi map lite:
Wykorzystanie procesora przez serwer aplikacji = 55,4%
Wykorzystanie procesora przez serwer bazy danych = 7,6%
Obciążenie sieci = 64 Mb / s
Czas reakcji wyświetlacza = 0,32 s każda, a więc od 0,32 do 1,28 s w zależności od narzutów przeglądarki internetowej

wprowadź opis zdjęcia tutaj

Więcej logiki do obsługi podejścia z jedną usługą mapową:

  1. Dlatego wszystkie warstwy znajdują się w tej samej usłudze map;
    za. jedno żądanie jest wysyłane na serwer
    b. jeden proces SOC rysuje mapę
    c. jeden obraz jest zwracany przez sieć

  2. Dlatego 40 warstw jest rozłożonych na 4 usługi map (po 10 warstw każda);
    za. 4 żądania są wysyłane na serwer
    b. 4 procesy SOC narysuj mapę
    c. 4 obrazy są zwracane przez sieć

1a i 1c będą szybsze i obciążą sieć mniej niż 2a i 2c.

2b może używać przetwarzania równoległego, aby zwrócić mapę szybciej niż 1b dla jednego użytkownika, ale nie będzie tak w przypadku wielu użytkowników. W rzeczywistości narzut związany z dodatkowymi transakcjami przetwarzanymi przez serwer w 2b (plus dodatkowe obciążenie sieci 2c) spowoduje, że skala 1b będzie znacznie lepsza wraz ze wzrostem liczby użytkowników.

Szymon
źródło
2
to brzmi logicznie. Zarządzanie 600-warstwowym MXD nie brzmi tak dobrze.
Stephen Lead,
1

Chociaż korzystanie z wielu usług, skalowanie warstw / etykiet, buforowanie i stosowanie etykiet niedynamicznych pomaga poprawić działanie aplikacji sieci Web, początkowe trafienie polegające na załadowaniu wszystkich ponad 600 warstw do jednej aplikacji będzie zauważalne przez użytkownika końcowego. Zwłaszcza czas potrzebny do wypełnienia TOC. Jeśli musisz stworzyć aplikację z ponad 600 warstwami, zdecydowanie wybrałbym opcję 2. Możesz modelować swoją strukturę danych w oparciu o model danych (taki jak model danych samorządu lokalnego).

Poniższy dokument zawiera kilka interesujących wskazówek dotyczących najlepszych praktyk i statystyk wydajności dla konfiguracji aplikacji sieciowych ArcGIS Server.

http://www.esri.com/library/whitepapers/pdfs/creating-arcgisserver-web-mapping.pdf

grafika 21
źródło
Dobra uwaga na temat spisu treści, ale w rzeczywistości ładuje się dobrze. „początkowe trafienie, aby załadować ponad 600 warstw” = z perspektywy żądania mapy, wciąż powoduje tylko jedno żądanie do jednej usługi. Tak więc AGS zwraca eksport dość szybko, dopóki nie zaczną włączać> 20 warstw.
Simon