搜狗用户平台事业部有大量的资源导航项目具有相似的流程,以kan.sogou.com搜狗影视为例,主要流程如下:
1.合作抓取影视第三方(迅雷/腾讯视频/土豆...)的数据
2.对抓取到的数据进行清洗/聚合/rank计算
3.将经过2之后的数据展示在用户面前
其他类似搜狗笑话,搜狗小说,搜狗团购都是类似的逻辑.所以我们在新的技术架构时希望可以做一套通用的流程框架出来。主要的技术方案如下:
1.使用scrapy进行数据抓取
2.使用gearman做任务分发
3.使用sentry做异常/日志处理
4.使用unitest和coverage.py做单测和代码覆盖率
5.使用redis做通用缓存
6.使用django做前端展示/后台管理系统
7.使用solr做全站搜索
8.搭建私有pypi源,所有提交和安装全部使用私有源
9.搭建全套的readthedocs,使用sphinx做代码文档管理
其他辅助工具就很多了,诸如orm相关等等~~
流程上主要是:使用scrapy进行数据抓取,抓取后对数据进行拆分,每一个影视剧信息作为一个task提交到gearman,所以在对应的worker进行入库处理.
在client抓取和worker处理时打印的log直接发送到sentry做可视化管理,出现问题也直接通过sentry可以配置email来通知第三方.
随后对于抓取到的数据,开启了大量的service来进行监控,包括:死链检测/mis自动封禁等等
在整个处理流程中有较多的细节问题,包括技术方案的选型,各个sys的搭建和性能优化; 通用框架的适配性(我们希望做成插件机制,各个app只要insert到project即可);持续集成的监督完善等,后续会逐步介绍.