数据中心构架的几点总结

作者: localhost 分类: kafka,中间件,大数据 发布时间: 2018-03-20 21:37

  最近在做基于Python的ETL和文本挖掘方面的东西,走在回家的路上,脑子没有停下来思考这几天的折腾。于是乎,有个念头:回家赶快把它记录下来。主要是害怕时间长了,我又发懒了。 之所以称之为构架不敢叫架构,是因为学习的路还很长,以下记录均为个人之见,路漫漫其修远兮,吾将上下而求索!不多BB 直接往下写!

项目介绍

  • 收集数据(文章,应用日志,视频和图片的存储信息)这里分为文章,视频,图片,日志,应用数据等
  • 构建流式处理数据的网管、数据处理模块、任务调度模块、结果发布订阅模块、等
  • 目的是为其他应用提供统一的源数据和挖掘结果数据接口

技术选型

  • Python
  • Celery
  • Flask
  • Nginx
  • Supervisor
  • Zookeeper
  • Kafka
  • Elasticsearch
  • Redis
  看到上面的小伙伴可能在想:这货又在盲目堆砌技术组件了。刚开始我也是个沉迷流行技术而一发不可收拾的er,但是经历过些大大小小项目,面对这些新东西的诱惑反而更沉得住气了。上面所述技术选型都是关键的组件,现在的预留是为以后扩展和改动留些余地,且听我说~~~
Celery
  对Python而言是异步任务调度的好手,文档详细,使用面广,功能丰富强大,是个久经考验的好项目(在此膜拜Ask大神,向他致敬!),在此有个好消息是Apache开源的Airflow项目也是基于celery构架的,纯Python实现哦 ^ _ ^ 详细参考:
http://docs.celeryproject.org/en/latest/index.html
https://github.com/celery/celery
https://github.com/apache/incubator-airflow
Supervisor
  Linux下进程守护和任务管理神器,使用广泛,功能强大,配置丰富。还在为进程守护而烦恼吗?还在为看似简单其实些许晦涩的Shell脚本而望而却步吗?赶快搞一个!绝对神器!也是python项目哦
参考:
https://www.restran.net/2015/10/04/supervisord-tutorial/
PS:有机会也会整理相关使用的经验和心得
Zookeeper
  分布式任务协调组件,Apache开源顶级项目,是Hadoop,Hbase,Kafka的重要协调组件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。在我的项目中,它起到对kafka小集群的协调作用,所以使用上只是简单使用,但是对于集群来说他不可或缺,对它的学习还在继续!
Kafka
  LinkedIn开发并开源的分布式消息系统,现与众多大数据组件集成如Hadoop,Apache Spark,Apache Storm等,scala实现,功能强大,以IO吞吐性能强大被众多大数据ers青睐,很多BAT大厂都将他用作消息系统和数据总线
Elasticsearch
  基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口,功能强大可以用作搜索引擎,数据实时和近实时分析和统计。同时也可以和数据可视化组件Kibana集成。详细可以搜索ELK Stack。该项目主要用他作为数据API查询和搜索,后续可能会集成数据中心的可视化体系。
Redis
  Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性(英语:Durability_(database_systems))的键值对存储数据库。高性能的内存型数据库!该项目主要用它存储需要定期检索的元数据和中间数据

架构流程图

process PS:图画的很烂,画图也是个技术活啊,以后慢慢加强

流程概述

Step1:主要包括内部和外部使用的爬虫获取数据中心制定格式的数据发送到数据中心
Step2:负责调度任务的celery调度器:其中设置了四个任务队列(文本处理队列、图像处理队列、视频处理队列、发布和订阅队列)
Step3:kafka消息总线,包括不同类型的Topic(文本,图像,视频)
Step4:消费组交换组件,负责将已经处理好的kafka topic消息拉取到制定的接口
Step5:应用端接口负责获取数据到Elasticsearch,其他Db存储,应用订阅接口

总结

  现目前,该项目稳定运行,有两台4核8G的云服务器支撑运行,数据量嘛慢慢会多起来的,爬虫节点也不断在扩展,该项目又很多需要改造和迭代的地方,但是此次改造加强了很多扩展性,同时也预留了扩展的接口。谨以此记录,希望项目越来越好。想到什么在补充吧~~~ ^ _ ^

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注