Molti livelli in uno o più servizi? (e perché)


13

Ho un enigma nel ricevere consigli contrastanti su come procedere. Quindi mi piacerebbe metterlo al GIS-SE per alcune risposte giustificate.

Scenario:

  • Il client ha un'applicazione di mappatura web. Non vuole suddividere in più applicazioni più piccole. Sebbene ciò vada contro l'approccio moderno per le mappe sul Web (ovvero molte app per mappe Web focalizzate su una mappa Web principale), credo fermamente che per alcuni utenti, provare a replicare un'applicazione GIS sul Web sia ok (a volte ).

  • Il client ha memorizzato nella cache la maggior parte dei livelli della sua mappa di base in servizi separati.

  • Il client richiede ancora ulteriori 600-700 livelli in un servizio di mappe dinamiche ...
  • Il servizio verrà pubblicato con tutti questi livelli disattivati .
  • Non è previsto che gli utenti accendano più di 10-40 livelli alla volta.

Immagino che la tua reazione iniziale a questo sia simile alla mia (600+ ?! WTF ?!)

Tuttavia, il requisito è impostato sulla pietra e perché no? La loro precedente applicazione ArcIMS aveva funzionalità simili, quindi perché questo nuovo prodotto ArcGIS Server non può fare lo stesso? Gli utenti devono potenzialmente essere in grado di confrontare ed eseguire analisi incrociate sull'intera gamma di livelli, anche se i livelli appartengono ad altri dipartimenti.

Prima di saltare alle conclusioni, il client è un amministratore ArcGIS Server ben informato.
Hanno amministrato i 600 livelli secondo tutte le regole delle migliori pratiche: ad es. Intervalli di scala combinati con query di definizione; annotazione su etichettatura; generalizzare strati complessi su piccola scala; pubblicare come MSD; eccetera

Problema :

Qual è l'approccio migliore qui?

  1. Pubblica tutti i 600 livelli in un unico servizio di mappa dinamica

  2. Dividi i livelli in raggruppamenti logici (idrologia, pianificazione, ecologia, utilità, ecc.)

Se vai con il n. 1 e hai attivato alcuni livelli complessi. Se si desidera attivare un semplice livello punti, ArcGIS Server dovrà comunque eseguire nuovamente il rendering degli interi livelli.

Se si va con il n. 2, ogni volta che si effettua una richiesta, potenzialmente, l'applicazione Web potrebbe dover effettuare diverse richieste GET per ExportMaps dai singoli servizi di mappe (è un problema o crea un carico aggiuntivo su ArcGIS Server rispetto al n. 1 ?)

E quindi questo porta alla configurazione e alla messa a punto per garantire che tutto sia il più rapido possibile. Possiamo ridimensionare il back-end di ArcGIS Server su più host e disporre di un buon hardware su cui installarlo.

Se vai con il n. 1, puoi lanciare il numero massimo di istanze che puoi gestire con AGS.

Se vai con il n. 2, suppongo che valuti le prestazioni dei servizi della mappa (test di carico e controlli dei tempi di attesa) e indirizzi le istanze min / max di conseguenza per garantire che non vi sia un servizio che sia un "anello debole".

Attualmente mi sto avvicinando all'approccio n. 2, poiché la mia testa mi sta ancora dicendo che avere 600 livelli in un servizio è una follia, ma se sono tutti disattivati ​​per impostazione predefinita, non c'è davvero alcun problema.

Mi piacerebbe sentire i tuoi pensieri. Fammi sapere se hai bisogno di maggiori informazioni tramite i commenti, ma non cerchi risposte come "usa un'applicazione desktop" o "educale a fare le cose in modo diverso"


Dalle discussioni nei commenti, non ho menzionato un'altra considerazione. L'applicazione in cui verrà consumato il servizio ha la capacità di sicurezza a livello di livello (a livello di applicazione). Pertanto, il gruppo di utenti (che è abbastanza grande) è assegnato a un ruolo particolare e quel ruolo avrà accesso a tutti i 600 livelli. Altri ruoli saranno limitati.


Personalmente, avrei messo insieme una domanda al Primo Ministro per delineare il problema, dare consigli sulle migliori pratiche, consigliare una via d'uscita, quindi lasciarlo nelle loro mani. Alla fine della giornata, non appena qualcuno dice: "ma è così", hai le mani piene. In questa situazione, farei come sopra, quindi sei stato professionale, hai fatto il tuo lavoro e il resto dipende da loro. Consiglierei anche di includere chiunque sia ricco e famoso in termini di dove lavori, via e-mail, per assicurarsi che il consiglio sia disponibile e che tutti sappiano quale sia il consiglio e chi lo abbia dato.
Peloso,

