使用阿里云开放搜索服务快速搭建资源搜索网站

大家好,我又来了,答应云栖论坛一周一篇文章, 由于工作太忙已中断1个多月实在抱歉,这一次写点轻松有趣的东西-快速的做个资源搜索站

依稀记得十来年前,带宽还只有2M的时候,受各个论坛启发,做了可以搜索嘿嘿嘿资源的搜索站

一晃这么多年过去,嘿嘿嘿的东西依然喜欢,但世间却变化万千

资源种类已不仅仅是X片,高清电影、纪录片、无损音乐、美剧、大型软件等等,似乎更加吸引

资源呈现方式也百花齐放,从最早的BT文件、电驴地址,到现在的磁链地址、各种云盘等等

而传统的P2P下载方式也变得格格不入,因为硬盘容量已经大到但凡大一点云存储服务商都把所有资源缓存在自己的服务器上,进行哈希匹配后直接提供离线下载资源(这也直接导致快播王欣被抓)

因此,作为资源的入口,电驴地址和磁链地址依然有着强大的生命力,受益于各商家庞大的离线存储,电驴、磁链地址已经近乎等同于直接的HTTP地址,并且有着比HTTP地址更友好的通用性。

随手百度一下BT搜索、磁链搜索关键词,就会出来很多类似的搜索网站,比如以下这些

而今天,我们也来搭建一个类似的网站,只不过

借助新技术,不仅搭建过程更加简化建设思路也能有所革新,所以今天文章的主题就是:

使用阿里云开放搜索服务快速搭建资源搜索网站

先看一下最终的建设效果(访问地址:https://sodemo.alphams.cn/

那么下面我们就一步一步来搭建这个简单的资源搜索网站

一、搭建前的一些准备和分析

资源搜索网站有如下几个关键点:

1、原始数据

没有个几百万条初始搜索数据,都不好意思和别人说是做资源站的,在这个案例里面,我们采用了simplecd官方制作的电驴地址打包,虽然年代比较久远,但也有百万条左右,下载地址为:

https://www.douban.com/group/topic/17230136/

请注意保护版权!

2、数据存储与检索

十多年前资源的数量以百万计算,现在一个饱满的资源站的资源数量应该早已过亿,数据库大小也应该在50G以上,这样的数据,使用阿里云RDS MySQL数据库具有较高的性价比,数据量再大一些还可以结合DRDS分布式数据库一同使用

对于具体的检索技术,不同的数据库的全文索引、分词等技术各不相同,甚至连MySQL的各种版本之间的处理都有区别,而由于数据库我是确实不会。。要是会的话就不至于一直用Linq ORM了。。我想象中的100万条数据全文检索的速度应该在0.01秒左右,但自己操作MySQL进行配置和优化,始终达不到这样的查询效率

因此今天这里选择了阿里云的开放搜索服务,让阿里云来处理这些难点。

这也是今天的一个主要讲解重点,实测证明,确实检索效率很高!

3、数据爬虫与更新

初始数据载入后,后续的数据更新也非常重要,主要靠爬虫程序进行每日更新,重点在于爬虫程序的效率的所爬目标的资源质量,这里有两个难点

1)所爬目标资源。电影站、软件站、BT搜索站等等,都可以是爬虫目标资源,而如果掌握了搜索引擎的高级用法,并引入无限数量的代理IP,则可以对搜索引擎直接进行定向爬取,效果更加。如能做到每日新增10万左右新资源,则是一个比较完美的效果。

2)爬虫程序。如果仅仅是对HTML进行查询和分析,则需要很高的正则使用技巧,而如果涉及到语义分析的话,更需要很强的语言分析相关技术。爬虫程序的逻辑编写,我想.NET Framework 4.5是再适合不过了,拥有先进的多线程并行库和丰富而全面的HTTP访问手段,完胜其他各种新型语言

经过以上的分析,设计出如下的系统架构图:

二、具体的搭建步骤

1、购买一个阿里云RDS数据库并进行相关配置

因为本项目纯属测试,所以买个便宜点的按时计费的MySQL RDS

每天7块多钱,还算可以接受的范围内。

购买完成后,申请一个外网地址(用于初始数据迁移)

最后获得了内外网的地址:

2、使用Navicat Premium(请支持正版,)打开下载好的SQLite格式的电驴初始数据

根据表结构可以看出相关数据存储方式,由于今天的案例比较简单,我们仅需要title、updatetime、ed2k这3个字段

3、根据需要的字段,在购买的RDS数据库中,建立数据库和表

通过Navicat Premium连接到阿里云

建立一个电驴资源表

4、通过Navicat Premium的数据迁移工具,将初始化数据导入RDS

由于没有直接的导入方式,我们先将SQlite数据导出为文本文件

 

再将文本文件导入到最终表中

5、通过阿里云开放搜索服务,与RDS连接并建立索引

选择通过数据源创建应用

设置ID为主键

