¿Muchas capas en uno o múltiples servicios? (y por qué)

13

Tengo un enigma de que estoy recibiendo consejos mixtos sobre cómo hacerlo. Por lo tanto, me gustaría ponerlo en GIS-SE para obtener algunas respuestas justificadas.

Guión:

  • El cliente tiene una aplicación de mapeo web. No quiere dividirse en múltiples aplicaciones más pequeñas. Aunque esto va en contra de lo que el enfoque moderno es para los mapas en la web (es decir, muchas aplicaciones de mapas web enfocadas en un mapa web principal), creo firmemente que para algunos usuarios, intentar replicar una aplicación SIG en la web es ok (a veces )

  • El cliente ha almacenado en caché la mayor parte de sus capas de mapa base en servicios separados.

  • El cliente aún requiere 600-700 capas adicionales en un servicio de mapas dinámicos ...
  • El servicio se publicará con todas estas capas desactivadas .
  • No se anticipa que los usuarios activen más de 10-40 capas a la vez.

Me imagino que tu reacción inicial a esto es similar a la mía (¡¿600+ ?! WTF ?!)

Sin embargo, el requisito se establece en piedra y ¿por qué no? Su aplicación ArcIMS anterior tenía una funcionalidad similar, entonces, ¿por qué este nuevo producto ArcGIS Server no puede hacer lo mismo? Los usuarios potencialmente necesitan poder comparar y realizar análisis cruzados en todo el rango de capas, incluso si las capas pertenecen a otros departamentos.

Antes de llegar a conclusiones, el cliente es un administrador de ArcGIS Server.
Han administrado las 600 capas según todas las reglas de mejores prácticas: por ejemplo, rangos de escala combinados con consultas de definición; anotación sobre etiquetado; generalizar capas complejas a escalas pequeñas; publicar como MSD; etc.

Problema :

¿Cuál es el mejor enfoque aquí?

  1. Publique las 600 capas en un servicio de mapas dinámicos.

  2. Divida las capas en agrupaciones lógicas (hidrología, planificación, ecología, servicios públicos, etc.)

Si va con el # 1, y tiene algunas capas complejas activadas. Si desea activar una capa de puntos simple, ArcGIS Server aún tendrá que mostrar las capas completas nuevamente.

Si va con el n. ° 2, cada vez que realiza una solicitud, la aplicación web podría tener que realizar varias solicitudes GET para ExportMaps desde los servicios de mapas individuales (esto es malo o crea una carga adicional para ArcGIS Server sobre el n. ° 1) ?)

Y luego esto lleva a la configuración y ajuste para garantizar que todo sea lo más rápido posible. Podemos escalar el back-end de ArcGIS Server a múltiples hosts y tener un buen hardware para instalarlo.

Si va con el # 1, puede arrojar el número máximo de instancias que AGS puede manejar.

Si va con el n. ° 2, supongo que evalúa el rendimiento de los servicios de mapas (prueba de carga y mira los tiempos de espera) y aborda las instancias mín / máx en consecuencia para asegurarse de que no haya un solo servicio que sea un 'enlace débil'.

Actualmente me estoy inclinando hacia el enfoque # 2, ya que mi cabeza aún me dice que tener 600 capas en un servicio es una locura, pero si todas están desactivadas por defecto, realmente no hay problema.

Me encantaría conocer tu opinión. Avíseme si necesita más información a través de los comentarios, pero no busca respuestas como "usar una aplicación de escritorio" o "educarlos para que hagan las cosas de manera diferente"


De las discusiones en los comentarios, no mencioné otra consideración. La aplicación dentro de la cual se consumirá el servicio tiene la capacidad de seguridad de nivel de capa (en el nivel de aplicación). Por lo tanto, el grupo de usuarios (que es bastante grande) está asignado a un rol particular, y ese rol tendrá acceso a las 600 capas completas. Otros roles serán limitados.

