linhanqiu
2018-02-24 10:56:31 +08:00
数据组业务流程架构
需求以及产量
硬件需求
服务器需求
爬虫服务器
图片服务器
新闻日产量
爬虫 200w+
用户编辑 1w+
机器智能编辑 1w+
新闻数据流程
数据源
数据来源分类
爬虫
爬虫类型分类
通用搜索引擎爬虫:使用基于 Nutch 框架的爬虫框架
自定义爬虫:使用基于 asyncio、aiohttp 的爬虫框架
爬虫分布式架构
模式选择:分布式采用自治模式,爬虫服务器之间互相可以通信,通过保存一张服务器列表来记录其他服务器位置
爬虫种子调度管理
调度介质:redis 集群作为 url 暂时存储的载体,redis 之间互相通信,使用 hash 槽来保证高可用性一致性
去重保证:使用 k 分型 bloomfilter 替代普通的 bloomfilter 过滤器作为过滤器搭配 redis
种子状态保证(确保种子的有效性):
种子分级制度
人工编辑
机器自动编写
注意问题
数据采集
注意问题
数据清洗(验证数据正确唯一性)
数据重复清洗
对于新闻重复清洗原则
文本指纹去重:k-shingle -jarccard 系数计算 shingle 向量的相似度,向量空间,耗资源
文本指纹去重:Simhash 指纹-采用 hamming distance 来计算两个指纹之间的相似度,海量文本找出只有几位不同的,将 32 指纹分段以空间换时间
空间向量特征去重:无法应对海量文本两两去重
注意问题
数据存储(关系型数据库、对象存储)
注意问题
数据变形(批处理、并行计算)
注意问题
数据分析(机器学习、数据仓库)
注意问题
业务场景(日志分析,商品推荐、舆情分析、价格预测)
注意问题
项目管理以及部署
项目迭代管理
项目测试
项目部署
爬虫实例采用 docker 部署,使用 Google 的 Kubernetes 来管理
项目监控
实时监控
离线监控