一个或多个服务中有很多层?(为什么)


13

我有一个难题,我正在就如何进行提出不同的建议。因此,id喜欢将其放入GIS-SE中以获得一些合理的答案。

场景:

  • 客户端具有Web制图应用程序。不想拆分为多个较小的应用程序。 尽管这与现代的Web地图方法(即在一张主Web地图上有很多聚焦的Web Map应用程序)背道而驰,但我坚信对于某些用户而言,尝试在Web上复制GIS应用程序是好的(有时)。

  • 客户已将其底图图层中的大部分缓存到单独的服务中。

  • 客户在动态地图服务中仍需要额外的600-700层 ...
  • 该服务将在所有这些层都关闭的情况下发布
  • 预计用户一次不会打开10-40多个层。

我想您对此的最初反应类似于我的反应(600+ ?! WTF ?!)

但是-要求是一成不变的,为什么不呢?他们以前的ArcIMS应用程序具有类似的功能,那么为什么这个较新的ArcGIS Server产品不能做到相同?即使这些层属于其他部门,用户潜在地也需要能够对整个层范围进行交叉比较和执行分析。

在下结论之前,客户端是一个ArcGIS Server管理员。
他们已经按照所有最佳实践规则管理了600层:例如,比例范围与定义查询相结合;标签上的注释;小规模地概括复杂的层;以MSD形式发布;等等

问题

这里有什么更好的方法?

  1. 将所有600层发布到一项动态地图服务中

  2. 将各层划分为逻辑分组(水文,规划,生态,公用事业等)

如果您选择#1,则需要打开一些复杂的图层。如果要打开简单的点图层,则ArcGIS Server仍然必须重新渲染整个显示的图层。

如果您使用#2,则每次提出请求时,Web应用程序都可能不得不从单个地图服务中对ExportMaps进行多个GET请求(这很不好,或者是否会给#1上的ArcGIS Server带来额外的负担?)

然后,这导致配置和调整,以确保一切都尽可能快。我们可以将ArcGIS Server的后端扩展到多个主机,并拥有一些不错的硬件。

如果使用#1,则可以抛出AGS可处理的最大实例数。

如果您选择#2,则假定您评估了地图服务的性能(负载测试和查看等待时间),并相应地处理了最小/最大实例,以确保没有一个服务是“弱链接”。

我目前倾向于采用第二种方法,因为我的头脑仍然在告诉我,一项服务中包含600层是疯狂的,但是如果默认情况下将它们全部关闭,则确实没有问题。

很想听听您的想法。让我知道您是否需要通过评论获得更多信息,而不是寻找“使用桌面应用程序”或“教育他们以不同的方式做事”之类的答案。


从评论讨论中,我没有提及另一个考虑。服务将在其中使用的应用程序具有层级安全性(在应用程序级)。因此,将用户组(相当大)分配给特定角色,并且该角色将可以访问整个600层。其他角色将受到限制。


就个人而言,我会向PM提出一个问题,概述问题,提出最佳实践建议,提出解决办法,然后再交给他们。一天结束时,一旦有人说:“但这就是原来的样子”,您就全神贯注了。在这种情况下,我将按照上面的方法进行操作,那么您已经很专业,已经完成了工作,剩下的就由他们来决定。我还建议在电子邮件中包括任何有名有实的人,以确保他们都能得到建议,并且每个人都知道建议的内容和提供者。

您没有说将用于浏览图层的webapp类型,但我认为它是openlayers类型。在这种情况下,请紧记,浏览器也存在问题,因为这将不超过发行的并发请求到同一服务器(包括XHR,CSS和一切)(2至6)。请参阅本文的细节和一些替代品(我经常去的多的CNAME当合作):stevesouders.com/blog/2008/03/20/...
unicoletti

@Hairy-实际上,我认为我们可以使用ArcGIS Server满足客户端的要求,尽管它限制了AGS可能实现的功能,但仍然可行,我们仍然可以依靠先前的建议来打破应用程序转换成多个应用程序。
西蒙(Simon)

1
我知道这是可行的,我一直在与同样这样做的客户合作,但是我认为这是不明智的,因为这是不同的。如果他们决定一次有10个客户想要全部600层,那么无论您使用的是AGS是什么,它都会崩溃

Answers:


8

使用容量规划工具来帮助比较一种超重型地图服务与4种精简地图服务,结果表明,重型地图服务是必经之路。

这可能不是正确的答案,容量规划工具并未考虑所有因素(例如,用户工作流程)-通过评论让我知道您的想法。

1个超重型地图服务:
App Server CPU利用率= 49.4%
数据库服务器CPU利用率= 7.6%
网络负载= 16 Mbps
显示响应时间= 0.88秒

(图像可以通过RC放大查看,并在新标签页中打开)

在此处输入图片说明

4种精简地图服务:
App Server CPU利用率= 55.4%
数据库服务器CPU利用率= 7.6%
网络负载= 64 Mbps
显示响应时间=每个0.32秒,因此在0.32和1.28秒之间,具体取决于网络浏览器的开销

在此处输入图片说明

支持一种地图服务方法的更多逻辑:

  1. 因此,所有图层都在同一地图服务中。
    一种。一个请求被发送到服务器
    b。一个SOC进程绘制了图
    c。通过网络返回一张图像

  2. 因此,这40层分布在4个地图服务中(每个10层);
    一种。4个请求被发送到服务器
    b。4个SOC流程绘制了一张图
    c。通过网络返回4张图像

1a和1c将比2a和2c更快,并且对网络的负载更少。

2b可以使用并行处理为单个用户返回比1b更快的地图,但是对于许多用户而言并非如此。实际上,随着用户数量的增加,服务器在2b中处理额外事务的开销(加上2c的额外网络负载)将更好地扩展1b。


2
这听起来合乎逻辑。管理600层MXD听起来并不那么有趣。
斯蒂芬·利德

1

尽管使用多种服务,缩放图层/标签,缓存和使用非动态标签都有助于改善Web应用程序体验,但最终用户会注意到将600多个以上层加载到一个应用程序中的最初尝试。特别是填充TOC所需的时间。如果您必须创建600层以上的应用程序,那么我肯定会选择选项#2。您可能需要根据数据模型(例如本地政府数据模型)对数据结构进行建模。

以下白皮书重点介绍了一些有趣的最佳实践准则和ArcGIS Server Web应用程序配置的性能统计信息。

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


在TOC上不错,但实际上可以很好地加载。从地图请求的角度来看,“最初命中以加载600多个图层” =它仍然仅向一个服务发出一个请求。因此,对于AGS,他们开始打开> 20层时实际上相当快地返回了出口。
西蒙
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.