默认定义了如下索引结构

我们只需要用到Title的检索,需要展示的内容则是title,ed2k,因此修改为如下:

创建完成后进行激活,选择了3G容量,每秒6次的配置(好像价格不便宜哦~)

激活完成后,会进行大约半个小时左右的索引,索引建立好之后,我们测试一下搜索效果

d

注意用时:用时0.008791秒

这比自己处理数据库,真是要高不少效率!看来使用阿里云开放搜索服务确实是一个值得尝试的新思路!

6、基本配置完成后,就是如何使用开放搜索服务了

先看一下官方文档的结构

标红的地方可以重点了解,在今天的案例里面,我们只需要用到API接口里面的Search接口,这是最简单的调用方式

文档还是比较简单,很容易就看懂了,签名这块阿里做的有些混乱,不过用官方提供的SDK,也能快速的使用服务

7、下面就在.NET中测试一下效果

先到官网下载一下.NET的SDK

然后建一个控制台测试程序,代码如下:

模拟进行搜索美食

返回成功

8、继续新建一个简单的asp.net Web Application,做一下前端访问首页

服务输出使用一个一般处理程序RS.ashx,代码如下:

页面就一个单页面

JS逻辑也很简单

访问效果如下:

好了,今天这个资源搜索网站就搭建好了

麻雀虽小五脏俱全,这个案例还是具备很强的实践性和延展性的,后续可以做的事情有如下:

1)完善爬虫程序

2)实现一个独立的管理后台,管理爬虫数据和开放搜索服务数据同步

3)增加用户管理

4)增加广告等营收

那么对今天这个案例的总结是:

今天的案例,可以说是一种全新的数据检索思路,成功的把部分面向数据库、面向技术的业务场景,转变为了面向服务、面向用户,以我自己为例,非常精通数据爬虫,精通资源,但对数据库技术并不在行,在不需要学习很深的数据库知识和技巧的情况下,阿里云开放搜索服务成功的帮助我将百万条数据的全文检索时间降低到了0.01秒,这不是传统的通过升级数据库配置、增加集群能解决的(花费上也不合理)。而我也坚信,这种思路,绝对不是阿里云官方Demo里面所说,可以用于论坛搜索这么简单,一定有更广阔的应用。所以,写了这么一个小案例,希望能够抛砖引玉,激发大家的灵感,做出更多创新。

本项目源码下载:https://github.com/chumakeji/resourcesearch

最后再吐槽几句:

我不是云服务架构设计工作者,但我见得多了,外面哪个云服务和开放平台我没有用过,我是身经百战了,有必要告诉阿里云开发者一些人生的经验,用完阿里云开放搜索服务,感觉就是,秉承了阿里云的一贯作风,运行效果8分,文档综合7分,架构设计5分,但说句实在话,阿里云开放搜索服务这个版本,无论是业务流程的设计,还是搜索语义语法的设计,又或是接口的设计,都很差!连我下载的.NET版本的SDK都写的混乱不堪(竟然还包含未隐藏并且能正确访问的Key和Secret。。。),应该说从深度来看,还达不到一个很高的水准,我印象中除了RDS,阿里云几乎每一个服务都是如此,被外部批评也是架构能力差,阿里云走的太急了,即使RDS技术应该也是延续了老淘宝数据库技术,也没什么值得骄傲的,现在的阿里云,什么都想做,快速迭代,快速上线,但什么都做不精,这是一个很危险的信号!



作者:张柔,本文发布于  博客园  与  云栖博客

转载请注明出处,欢迎邮件交流:zhangrou@printhelloworld.com,或者加QQ群:11444444

时间: 2024-10-31 19:31:43

使用阿里云开放搜索服务快速搭建资源搜索网站的相关文章

阿里云开放搜索服务OpenSearch商业化版本发布

