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?
Opublikuj wszystkie 600 warstw w jednej dynamicznej usłudze map
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.
źródło
Odpowiedzi:
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)
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
Więcej logiki do obsługi podejścia z jedną usługą mapową:
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ć
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.
źródło
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
źródło