Non dici il tipo di webapp che verrà utilizzato per sfogliare i livelli, ma suppongo che sia un tipo di openlayer. In tal caso, tieni presente che anche il browser potrebbe presentare problemi, poiché non invierà più di alcune (tra 2 e 6) richieste simultanee allo stesso server (inclusi XHR, css e tutto il resto). Vedi questo articolo per i dettagli e alcune alternative (di solito scelgo i nomi multipli quando l'IT è cooperativo): stevesouders.com/blog/2008/03/20/…
unicoletti

@Hairy - In realtà penso che possiamo soddisfare i requisiti del client con ArcGIS Server, e anche se sta spingendo i limiti su ciò che è possibile con AGS, è ancora fattibile, e possiamo ancora ricorrere al nostro precedente consiglio di rompere il app in più app.
Simon,

1
So che è fattibile, ho lavorato con clienti che fanno lo stesso, ma non credo sia consigliabile, che sono cose diverse. Se decidono di avere 10 clienti che vogliono tutti e 600 i livelli, contemporaneamente, indipendentemente da cosa stai eseguendo AGS, cadrà
Hairy,

Risposte:


8

Lo strumento di pianificazione della capacità è stato utilizzato per confrontare un servizio di mappe super pesante con 4 servizi di mappe lite e i risultati indicano che il servizio di mappe pesanti è la strada da percorrere.

Questa potrebbe non essere la risposta giusta e lo strumento di pianificazione della capacità non tiene conto di tutti i fattori (ad es. I flussi di lavoro degli utenti) - fatemi sapere tramite commenti cosa ne pensate.

1 servizio cartografico super pesante:
utilizzo CPU server app = 49,4%
utilizzo CPU server database = 7,6%
carico di rete = 16 Mbps
tempo di risposta display = 0,88 secondi

(Le immagini possono essere visualizzate in grande formato da RC e aperte in una nuova scheda)

inserisci qui la descrizione dell'immagine

4 servizi mappa lite:
utilizzo CPU server app = 55,4%
utilizzo CPU server database = 7,6%
carico di rete = 64 Mbps
tempo di risposta display = 0,32 secondi ciascuno, quindi tra 0,32 e 1,28 secondi a seconda delle spese generali del browser web

inserisci qui la descrizione dell'immagine

Più logica per supportare l'approccio del servizio con una mappa:

  1. Tutti i livelli sono quindi nello stesso servizio di mappe;
    un. una richiesta viene inviata al server
    b. un processo SOC disegna la mappa
    c. un'immagine viene restituita sulla rete

  2. I 40 livelli sono distribuiti su 4 servizi cartografici (10 strati ciascuno), quindi;
    un. 4 richieste vengono inviate al server
    b. 4 processi SOC disegnano una mappa
    c. 4 immagini vengono restituite sulla rete

1a e 1c saranno più veloci e caricheranno meno sulla rete rispetto a 2a e 2c.

2b può utilizzare l'elaborazione parallela per restituire una mappa più veloce di 1b per un singolo utente, ma non sarà così per molti utenti. In effetti, l'overhead delle transazioni aggiuntive elaborate dal server in 2b (più il carico di rete aggiuntivo di 2c) vedrà la scala 1b molto meglio all'aumentare del numero di utenti.


2
sembra logico. Gestire l'MXD a 600 livelli non sembra molto divertente.
Stephen Lead,

1

Sebbene l'utilizzo di più servizi, il ridimensionamento di livelli / etichette, la memorizzazione nella cache e l'utilizzo di etichette non dinamiche contribuiscano a migliorare l'esperienza dell'applicazione Web, l'utente finale noterà l'hit iniziale di caricare tutti i 600+ livelli in un'unica applicazione. Soprattutto il tempo necessario per popolare il sommario. Se dovessi creare un'applicazione a più di 600 livelli, sceglierei sicuramente l'opzione n. 2. Potresti voler modellare la tua struttura di dati su un modello di dati (come il modello di dati del governo locale).

Il white paper in basso evidenzia alcune linee guida sulle best practice e statistiche sulle prestazioni interessanti per le configurazioni dell'applicazione Web ArcGIS Server.

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


Un buon punto sul sommario, ma in realtà si carica bene. 'hit iniziale per caricare oltre 600 livelli' = dal punto di vista della richiesta della mappa, sta ancora effettuando una sola richiesta a un servizio. Quindi in realtà è abbastanza veloce per AGS restituire l'esportazione FINO A quando iniziano a girare> 20 strati.
Simon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.