摘要: 国内首款云搜索服务阿里云开放搜索OpenSearch已于2015年1月22日结束公测,开始商业化售卖. 该产品基于阿里巴巴自主研发的大规模分布式搜索引擎平台(该平台承载了阿里集团包括淘宝国内首款云搜索服务阿里云开放搜索OpenSearch已于2015年1月22日结束公测,开始商业化售卖.    该产品基于阿里巴巴自主研发的大规模分布式搜索引擎平台(该平台承载了阿里集团包括淘宝.天猫.一淘.神马搜索等所有主要搜索业务)搭建而成,通过云服务的形式,将阿里巴巴积累近10年的搜索技术有偿提供给广

一分钟了解阿里云产品:阿里云开放云搜索初探

前阶段申请了阿里云开放云搜索(Aliyun OpenSearch)的邀请码,今早收到通过验证了,于是准备试试云搜索.   阿里云搜索使用很简单,和Lucene一样,包括索引文档字段几个概念.每个索引可以当成数据库的一个数据库,一条文档当成数据库的一条记录,一个字段就是数据库的一个字段.   开放搜索目前支持四种形式的搜索模板,资讯类,小说类,应用类和社区类.模板在这儿就是规定好了索引的字段,也可以自定义.下面我来详细介绍下:   我想测试一下,就把自己的博客写的这十几篇POST发上去建立索引吧,

使用阿里云容器监控服务与第三方监控框架集成搭建自己的容器看板

一.概述 阿里云容器监控服务日前正式上线,容器监控服务提供了非常简单快速地与第三方开源监控方案集成的能力.本篇文章就带领大家一起试用阿里云容器监控服务,并使用目前比较流行的第三方开源监控框架做集成,搭建自己的监控看板. 二.操作 1. 编排模板与注意事项 version: '2' services: #定义influxdb influxdb: image: tutum/influxdb:0.9 ports: - "8083:8083" #暴露web界面端口 - "8086:8

使命必达--阿里云商用消息服务MNS初探

在2015杭州云栖大会上,阿里云飞天事业部资深总监李津发布了一款海量消息,使命必达的消息服务产品(http://www.aliyun.com/product/mns).该产品能够提供高效,可靠,安全,便捷,弹性扩展的消息服务:能够帮助我们轻松的构建松耦合,高并发的分布式系统:能够方便我们做跨域数据安全传输.目前,消息服务也是阿里云唯一商用消息产品,其服务稳定性和可靠性都有SLA保障.下面让我一起来详细了解一下这款产品.   架构优势带来海量,高可靠,高可用特性 在了解消息服务前,不得不提的是阿里

阿里云湖北区域服务提供商:阿里云CDN功能介绍

阿里云湖北区域服务提供商官方唯一指定武汉捷讯技术.关于阿里云CDN功能介绍如下: 阿里云CDN(内容分发网络)全称是AlibabaCloudContentDeliveryNetwork,建立并覆盖在承载网之上.由分布在不同区域的边缘节点服务器群组成的分布式网络,替代传统以WEBServer为中心的数据传输模式.将源内容发布到边缘节点,配合精准的调度系统:将用户的请求分配至最适合他的节点,使用户可以以最快的速度取得他所需的内容,有效解决Internet网络拥塞状况,提高用户访问的响应速度.使用CD

阿里云解析企业版服务上线

本文讲的是阿里云解析企业版服务上线[IT168 云计算]近日,全球域名解析量排名第二的阿里云解析正式推出标准版.旗舰版.尊享版三款企业版产品,以业界领先的域名防护能力更好地满足高端用户对域名解析的安全性要求,为企业级用户提供更全面的安全保障. 阿里云解析是阿里云为全网域名开放的域名解析服务,提供强大稳定智能的解析调度服务,确保用户的顺畅访问体验,实现从域名注册.域名解析到云服务器的一站式购买和管理. 该服务专注于解决用户对云解析服务的安全顾虑,与免费版产品相比,安全性有了极大跃升.用户独享VIP

如何接入阿里云短信服务 (完整指南)

目录 一.注册并实名认证 二.开通短信服务 三.获取AccessKey 四.设置短信内容 五.配置短信接口 六.发送短信 七.常见问题FAQ 一.注册并实名认证 使用阿里云短信服务,用户需要先在阿里云注册,并完成个人/企业实名认证. 注意:要发送营销短信的用户,必须完成企业实名认证 1.1 注册阿里云:点此注册  1.2 实名认证:点此认证  1.3 绑定企业支付宝: 点击绑定企业支付宝   二.开通短信服务 2.1.开通短信服务:点击开通短信服务 2.2 子账号页面:点击查看子账号页面 2.3

云服务器 ECS 配置:阿里云ECS Windows Server 2012 搭建AD

阿里云ECS Windows Server 2012 搭建AD 简介 Active Directory(简称AD,即" 活动目录"的意思),是微软下面的核心组件,其主要优势是实现高效管理(例如,批量管理用户,部署应用,更新补丁等等),而且微软很多的套件(Exchange,故障转移群集)也是需要域环境支持. 安装 安装之前我们介绍域里面的几个常见名词以及必要条件. 名词解释 Domain Controllers(DC)域控制器 Organizational Unit(OU)组织单位 Di

阿里云生态+ 区域性服务安全沙龙圆满完成

   这几年云生态概念大热,也带来了不少疑问:云生态到底是什么?是玩概念还是动真枪?生态合作伙伴都能干什么呢?谈起生态,让人想到生物.环境领域的生态概念,阿里云的生态确是如此:让圈内的云计算厂商.用户.服务商各得其所,互利共生,1+1>2. 2017年10月26号,在阿里云合作伙伴事业部的协助下,上海百胜阿里云授权服务中心在上海陆家嘴软件梦想咖啡厅举办了隆重的阿里云生态+区域性安全服务沙龙,此次沙龙主要议题就是研讨阿里云生态+的概念.这次沙龙活动举办的怎么样,接下来就由小编带大家去看看此次沙龙活