分布式文件搜索的想法--一个学生的实践!

 

     以下是小弟对学校里目前的Ftp资源导航所提出的技术设想,现状是:校内现在有很多Ftp站点,以联盟形式管理,每个站点有自己的管理员,现在有一套基于定期到Ftp站点取目录数据的数据库搜索引擎,我想做个改进:

小弟认为:目前对于校内海量的Ftp资源,普通用户如何从这些资源中找到自己想要的目标已经越来越困难了,如果没有SoffFtp搜索的话,很难筛选出自己想要的资源;

针对目前f.gift.gifp.gif搜索de.gif缺点:

1.随着联盟的壮大,站点的不断增加,现有的基于单服务器数据库的搜索势必在速度上会越来越慢!
2.随着站点的增多,数据采集的难度会增大,数据 的时效性也会降低;
3.没有及时向Soff 前辈注册到搜索引擎的Ftp资源将无法被搜索,很大程度上将使这部分站点在Ftp的海洋中被埋没!
4.对于越来越多涌现的Ftp站点,即使提交到搜索引擎,当用户搜索到该站点资源时,发现该站点未开机,那么这部分数据对于用户将是无用的,却耗费了搜索引擎与用户的很多时间!

分布式f.gift.gifp.gif搜索针对现有搜索引擎de.gif改进:

1.搜索速度将不会随着站点的飞速增加而减慢,所受的限制只是提交搜索的客户端的网络带宽与机器对远程反馈的海量数据的相应能力
2.每个节点都是实时的针对自身的搜索引擎,不存在数据采集到中央服务器的过程!
3.只要是想把自己Ftp资源共享的站长,打开提供搜索功能的服务器端(占用资源很小),即可动态加入被搜索的列表,将自己的资源向校园网发布!
4.客户得到的所有结果,都将是当前在线的,并且是实时的目标数据,节省了宝贵的时间!

分布式f.gift.gifp.gif搜索计划可能存zai.gifde.gif缺点:

1.每台Ftp必须在线时打开对外搜索服务;
2.加重了每个节点自身的资源消耗,但是我相信这只是P4机器的一小部分;


目前已经基本实现了一个可用的模型,主要由以下部件组成:
1.中央索引服务器,用于提供现在网络上所有可用结点服务器的URL,使用WebService实现
2.结点服务器,响应远程请求,实现本地文件搜索功能并将结果返回,使用.Net Remoting发布对象
3.搜索用客户端,从中央服务器得到网络上可用的搜索结点,并对接点进行都所请求!

系统模型图
http://img19.photo.163.com/digitalghost/1843842/21433578.jpg

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

基本可用的模型实现,主要由以下部件组成 :
1.
中央索引服务器,用于提供当前网络上所有可用结点服务器的 URL ,使用 WebService 实现索引服务发布
2.
结点服务器,响应远程请求,实现本地文件搜索功能并将结果返回,使用 .Net Remoting 发布远程对象
3.
搜索用客户端,从中央索引服务器得到网络上可用的搜索结点,并激活节点对象,对结点提交搜索请求!

已经作了一个能够使用服务的客户端,应该还会不断完善的!
乐意所有喜欢的朋友加入!

简单界面:
http://img19.photo.163.com/digitalghost/1843842/21399152.jpg


系统统工作方式:

       由搜索客户端向中央索引服务器得到目前网络上所有向服务器登记过的节点服务器的url,然后根据由url调用远程对象的搜索方法,得到搜索结果,显示在树视图中;以此实现分布式的文件搜索架构;

       本系统设计基本没有什么复杂高深的算法,结构;只有一个地方需作一些说明;就是

“节点服务器对本地搜索目录中的文件的缓冲策略”简要说来就是当节点服务器第一次被激活时,会将本地搜索目录中的文件信息全部读入内存以供搜索方法的使用;如果对象长期没有被使用(默认设置5分钟),其使用的内存自然就会被释放掉;这对搜索节点的性能有很大的提高;缓冲策略还有很多其他的可行性方案,比如保存最近十个搜索条件匹配的结果,保存高频搜索单词的匹配结果等等。。。在今后的实践里会慢慢加上;服务会不断完善;

 

       关于当前节点的有效性检测:采用索引服务器定时(1分钟)检测的方法,调用节点服务器的noop方法,如调用成功,则节点有效,若调用失败则节点实效,立即从节点列表中删除!

 

基本可用的模型实现,主要由以下部件组成:
1.
中央索引服务器,用于提供当前网络上所有可用结点服务器的URL,使用WebService实现索引服务发布
2.
结点服务器,响应远程请求,实现本地文件搜索功能并将结果返回,使用.Net Remoting发布远程对象
3.
搜索用客户端,从中央索引服务器得到网络上可用的搜索结点,并激活节点对象,对结点提交搜索请求!

 

搜索目前匹配的字符串为正则表达式,未做搜索词法分析部分,以后继续完善!

 

还有几个类图,参考代码,一看自明:


 http://img19.photo.163.com/digitalghost/1843842/22930348.jpg

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

 


导致目前还不能投入使用的严重缺陷
:

       当不输入搜索条件(列出节点所有文件),远程各节点反馈较大信息量的时候,界面会出现无法响应的情况;主要表现在当向treeview中同时加入大量节点的时候,响应速度过慢!是过使用treeviewbengininvoke方法来实现多线程操作,问题依旧;cpu利用率高居不下,界面无法响应,看来不是多线程的问题,是treeview本身就不是适合太多节点的场合(多到100000级),就算多线程都无法解决问题!

       目前讨论得出的解决方案:修改节点服务器,使用分页分次得到结果的方法,一来节省了网络传输大量数据时过多冗余数据占用过多时间的问题,二来还解决了客户端相应时间的问题,毕竟这种性质的客户端是一台机器对多台机器的问题,海量数据是很容易让程序负担过重的,所以在客户端的性能要求上是很高的!


既然贴出来了,就不怕大家砸鸡蛋,但是希望我能从鸡蛋里学到一些有用的东西!献丑了,谢谢大家!

转载于:https://www.cnblogs.com/digitalghost/archive/2004/05/23/11042.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值