Simón
fuente
Personalmente, formulé una pregunta al primer ministro describiendo el problema, aconsejé sobre las mejores prácticas, aconsejé una salida y luego la dejé en sus manos. Al final del día, tan pronto como alguien dice: 'pero así fue', tienes las manos llenas. En esta situación, haría lo anterior, entonces usted ha sido profesional, hizo su trabajo y el resto depende de ellos. Aconsejaría, también, incluir a cualquier persona rica y famosa en términos de dónde trabaja, en el correo electrónico, para asegurarse de que el consejo esté disponible, y que todos sepan cuál fue el consejo y quién lo dio.
Peludo
No dice el tipo de aplicación web que se utilizará para explorar las capas, pero supongo que es de tipo de capas abiertas. En ese caso, tenga en cuenta que el navegador también podría presentar problemas, ya que no emitirá más de unas pocas (entre 2 y 6) solicitudes concurrentes al mismo servidor (incluidos XHR, css y todo). Consulte este artículo para obtener detalles y algunas alternativas (generalmente utilizo los nombres múltiples cuando IT coopera): stevesouders.com/blog/2008/03/20/…
unicoletti
@Hairy: realmente creo que podemos cumplir los requisitos del cliente con ArcGIS Server, y aunque está superando los límites de lo que es posible con AGS, todavía es posible, y aún podemos recurrir a nuestros consejos anteriores para romper el aplicación en múltiples aplicaciones.
Simon
1
Sé que es factible, he estado trabajando con clientes que hacen lo mismo, pero no creo que sea aconsejable, que son cosas diferentes. Si deciden tener 10 clientes que quieran las 600 capas, al mismo tiempo, sin importar en qué estén ejecutando AGS, se caerá
Hairy
2
Ver pregunta relacionada
Kirk Kuykendall, el

Respuestas:

8

Usó la herramienta de planificación de capacidad para ayudar a comparar un servicio de mapas superpesado con 4 servicios de mapas lite, y los resultados indican que el servicio de mapas pesados ​​es el camino a seguir.

Puede que esta no sea la respuesta correcta, y la herramienta de planificación de capacidad no tiene en cuenta todos los factores (p. Ej., Los flujos de trabajo de los usuarios); háganme saber a través de comentarios lo que piensan.

1 servicio de mapas súper pesado:
utilización de la CPU del servidor de aplicaciones = 49.4%
utilización de la CPU del servidor de bases de datos = 7.6%
Carga de red = 16 Mbps
Tiempo de respuesta en pantalla = 0.88 segundos

(Las imágenes se pueden ver en grande por RC y abrir en una pestaña nueva)

ingrese la descripción de la imagen aquí

4 servicios de mapas lite:
utilización de la CPU del servidor de aplicaciones = 55.4%
utilización de la CPU del servidor de bases de datos = 7.6%
Carga de red = 64 Mbps
Tiempo de respuesta de visualización = 0.32 segundos cada uno, por lo que entre 0.32 y 1.28 segundos dependiendo de los gastos generales del navegador web

ingrese la descripción de la imagen aquí

Más lógica para soportar el enfoque de un servicio de mapas:

  1. Todas las capas están en el mismo servicio de mapas, por lo tanto;
    a. se envía una solicitud al servidor
    b. un proceso SOC dibuja el mapa
    c. se devuelve una imagen a través de la red

  2. Las 40 capas se distribuyen en 4 servicios de mapas (10 capas cada una), por lo tanto;
    a. Se envían 4 solicitudes al servidor
    b. 4 procesos SOC dibujan un mapa
    c. Se devuelven 4 imágenes a través de la red.

1a y 1c serán más rápidos y pondrán menos carga en la red que 2a y 2c.

2b puede usar el procesamiento paralelo para devolver un mapa más rápido que 1b para un solo usuario, pero este no será el caso para muchos usuarios. De hecho, la sobrecarga de las transacciones adicionales que procesa el servidor en 2b (más la carga de red adicional de 2c) verá que 1b escala mucho mejor a medida que aumenta el número de usuarios.

Simón
fuente
2
Eso suena lógico. Administrar el MXD de 600 capas no parece muy divertido.
Stephen Lead
1

Aunque el uso de múltiples servicios, el escalado de capas / etiquetas, el almacenamiento en caché y el uso de etiquetas no dinámicas ayudan a mejorar la experiencia de la aplicación web, el usuario final notará el golpe inicial para cargar las más de 600 capas en una aplicación. Especialmente el tiempo que lleva poblar el TOC. Si tiene que crear una aplicación de más de 600 capas, definitivamente elegiría la opción # 2. Es posible que desee modelar su estructura de datos contra un modelo de datos (como el modelo de datos del gobierno local).

El documento técnico a continuación destaca algunas pautas de mejores prácticas interesantes y estadísticas de rendimiento para las configuraciones de aplicaciones web de ArcGIS Server.

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

artwork21
fuente
Buen punto en el TOC, pero en realidad se carga bien. 'hit inicial para cargar más de 600 capas' = desde una perspectiva de solicitud de mapa, todavía solo se realiza una solicitud a un servicio. Por lo tanto, en realidad es bastante rápido para AGS devolver la exportación HASTA que comiencen a activar> 20 capas.
Simon