webgis服务器设计

来源:互联网 发布:java开源代码 编辑:程序博客网 时间:2024/06/11 15:31
转自:棒棒糖的学习园地           

 webgis服务器大致由这几部分组成:请求部分、出图部分、群集部分、缓存部分、请求部分以及辅助部分。

1、请求部分。
        该部分接收客户端传过来的出去请求(出图参数,一般为xml字符串),并对出图参数进行预处理,转换为系统其他部门可理解的参数。如求出xml字符串的hashcode以及最近比例尺,可视区域,专题图图层等等信息。

2、缓存部分。
      由于出图的IO代价比较大,每次出图都是非常宝贵的,一般要记录下来,每次出图的hashcode,以便如果客户端请求的是同一区域同一比例尺下的图,就可以把该图直接返回给客户端(浏览器)了。我们可以在内存中建立合适的数据结构如hashtable后者二叉树,保存出图参数与图片名称的对应关系。在内存中查找都是比较快的。为了能更好地提供服务,我们还必须把这些内存中的信息保存下来,以便webigs服务器重启的时候恢复缓存。我们可以把内存结构存储到文件中,也可以存储到数据库中。我们需要一个线程来维护我们的内存中的缓存结构,记录下各个图片的访问频率,经常被访问的,我们就放在内存中,不经常访问的我们就需要把它放到文件或者数据库中。
     客户传来的请求先到本服务器的内存中查找缓存,如果有就直接把图片返回给浏览器,如果没有就去数据库或者缓存文件中查找,有就返回,没有就给参与群集的其他webgis服务器发送出图请求。

3、群集部分。
    每个参与群集的webgis服务器都会有一注册了一个异步方式的socket,接收其它服务器转发过来的请求,同时也可以以数据报表方式的socket给其他webgis服务器发送请求。每个webgis服务器接收到请求后也是先本服务器的内存中查找缓存,如果有就直接发消息来的那个webbgis服务器,把图片路径告诉它,如果没有就去数据库或者缓存文件中查找,有就图片路径告诉那个webgis服务器。没有就返回。
   各个webgis服务器之间出图的目录可以通过NFS来共享。

4、出图部分。
    这部分没有什么好说的,就是根据传过来的参数,生成一张图片。不过生产图片的目录组织是比较有讲究的。不能把所有的图片都放在同一个目录下面哦,这样操作系统查找时候就是线性找图片,速度会比较慢的哟,大家一定还记得目录就是包含了inode的一个链表啊。所以我们可以按照比例尺来分放到不同的目录下面,最好一个目录对应的inode链表大小不超过一个操作系统块(block)。
   出图精美也是比较重要哦。比如所线性符号由内到外最好是渐变的色系,面状的也如此。点状的就没啥好说的,对于文字的最好加上外轮廓,这样叠在背景上才好人哦。

5、辅助部分。
    辅助的部分,主要是日志啦,肯定需要一个专门的线程来管理日志,定期把webgis服务器的出错日志记录下来,一般都是写到一个文件里,好做分析,当然日志文件的大小不易过大。我们还需要一个守护线程,来监控我们的:日志线程,出图线程,请求处理线程,缓存管理线程等,如果发行某个线程死了,要清理相关资源以及重启死掉的线程,保障webgis不间断地运行。

   随便说一下webgis客户端,客户端大家都比较熟悉啦,采用ajax等web2.0技术来改善用户体验。
原创粉丝点击