CN111538590A - 一种基于cs架构的分布式数据采集方法及*** - Google Patents
一种基于cs架构的分布式数据采集方法及*** Download PDFInfo
- Publication number
- CN111538590A CN111538590A CN202010306601.0A CN202010306601A CN111538590A CN 111538590 A CN111538590 A CN 111538590A CN 202010306601 A CN202010306601 A CN 202010306601A CN 111538590 A CN111538590 A CN 111538590A
- Authority
- CN
- China
- Prior art keywords
- server
- data
- distributed
- client
- data acquisition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 230000000007 visual effect Effects 0.000 claims abstract description 12
- 235000014510 cooky Nutrition 0.000 claims description 36
- 230000008569 process Effects 0.000 claims description 26
- 238000012544 monitoring process Methods 0.000 claims description 18
- 238000013515 script Methods 0.000 claims description 16
- 238000012800 visualization Methods 0.000 claims description 14
- 230000002085 persistent effect Effects 0.000 claims description 13
- 230000001419 dependent effect Effects 0.000 claims description 6
- 238000012549 training Methods 0.000 claims description 5
- 238000013480 data collection Methods 0.000 claims description 3
- 238000009434 installation Methods 0.000 description 12
- 238000007726 management method Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000004044 response Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 241000239290 Araneae Species 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 230000009193 crawling Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002688 persistence Effects 0.000 description 3
- 241000512668 Eunectes Species 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 230000004083 survival effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 102100029469 WD repeat and HMG-box DNA-binding protein 1 Human genes 0.000 description 1
- 101710097421 WD repeat and HMG-box DNA-binding protein 1 Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于CS架构的分布式数据采集方法及***,一种基于CS架构的分布式数据采集***,包括CS架构和分布式集群架构,其中,所述CS架构包括客户端和服务端,所述分布式集群架构包括主节点和从节点,且所述从节点设置于所述客户端上,所述主节点设置于所述服务端上。本发明通过基于CS架构的分布式数据采集,提出了将负载均衡代理服务用于解决代理数据采集,可以保证数据不丢失,同时支持国内外网站数据的合法请求;提出了分布式的策略,随时可以新增下载节点,扩充海量数据;前端提供了可视化前端,可以直观的看到集群的运行状态并进行管理。
Description
技术领域
本发明涉及数据采集技术领域,具体来说,涉及一种基于CS架构的分布式数据采集方法及***。
背景技术
随着AI底层算法架构的发展及稳定,想要提高算法的精度和泛化性能,需要收集大量的线上数据,并通过数据挖掘手段来获取其中的巨大价值,然而如何高效的获取数据是一个亟待解决及创新的问题。
目前已有的数据采集技术都是部署在本地物理机服务器上的,通常需要消耗大量的CPU(中央处理器)、网络带宽资源和IO(输入/输出(Input/Output))资源,其他服务器使用者会感觉很卡顿,影响资源使用。
主要存在以下问题:
1、现有的技术用户为了拓展数据下载节点需要将相同的程序和环境部署到新的机器上,程序的可拓展性差,不适用于动态延伸,更新版本流程繁琐。
2、现有的数据采集技术中,往往会因为网络环境的不稳定,导致网络丢包,数据损失且下载速度受限。
3、现有的爬虫技术,是将下载后的数据直接存储到SATA中,在分布式环境或者多并发写入,SATA的IO会阻塞使下载效率大打折扣。
4、现有分布式数据采集框架Scrapy-redis,封装了爬虫需要的大部分网络依赖库,小型采集任务可以按Scrapy框架规定的方案进行开发。但Scrapy-redis分布式架构存在三个缺点:
a)对于大规模分布式采集,针对特定的网站反爬取策略需要定制一套爬取方案,工作难度很大,如果使用Scrapy-redis的开发规则进行代码调整,或者修改Scrapy底层源码的工作量都很大。
b)Scrapy中调度器(Scheduler)主要负责对各个spider节点的申请优先级进行排序和下载任务的去重,无法监控spider的运行状态,无法根据不同申请者的情况对任务进行主动分配,各个spider节点的资源利用率无法被充分使用。
c)redis是一种内存级数据库,数据的读取快,但是当***以外宕机的时候,可能因为持久化不及时导致数据丢失,且redis在公开网络中进行访问,容易受到攻击。
针对相关技术中的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中的问题,本发明提出一种基于CS架构的分布式数据采集方法及***,以克服现有相关技术所存在的上述技术问题。
本发明的技术方案是这样实现的:
一种基于CS架构的分布式数据采集***,包括CS架构和分布式集群架构,其中,所述CS架构包括客户端和服务端,所述分布式集群架构包括主节点和从节点,且所述从节点设置于所述客户端上,所述主节点设置于所述服务端上,其中;
所述客户端,搭建虚拟化容器引擎或搬瓦工云服务器,向资源池申请下载资源以及向目标网页进行网址解析下载和存储;
所述服务端,物理主机,接受客户机的请求,将数据响应给客户机;
所述分布式集群架构,用于实现大规模数据运算和分布式训练。
进一步还包括负载均衡代理、数据库、资源池、多级存储介质和可视化前端,其中;
所述客户端分别与所述资源池和所述服务端连接,所述服务端分别与所述数据库和所述多级存储介质连接,所述数据库与所述可视化前端连接;
所述负载均衡代理,用于搭建负载均衡,实现负载均衡代理;
所述数据库,用于存储服务端采集的keyword信息和proxy以及各个采集节点采集的数据量;
所述资源池,用于用户向cookie池申请资源,资源池会使用用户名和密码对网址进行访问,并将网站反馈的cookie字段存储到有效队列中分配给用户;
所述多级存储介质,用于提供包含缓存层存储、持久性存储和缓存监控服务;
所述可视化前端,用于对各个分布式从节点运行状态的监控数据采集量的实时统计以及通过前端监控服务完成数据采集流程的可视化。
根据本发明的另一个方面,提供了一种基于CS架构的分布式数据采集方法,包括以下步骤:
步骤S1,客户端向服务端发送采集指令;
步骤S3,所述服务端向负载均衡代理申请代理;
步骤S5,所述服务端向资源池申请资源;
步骤S7,所述资源池从用户代理池获取用户代理,并使用所述用户代理访问网站;
步骤S9,所述网站返回Cookie给Cookie池,所述资源池获取所述Cookie;
步骤S11,所述客户端从所述网站采集数据,并存储至多级存储介质;
步骤S13,所述客户端将数据传输给所述服务端;
步骤S15,所述服务端将数据传输给数据库;
步骤S17,所述数据库将数据传输给可视化前端;
步骤S19,所述可视化前端显示数据。
进一步的,预先还包括以下步骤:
搭建所述负载均衡代理;
搭建所述数据库;
搭建所述资源池;
搭建CS架构;
搭建分布式集群架构;
搭建所述多级存储介质;
搭建所述可视化前端。
进一步的,搭建分布式集群架构至少包含一台主节点和若干的从节点构建的集群,其中主节点设置于服务端上,从节点设置于客户端上,包括以下步骤:
新建文件,输入免密的IP、端口和密码;
配置ansible框架;
开发一键部署脚本;
使用部署脚本将依赖环境分发给所有空节点;
批量执行shell脚本;
将采集程序及依赖环境依次分发到各个从节点;
使用各从节点的采集程序启动种子下载程序,将下载好的种子存入列表。
本发明的有益效果:
本发明通过基于CS架构的分布式数据采集,提出了将负载均衡代理服务用于解决代理数据采集,可以保证数据不丢失,同时支持国内外网站数据的合法请求;提出了分布式的策略,随时可以新增下载节点,扩充海量数据;前端提供了可视化前端,可以直观的看到集群的运行状态并进行管理。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的一种基于CS架构的分布式数据采集方法的流程示意图;
图2是根据本发明实施例的一种基于CS架构的分布式数据采集***的原理框图一;
图3是根据本发明实施例的一种基于CS架构的分布式数据采集***的原理框图二;
图4是根据本发明实施例的一种基于CS架构的分布式数据采集***的存储原理示意图;
图5是根据本发明实施例的一种基于CS架构的分布式数据采集***的数据存储示意图;
图6是根据本发明实施例的一种基于CS架构的分布式数据采集***的分布式***示意图一;
图7是根据本发明实施例的一种基于CS架构的分布式数据采集***的分布式***示意图二。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
根据本发明的实施例,提供了一种基于CS架构的分布式数据采集方法及***。
如图1-图7所示,根据本发明实施例的基于CS架构的分布式数据采集***,包括CS架构和分布式集群架构,其中,所述CS架构包括客户端和服务端,所述分布式集群架构包括主节点和从节点,且所述从节点设置于所述客户端上,所述主节点设置于所述服务端上,其中;
所述客户端,搭建虚拟化容器引擎或搬瓦工云服务器,向资源池申请下载资源以及向目标网页进行网址解析下载和存储;
所述服务端,物理主机,接受客户机的请求,将数据响应给客户机;
所述分布式集群架构,用于实现大规模数据运算和分布式训练。
进一步还包括负载均衡代理、数据库、资源池、多级存储介质和可视化前端,其中;
所述客户端分别与所述资源池和所述服务端连接,所述服务端分别与所述数据库和所述多级存储介质连接,所述数据库与所述可视化前端连接;
所述负载均衡代理,用于搭建负载均衡,实现负载均衡代理;
所述数据库,用于存储服务端采集的keyword信息和proxy以及各个采集节点采集的数据量;
所述资源池,用于用户向cookie池申请资源,资源池会使用用户名和密码对网址进行访问,并将网站反馈的cookie字段存储到有效队列中分配给用户;
所述多级存储介质,用于提供包含缓存层存储、持久性存储和缓存监控服务;
所述可视化前端,用于对各个分布式从节点运行状态的监控数据采集量的实时统计以及通过前端监控服务完成数据采集流程的可视化。
在实施例具体应用中,详细如下:
一、对于上述负载均衡代理来说:
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
二、对于上述数据库来说:
通常数据分为结构化数据和非结构化数据。
结构化数据一般是指:数据结构规则,各个字段之间存在相互限制和依赖。如个人的信息表,人的身高、性别、年龄、收入等都是结构化数据,可以用一张二维关系表存储。
非结构化信息一般指:数据规则不完整,或者无法用二维表来存储和表示的数据,如网页的HTML结构是一个树形结构,属于非结构化数据。
本发明中数据库选择的部署在本地,主要用于存储服务端采集的keyword信息和proxy以及各个采集节点采集的数据量,属于非结构化数据。常见的非结构化数据库Redis数据库属于内存数据库,数据的读取都在内存中,优点是数据的加载和写入速度都很快,且支持高并发。但Redis在公网中开放存在两个缺点:
1、容易被攻击,如果数据库为进行持久化,会造成数据丢失,或者同样的keyword反复发放给下载节点进行下载。
2、在进行环境迁移的时候,数据库备份文件可能在新的机器redis环境无法被加载,造成数据损失。
对此,本发明采用的是SSDB数据库,SSDB数据库是一种硬盘级数据库,数据的存储和读取都在内存中完成,核心就是一个磁盘文件,速度上与redis基本一致,在宕机和受到攻击的时候SSDB可以保证数据不丢失。在本发明中使用SSDB可以保证数据的安全,同时本发明设计了使用SQL对SSDB操作的方案,便于对采集数据进行统计。
1、本发明设计了SQL操作SSDB解决方案,便于开发者查询数据信息。打开一个到SQLite数据库文件database的链接db.connect(db_path),如果数据库成功打开,则返回一个连接对象,使用conn.cursor()创建一个数据游标cursor用于按行操作数据库中的数据,通过db.Row可以获取到数据库列信息通过cursor.execute(exectCmd)执行一个SQL语句,通过cursor.fetchall()获取查询结果集中所有(剩余)的行,返回一个列表。当没有可用的行时,则返回一个空的列表。
2、获取当前数据库中proxy的解决方案,输入数据库名称和sql内容,返回我们需要的proxy列表,如我们使用'select ip,port from proxy_ips where is_valid=1limit50'来查询proxy的ip和端口列表信息。
三、对于上述资源池环境来说:
cookie(网址缓存)是部分网站为了辨别用户身份进行Session(会话)跟踪而存储在用户本地终端的数据(通常经过加密),一般网站的cookie都是有时效性的,过了时间就会失效。
本发明设计了一种动态cookie池,如图2所示,在申请者向cookie池申请资源的时候资源池会使用用户名和密码对网址进行访问,并将网站反馈的cookie字段存储到有效队列中分配给申请者。其中有效队列是用python实现的列表结构,存储在内存中,读取速度较快。这样做可以使cookie保持持续可用的状态,避免使用者使用无效的cookie进行访问。
UserAgent(用户代理)标准格式为浏览器标识(操作***标识;加密等级标识;浏览器语言)渲染引擎标识版本信息,站通常会通过判断UA的类型,来识别访问者的操作***类型和浏览器信息,然后反馈不同的页面和页面渲染方式。
本发明中,申请者在申请资源的同时需要发送当前服务器的操作***类型,UserAgent池会根据申请者的服务器类型分配对应的UserAgent。这样做的可以使申请者获取有效的UserAgent字段,避免通过错误的UserAgent爬取到的数据无法解析。通过本设计,本项目中其他模块可以使用同一的类(class)进行调度,简单便捷。
四、对于上述C/S架构来说:
Client-Server(客户端-服务端模式),C/S架构通常包含两层结构,服务端和客户端,其中;
服务端:
服务端与数据库和存储层通常部署在一台机器,便于对用户的请求进行及时性应答,避免网络延迟导致的数据损失。服务器接受客户机的请求,将数据提交给客户机,客户机将服务集分发的数据进行响应,并将计算结果进行反馈。
此外,服务器运行过程中支持多台客户机器进行高并发访问,这要求服务器的容错能力和灾难恢复的能力以及硬件配置方面都需要较高。客户端是计算节点,可以部署在服务端,也可以部署在网络可达的任何一台机器上。可以部署在实体机器上、虚拟机、本地机器或者云主机,都是可以的,灵活性较高。负责向服务端申请任务,并将将完成后的任务及结果反馈给服务端。
本发明中,服务端部署在本地与数据存储层和数据库层位于同一台机器,减少网络延迟带来的影响。服务端使用bottle(python的一种轻量级web框架),bottle框架比django(python web框架)和flask(python web框架)更小,更轻。Django和flask的使用和部署需要依赖很多第三方插件,环境安装复杂,并且有很多功能使我们项目中用不到的。
相比之下,bottle是一个独立的python开发的脚本,不依赖任何第三方python模块,容易部署,可以完成web请求和响应的大部分工作,内置网页开发所需要的request(网页需求的请求方式)、post(表单式请求),因此我们使用bottle可以很便捷的启动我们的服务节点,可以将该服务节点迁移到任何一台主机进行启动。
本发明服务端使用了gunicorn(轻量级web服务启动框架),该框架安装简单,可以用过pip(python库管理工具)进行安装,支持多进程并发启动服务,这样在客户端进行高并发申请的时候,避免程序瘫痪,提高服务的容错性。
本发明中使用了supervisor(进程监督工具)对服务器的运行状况进行监督,supervisor是Linux/Unix下的进程管理工具。supervisor可以很方便的监听、启动、停止、重启一个或者多个进程。
本发明使用supervisor进行进程管理,当服务端进程意外被杀死,supervisor监听到进程时候,很方便做到进程自动恢复的功能,可以保障服务端稳定的提供服务,不间断。
具体的服务端主要包含如下功能:
1、检查请求IP的合法性,通过判断请求IP和端口是否在我们的集群序列中,对不合法的请求进行屏蔽,防止异常请求。
2、客户端需要向服务端请求有效的proxy,但通常一个proxy对网站的访问,由于网站的自我保护机制,每个proxy几个小时就会进入短暂的失效状态,之后正常访问。
3、服务端需要检查proxy(代理ip和端口)池的中proxy的存活状态,将失效的proxy放到队列尾部,保证客户端申请到的proxy都是可用的proxy。当proxy池中proxy存活数量为空时,程序进入睡眠状态,等待proxy自动复活。
4、获取客户端的请求,对客户端存储空间和剩余流量进行查询
5、根据申请节点的状态分配适当的下载任务,可以让每个申请节点的资源充分利用,同时防止下载资源的浪费。
6、当我们搜索某一个我们需要采集领域的数据的时候,如汽车,我们需要搜索的关键词可能包括宝马,奥迪等,因此服务端需要下载keyword,之后将keyword存储到数据库中。
8、当客户端申请任务的时候,服务端将keyword分配给客户端。
客户端:
本发明中,客户端是使用搬瓦工服务器搭建的云采集节点,优势在于不需要占用本地服务器资源,搭建简单。云节点的下载速度远大于本地网络,且用户可以根据需求选择与网址服务器分布较近的搬瓦工服务器进行节点部署,易拓展。
Proxy的作用:网站为了限定用户的异常访问,会对固定IP的访问次数和频率进行限制,通常一个固定IP向网站访问超过30次/min,就会被休眠一段时间。因为我们使用多个proxy代替自身的IP进行访问,使访问更加合理。
服务端向服务端申请proxy,反馈当前proxy的可用性,如果proxy可用,直接用于数据采集。如图6:实现方法本发明使用requests(网页请求的python专用库)向目标网址做请求,根据返回的状态码,判断当前proxy是否可用,如果不可用,将当前proxy的状态置为0,并将失败的proxy反馈,并重新进行proxy申请,直到获取可用的proxy。向资源池申请下载资源,资源池将有效cookie(网页缓存)和UserAgent(用户代理信息)反馈给客户端。向服务端申请keyword(下载关键词),并根据关键词对目标网页进行信息检索,对目标网页进行网址解析,筛选出我们要采集的文件的url进下载,将下载的url信息下载到本地存储。
客户端可以替换成所有的数据采集程序,一般解决方案如下:
a)使用keyword与网站域名进行拼接,拼接成相关keyword的网址。如我们的keyword是“汽车”,我们要使用的网站是***图片搜索,这我们的拼接规则;
b)根据关键词拼接的网址,进行网页解析,解析目标URL;
c)存储目标url到下载节点,本发明中下载节点和客户端位于同一台节点。
五、对于上述分布式集群架构来说:
应用中,分布式集群架构,通常包含至少一台主节点和若干的从节点构建的集群。
一般集群架构具有以下优点:
1、高性能:每台机器有较高的硬件资源,通过高速的网络连接在一起,集群之间保持数据共享、资源共用。在处理一个大规模任务和运算的时候,集群计算机相对于单个的计算机来说性能更加优秀。
2、可扩展性:当原先的集群计算机***不足以应对新出现的计算需求,我们完全可以通过扩增计算机(节点)的方法对集群计算机进行优化,在这个过程中甚至不会停机,依然维持对用户的服务。当下载资源冗余的时候,我们可以停止一部分节点,较为灵活。
3、高可用性:部分节点出现宕机的时候,剩余节点可以正常运转,保证集群高可用行。且宕机的资源可以自动切换给正常运转的机器保证数据的完整不丢失。
但通常集群架构都被应用于大规模数据运算和分布式训练,且使用本地物理服务器搭建集群的费用较高。因为搬瓦工节点的费用低,网速快的特点,本发明设计了由搬瓦工节点组成的分布式集群,主节点可以部署在搬瓦工机器上,也可以部署在本地机器上。这样可以用较低的成本,获取大量可用的数据。
如图5所示,主节点负责管理所有从节点,主要包含程序一键更新部署本。
发明中使用了一种自动化运维工具(ansible)框架,ansible基于paramiko开发的,paramiko是一种python的第三方库,实现了远程控制协议(SSHv2),可以用过Python代码代替ssh进行远程服务器的控制。
并且基于模块化工作,Ansible是一种集成IT***的配置管理、应用部署、执行特定任务的开源平台,它是基于python语言,由Paramiko和PyYAML两个关键模块构建。
集合了众多运维工具的优点,实现了批量***配置、批量程序部署、批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。
因为ansible安装简单且不需要远程搭建客户端,就可以完成对远程服务器的操控,为了减少输入密码的麻烦使通信的便捷,本发明使用了配置文件免密的方式。
本发明中将远程各个从节点的代码和安装环境进行了封装,这样可以使用ansible在传输完代码的同时完成环境的安装与程序的启动。
本发明中从节点使用的是bwg(搬瓦工云服务器)和本地docker(一种虚拟化容器引擎)两种解决方案。
因为目前大部分爬虫都是部署在实体机器的,对本机资源的占用量尤其是CPU(中央处理器)和网络资源,对其他使用者会有不同程度的干扰。
bwg云服务器本身网速快,我们可以根据需求定制云服务器的CPU、内存存储、网络带宽等资源,同时我们可以选择云服务器的物理地址,如果我们下载国外的数据资源会是很好的解决方案。
Docker是一种虚拟化技术,主要包含镜像(Image)和(容器)Container两个主要概念,可以部署在服务器上,成为一个独立运行的虚拟机。Image:用户可以将自己操作的代码环境和软件依赖都封装到一个Image中,我们可以理解为这是个可以实现某种特定功能或者特定服务的一个文件。
Container:用户在调用某个Image或者多个Image中资源以及本机的资源时可以启动一个Container。Container可以理解为一个独立的机器,优势是我们可以根据需求分配或者限定Container对主机资源的占用。在数据采集过程中,使用docker虚拟化技术可以对的约束,减少对其他用户的影响。同时使用docker技术可以对爬虫代码和依赖进行封装,便于迁移和部署。
六、对于上述多级存储介质来说:
应用中,数据采集各个节点为多进程采集,网络并发较大。如果我们使用普通的存储结构,通常IO会被占满,影响下载速度。
对此,本发明设计了多层存储介质。如图4,多级存储介质包含缓存层存储、持久性存储和缓存监控服务。本发明中缓存层为SSD(固态硬盘),也可以采用RAID(磁盘阵列),与持久层位于同一台机器上,并且设计为单个持久层对接多个缓存层的结构。缓存层存储数据会自动同步到持久层存储,持久层的IO比缓存层较慢,但存储空间较大,本发明使用的是7200的SATA(串行集成存储)盘,也使用RAID(磁盘阵列)可以保证数据不丢失。
七、对于上述可视化前端来说:
如图6,本发明通过前端监控服务完成数据采集流程的可视化,具体的包括对各个分布式从节点运行状态的监控数据采集量的实时统计。
普鲁米修斯***(Prometheus)是一个开源的***监控工具包,可以支持灵活的查询语言(PromQL),生态中存储多种图标结构和仪表盘,支持HTTP数据pull的方式动收集数据。
Grafana是一款采用go语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。
每个数据源的查询语言和能力都是不同的。你可以把来自多个数据源的数据组合到一个仪表板,但每一个面板被绑定到一个特定的数据源,它就属于一个特定的组织。
本发明使用该框架,可以做到监控的实时性,服务端将数据实时通过post的方式发送给Prometheus服务,通过前端可视化程序(Grafana)实时显示。避免由于数据收集的不准确或者延迟使我们产生误判。
如图1-图7所示,根据本发明实施例的基于CS架构的分布式数据采集方法,包括以下步骤:
步骤S1,客户端向服务端发送采集指令;
步骤S3,所述服务端向负载均衡代理申请代理;
步骤S5,所述服务端向资源池申请资源;
步骤S7,所述资源池从用户代理池获取用户代理,并使用所述用户代理访问网站;
步骤S9,所述网站返回Cookie给Cookie池,所述资源池获取所述Cookie;
步骤S11,所述客户端从所述网站采集数据,并存储至多级存储介质;
步骤S13,所述客户端将数据传输给所述服务端;
步骤S15,所述服务端将数据传输给数据库;
步骤S17,所述数据库将数据传输给可视化前端;
步骤S19,所述可视化前端显示数据。
进一步的,预先还包括以下步骤:
搭建所述负载均衡代理;
搭建所述数据库;
搭建所述资源池;
搭建CS架构;
搭建分布式集群架构;
搭建所述多级存储介质;
搭建所述可视化前端。
进一步的,搭建分布式集群架构至少包含一台主节点和若干的从节点构建的集群,其中主节点设置于服务端上,从节点设置于客户端上,包括以下步骤:
新建文件,输入免密的IP、端口和密码;
配置ansible框架;
开发一键部署脚本;
使用部署脚本将依赖环境分发给所有空节点;
批量执行shell脚本;
将采集程序及依赖环境依次分发到各个从节点;
使用各从节点的采集程序启动种子下载程序,将下载好的种子存入列表。
另外,所述搭建所述负载均衡代理包括步骤:
安装shadowsocks软件;
准备可用的代理IP和端口,用字典的方式配置需要的IP和端口信息;
启动代理服务和IP监控程序;
对IP队列中的代理节点进行周期性有效性验证轮训;
保存有效的IP信息到数据结构存储文件中,更新服务;
对失效的IP列表中进行有效性验证,将有效的IP重新放到资源池中。
另外,所述搭建所述数据库包括步骤:
安装数据库SSDB;
安装Redis服务器;
修改Redis服务器外网访问配置文件;
修改Redis服务器权限访问配置文件。
另外,所述搭建所述资源池包括步骤:
获取用户账号和密码,存储至cookie池中;
使用用户账号和密码进行网址访问,获取cookie列表并返回给申请者;
准备不同版本UserAgent存储到UserAgent池中;
根据请求操作***的差异返回不同的UserAgent;
编写keyword采集程序,打开网站首页,申请访问需要的cookie和useragent并调用负载均衡代理服务,获取账号存储到本地Redis服务器中;
根据已经存储的账号信息爬取对应的ID,存储在Redis服务器中;
将keyword数据从下载服务器导入到服务端数据库中;
下载服务器获取新的下载种子。
另外,所述搭建CS架构包括步骤:
准备数据,安装bottle环境;
安装guncorn框架;
封装服务;
多进程启动服务端程序;
安装并启动supervisor;
配置gunicorn的启动命令和路径;
使用客户端进行数据采集。
另外,所述搭建多级存储介质包括步骤:
开发资源下载程序;
对缓存层空间进行监控;
分布式节点向服务端申请持久层位置;
将分布式节点数据从缓存层同步到持久层。
另外,所述搭建可视化前端包括步骤:
搭建go环境;
搭建流程监控服务Prometheus;
安装Grafana;
启动Prometheus和Grafana服务;
对每个云端节点进行流量监控;
对实时采集量做数据收集,并将结果发送给Prometheus服务。
在具体应用中,详细如下:
如图1-图2所示,
1、搭建影梭(shadowsocks)代理环境,通过apt(ubuntu库管理工具)或者pip(python库管理工具)安装shadowsocks。
2、准备可用的代理IP和端口,可以通过爬虫获取免费的IP端口,也可以购买付费高可用的IP端口,配置好影梭的配置文件,默认位置是/etc/shadowsocks/config.json,将我们需要的IP和端口信息用字典的方式配置好,如:
{"method":"aes-256-gcm","local_port":
1080,"server_password":[["ip1:port1","pwd1"],["ip2:port2","pwd2"]]}。
3、通过sudo shadowsocks-c/etc/shadowsocks/config.json-d start将配置文件中的配置信息加载到内存中,并启动代理服务。
4、启动IP监控程序:该程序主要对全量IP进行遍历,将json中失效的IP剔除,并生成新的json文件,之后重启上述服务。使用程序每个15分钟或者设定的时间区间对IP进行有效验证,如果IP失效,将对应的IP和端口从配置文件中删除,重启服务。
5、同时对失效的IP列表中进行有效性验证,将有效的IP和端口更新到配置文件中,重启服务,保证当前启动的配置文件中都是有效可用的代理信息。
6、本发明提供了邮箱警告功能,当proxy池中所有的ip失效,会发送邮件给负责人进行处理,避免程序中断。
7、通过简单邮件传输协议(smtplib)模块,绑定发送者账号、接收者账号列表、以及发送邮件的内容(msg=MIMEText(content))和主题(msg['Subject']=title),完成账号的登录、连接邮箱(smtplib.SMTP(mail_host,port=port)、邮件发送(smtp.sendmail(username,recv,msg.as_string())等功
8、通过ubuntu库管理工具(dpkg)对我们使用的基于磁盘存储的数据库(SSDB),通过sudo apt-get update更新apt库的信息,通过sudo apt-get install-y make gcc g++autoconf安装数据库相关依赖,通过wget--no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip&&unzip master.zip&&cd ssdb-master&&make&&makeinstall下载并编译SSDB数据库,默认数据库会安装到/usr/bin/ssdb。
9、可选择,数据库可以使用redis数据库作为存储,Redis是常用基于内存的Key-Value数据库,支持多种数据结构,高效,快速。用Redis可以很轻松解决高并发的数据访问问题;作为实时监控信号处理也非常不错,通过sudo apt-get install redis-server安装命令一键安装redis缓存数据库。
10、安装Redis服务器,会自动地一起安装Redis命令行客户端程序。在本机输入redis-cli命令就可以启动,客户端程序访问Redis服务器。
11、Redis默认不支持外网访问,需要修改/etc/redis/redis.conf文件,注释掉#bind 120.0.0.1,之后使用通过redis服务启动命令,重启服务。
12、注意redis开启远程访问后,没有权限限制,很容易受到攻击,我们需要对redis设置密码。修改/etc/redis/redis.conf添加如下内容。对网络用户进行了限制,保障数据的安全。
13、收集若干网站公开的账号(username)和密码(pwd),存储在cookie池中格式users={'username':'pwd'}。
14、使用用户名和密码进行网址访问,获取cookie列表,返回给申请者。查找网站的登录网址,如https://***.com/account/login。输入用户名和密码的json数据,如values={'username':username,'password':password}。使用request库发送post表单到网站,进行登录请求,获取网站响应的cookie字段存储到文件中。
15、准备不同版本的UserAgent存储到UserAgent池中,根据客户端操作***类型的差异(os_type),常见的os_type报考windows、ubuntu、mac等返回不同的UserAgent。
16、编写(关键词)keyword采集程序,keyword是我们访问网页的索引信息,如我们需要在***上搜索汽车图片,那么汽车的品牌如奔驰、宝马就是我们的keyword。打开网站首页,申请访问网站需要的cookie,useragent并调用负载均衡代理服务。
17、通过抓包获取访问网站必须的token信息,其中token是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回Token给前端。前端可以在每次请求的时候带上Token证明自己的合法地位。
18、通过post表单的方式发送网页需要的Token,cookie信息。将返回的响应数据(response)通过json库加载为json文件。解析网页返回的json文件,获取首页中所搜频率较高关键词(keyword)并存储到本地SSDB或者redis数据库中。根据已经存储高频关键词作为搜索项向网站发送请求,获取与该关键词相关的其他关键词信息存储在redis中,并用递归迭代的方式获取更多的keyword。用于当做后续用于数据分布式采集输入条件。
19、如果keyword存储在redis中,将keyword数据从下载服务器redis一键导入到服务端SSDB中,启动中心端的任务分发服务,下载服务器通过此API获取新的下载种子。获取api请求的ip地址信息,在host_info的hashmap里查询是否存在,不存在返回http 400。
20、下载服务器通过此应用程序接口(API)向服务器发送请求,并获取proxy数据。
传入参数Post
{
'ip':'10.10.10.1',#下载服务器的IP地址
'oldproxy':”#提交当前使用的proxy地址,如果是第一次调用,则为空
'status':0#说明当前oldproxy的状态1有效,还可以继续使用,0proxy已无法使用
}
·返回值
·{
'proxy':'newproxyip'#返回新的proxy,如果有异常或有效proxy已经没有,则返回空字符串
'status':1#1为正常返回,其它值为异常
}。
服务器从可用proxy池里获取一个proxy地址,提交正在使用的proxy地址给中心端放在proxy地址池的最后。
21、准备好数据以后,我们安装bottle环境,bottle是支持服务端的web应用,用于启动服务端。使用wget http://bottlepy.org/bottle.py方式下载到本地,无需编译。
22、上述安装方式可以python库管理工具pip进行安装命令如sudo pip installbottle或者通过ubuntu自带管理工具dpkg进行安装命令如sudo apt-get installpython-bottle。
23、guncorn是支持多进程启动服务端的web框架。通过git命令获取代码环境,gitclone git://github.com/benoitc/gunicorn.git通过sudo python setup.py install进行环境安装。
24、多进程启动服务端程序,这样做可以使服务端并行响应客户请求的能力,如下我们启动了4进程并发响应的gunicorn服务。gunicorn-w 4-b{ip}:{port}work,其中-w表示word的任数量-b后面表示对外开放的IP和端口信息。
25、supervisor是一种进程管理工具,支持自动重启服务。通过pip或者apt安装supervisor,通过/usr/bin/supervisord-c/etc/supervisord.conf命令启动supervisor进程对服务进行监控。将上述gunicorn的启动命令和路径配置在/etc/supervisor/*.conf下使用。
26、supervisorctl reload刷新任务,使用pervisorctl start program_name启动我们的项目
27、如图2-图5所示,使用客户端进行数据采集工作,输入依赖是关键词(keyword)、cookie、proxy、userAgent根据keyword进行目标网页的搜索和申请,申请userAgent和cookie资源。发送request请求requests.get(url,headers=headers,proxies=proxy),通过json库将返回数据转成json文件json.loads(response.content)。解析json文件,获取页面链接传end_cursor和has_next_page等用于页面衔接的关键词,解析其中我们需要的数据的weburls存储到本地
28、搭建分布式批量部署环境Master节点,为了方便主节点和各个节点直接的关联。在~/.ssh/目录下新建文件hosts在,一次输入我们要免密的IP、端口和密码,保存文件就可以使用demo1进行免密操作。对ansible框架进行配置,默认配置文件位置/etc/ansible/hosts,我们将配置好的免密节点每行输入一个名称,之后保存退出,这样我们就完成了ansible的配置。
29、进行远程一键部署操作:
开发一键部署脚本,包含bzip解压程序,开源python发行版本anaconda,anaconda的优势在于可以自动处理python库之间的依赖问题。同时,将项目的依赖文件列表requirment发送到子节点进行自动化安装,方法是pip install-r requirements.txt。
使用部署脚本和依赖环境分发给所有空节点,其中-m代表commond命令-a代表argument参数,双引号中为远程执行命令的参数,如ansible testhost-m copy-a"src=/tmp/test.sh dest=/tmp/install.sh mode=0755"。
最后是批量执行该shell脚本。ansible testhost-m shell-a"/tmp/install.sh",
使用ansible命令将采集程序及依赖依次分发到各个从节点,ansible hostlist-m copy-a"src=sourcedir dest=target_dir mode=文件权限如0755"。
30、使用ansible一键启动各个子节点的采集程序启动种子下载程序,将下载好的种子(目标资源的url地址)列表,ansible hostlist(服务器列表)-m命令-a"/usr/bin/python python脚本"。
31、开发从节点资源下载程序,主要是根据种子信息(url)下载到各自节点的缓存层。通过request库向服务器申请url中的数据信息,新建二进制容器缓存,并将数据信息以二进制的格式写入容器中进行存储。
32、通过python内置的操作***库os下的os.statvfs(folder)对缓存层空间进行监控,获取文件夹folder的存储空间(单位为B),通过存储数学公式1G=1024M、1M=1024K、1K=1024B获取我们操作***剩余的存储空间st.f_bavail*st.f_frsize/1024/1024/1024。
33、我们对缓存层的存储空间设定安全阈值,如果存储空间小于阈值(一个存储空间,用于防止磁盘溢出),分布式节点向服务端申请持久层位置(持久层IP和持久层存储目录),通过套接字(socket)发送(TCP/IP–IPv4)AF_INET指令和SOCK_DGRAM(UDP数据报)指令socket.socket(socket.AF_INET),(socket.SOCK_DGRAM),将返回的把数据包通过输入输出操作***(input/output control)ioctl库行解析fcntl.ioctl(s.fileno(),0x8915,struct.pack('256s',ifname[:15])),获取本机的IP信息。将本机的IP封装为字典格式{"ip":str(ip)},发送给remotehost的API接口获取返回的数据信息res_r,将res_r中的文本内容res.content通过json.load加载为json格式_tmp_res,解析_tmp_res中的内容获取有效的回传地址remote_ip和目标文件夹folder。分布式将缓存层数据同步到已经申请到的remote_ip和对应的文件夹folders中分布式。
34、设定回传次数标记flag,最多允许回传失败三次,每次失败flag数量+1,这样可以有效避免由于网络延迟或者中断导致了数据断流和丢失问题。
35、使用(远程通用备份工具)rsync进行数据传输,如rsync-avz--progress${tar_name}${remote_dir}:${tardir}其中-a,--archive归档(压缩)模式,表示以递归方式传输文件,并保持所有文件属性等同于-rlptgoD,-v,--verbose详细模式输出,-z表示压缩回传减少回传数据包体积。${tar_name}表示我们回传的数据文件名称,${remote_dir}:${tardir}是目标持久层的IP和目录。使用rsync的最大优势在于rsync支持断点续传,在数据回传失败进行重传时,会从失败的内存节点续传。
36、汇总成功后,使用$?对当前命令的执行结果进行判断,$?是linux底层支持的用于获取上一条命令执行状态的命令,如果$?数值为0表示执行成功,删除回传成功的数据释放空间。如果数值为1表示执行失败,flag标记为加1,并继续重传。
37、对回传进程进行监控,避免僵尸进程(操作***中进程异常中断,占用内存无法释放的情况)和重复执行的情况,在每次执行前使用ps-ef|grep rsync|awk'{print$2}'|xargs-i sudo kill-9{}对已进程进行检索和删除。其中ps-ef可以查询出当前操作***的所有进程“|”表示管道(pipe)可以将前一条命令执行的返回结果当做后一条命令的输入。grep是shell中的过滤器,用于将rsync相关进程筛选出来。Awk是一种逐行筛选的微型可编程语言通用格式为awk'{pattern+action}'{filenames},可以获取与rsync相关的进程号。xargs-i是管道参数的一种接收方式,用于逐一遍历,kill-9表示强制删除。通过这条命令可以将rsync相关的所有进程删除掉。
38、搭建go环境,Prometheus的安装依赖go环境,通过wget命令从https://dl.***.com/go/go1.12.linux-amd64.tar.gz下载到本地,使用tar-C/usr/local/-xvfgo1.12.linux-amd64.tar.gz解压压缩包,使用vim/etc/profile配置环境变量,使用source/etc/profile刷新配置,通过go version查看是否安装成功。Prometheus是一种集运监控环境。
39、安装Grafana用于对Prometheus统计信息的可视化,使用wget https://dl.grafana.com/oss/release/grafana-5.4.2-1.x86_64.rpm下载安装包到服务器,使用rpm-ivh--nodeps grafana-5.4.2-1.x86_64.rpm将grafana安装到服务器。
40、我们将每个代理节点的ip、本地名称hostname、唯一关键字apikey、唯一id号veid存储到配置文件中,通过hostinfo.get(ip)方法传入IP信息,获取该IP节点的其余配置信息,我们使用request方法像bwg云api接口发送veid和apikey获取该主机的运行状态status(0表示暂停,1表示运行中,-1表示异常)和剩余流量(单位为B),各个分布式节点向服务端发送本地IP,服务端获取该IP的运行状态和剩余流量,将结果post给prometheus。
41、可选的分布式节点可以使用docker做本地部署,docker节点使用st=os.statvfs(folder)获取本地的存储发送给prometheus的API接口进行统计。通过数据库查询,输入主机的IP信息,通过sql拼接,获取当前ip已下载数据存储,并通过post表单将ip和对应的存储量发送给prometheus的download存储统计中。grafana配置数据源类型为Prometheus,监控Prometheus的服务端口,在前端导入配置好的Prometheus dashboard之后可以查看到我们服务各个子节点的运行状态。
综上所述,借助于本发明的上述技术方案,通过基于CS架构的分布式数据采集,提出了将负载均衡代理服务用于解决代理数据采集,可以保证数据不丢失,同时支持国内外网站数据的合法请求;提出了分布式的策略,随时可以新增下载节点,扩充海量数据;前端提供了可视化前端,可以直观的看到集群的运行状态并进行管理。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于CS架构的分布式数据采集***,其特征在于,包括CS架构和分布式集群架构,其中,所述CS架构包括客户端和服务端,所述分布式集群架构包括主节点和从节点,且所述从节点设置于所述客户端上,所述主节点设置于所述服务端上,其中;
所述客户端,搭建虚拟化容器引擎或搬瓦工云服务器,向资源池申请下载资源以及向目标网页进行网址解析下载和存储;
所述服务端,物理主机,接受客户机的请求,将数据响应给客户机;
所述分布式集群架构,用于实现大规模数据运算和分布式训练。
2.根据权利要求1所述的基于CS架构的分布式数据采集***,其特征在于,进一步还包括负载均衡代理、数据库、资源池、多级存储介质和可视化前端,其中;
所述客户端分别与所述资源池和所述服务端连接,所述服务端分别与所述数据库和所述多级存储介质连接,所述数据库与所述可视化前端连接;
所述负载均衡代理,用于搭建负载均衡,实现负载均衡代理;
所述数据库,用于存储服务端采集的keyword信息和proxy以及各个采集节点采集的数据量;
所述资源池,用于用户向cookie池申请资源,资源池会使用用户名和密码对网址进行访问,并将网站反馈的cookie字段存储到有效队列中分配给用户;
所述多级存储介质,用于提供包含缓存层存储、持久性存储和缓存监控服务;
所述可视化前端,用于对各个分布式从节点运行状态的监控数据采集量的实时统计以及通过前端监控服务完成数据采集流程的可视化。
3.一种基于CS架构的分布式数据采集方法,其特征在于,用于权利要求1所述的分布式数据采集***,包括以下步骤:
步骤S1,客户端向服务端发送采集指令;
步骤S3,所述服务端向负载均衡代理申请代理;
步骤S5,所述服务端向资源池申请资源;
步骤S7,所述资源池从用户代理池获取用户代理,并使用所述用户代理访问网站;
步骤S9,所述网站返回Cookie给Cookie池,所述资源池获取所述Cookie;
步骤S11,所述客户端从所述网站采集数据,并存储至多级存储介质;
步骤S13,所述客户端将数据传输给所述服务端;
步骤S15,所述服务端将数据传输给数据库;
步骤S17,所述数据库将数据传输给可视化前端;
步骤S19,所述可视化前端显示数据。
4.根据权利要求3所述的基于CS架构的分布式数据采集方法,其特征在于,预先还包括以下步骤:
搭建所述负载均衡代理;
搭建所述数据库;
搭建所述资源池;
搭建CS架构;
搭建分布式集群架构;
搭建所述多级存储介质;
搭建所述可视化前端。
5.根据权利要求4所述的基于CS架构的分布式数据采集方法,其特征在于,搭建分布式集群架构至少包含一台主节点和若干的从节点构建的集群,其中主节点设置于服务端上,从节点设置于客户端上,包括以下步骤:
新建文件,输入免密的IP、端口和密码;
配置ansible框架;
开发一键部署脚本;
使用部署脚本将依赖环境分发给所有空节点;
批量执行shell脚本;
将采集程序及依赖环境依次分发到各个从节点;
使用各从节点的采集程序启动种子下载程序,将下载好的种子存入列表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010306601.0A CN111538590A (zh) | 2020-04-17 | 2020-04-17 | 一种基于cs架构的分布式数据采集方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010306601.0A CN111538590A (zh) | 2020-04-17 | 2020-04-17 | 一种基于cs架构的分布式数据采集方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111538590A true CN111538590A (zh) | 2020-08-14 |
Family
ID=71978747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010306601.0A Pending CN111538590A (zh) | 2020-04-17 | 2020-04-17 | 一种基于cs架构的分布式数据采集方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111538590A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727564A (zh) * | 2019-10-22 | 2020-01-24 | 上海游族信息技术有限公司 | 服务器性能压力测试的测试数据实时监控方法 |
CN112182563A (zh) * | 2020-09-28 | 2021-01-05 | 邢韬 | 一种linux***Bash安全防护方法 |
CN112486630A (zh) * | 2020-11-30 | 2021-03-12 | 之江实验室 | 分布式训练部署***及其方法 |
CN112685503A (zh) * | 2021-01-04 | 2021-04-20 | 上海圣剑网络科技股份有限公司 | 基于自动化运维工具的数据处理方法、装置及*** |
CN113127150A (zh) * | 2021-03-18 | 2021-07-16 | 同盾控股有限公司 | 云原生***的快速部署方法、装置、电子设备和存储介质 |
CN113329062A (zh) * | 2021-05-10 | 2021-08-31 | 灵羲科技(北京)有限公司 | 数据共享方法、装置、电子设备和存储介质 |
CN113347049A (zh) * | 2021-08-04 | 2021-09-03 | 统信软件技术有限公司 | 一种服务器集群部署方法、装置、计算设备及存储介质 |
CN114466017A (zh) * | 2022-03-14 | 2022-05-10 | 阿里巴巴(中国)有限公司 | kubernetes边缘集群的数据监测方法和装置 |
CN115086003A (zh) * | 2022-06-10 | 2022-09-20 | 上海弘积信息科技有限公司 | 一种负载均衡集中管控***的网页跳转后的免登录方法 |
CN115774564A (zh) * | 2022-11-03 | 2023-03-10 | 北京大学重庆大数据研究院 | 任务处理方法、装置及电子设备 |
CN117834653A (zh) * | 2023-12-22 | 2024-04-05 | 北京联广通网络科技有限公司 | 一种节点同步分级隔离的数据网网络安全*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100111093A1 (en) * | 2008-10-31 | 2010-05-06 | Michael Satterlee | Methods and apparatus to dynamically control connectivity within virtual private networks |
CN105447088A (zh) * | 2015-11-06 | 2016-03-30 | 杭州掘数科技有限公司 | 一种基于志愿者计算的多租户专业云爬虫 |
CN106570074A (zh) * | 2016-10-14 | 2017-04-19 | 深圳前海微众银行股份有限公司 | 分布式数据库***及其实现方法 |
US9646095B1 (en) * | 2012-03-01 | 2017-05-09 | Pathmatics, Inc. | Systems and methods for generating and maintaining internet user profile data |
CN109933701A (zh) * | 2019-03-08 | 2019-06-25 | 四川大学 | 一种基于多策略融合的微博数据获取方法 |
CN113347049A (zh) * | 2021-08-04 | 2021-09-03 | 统信软件技术有限公司 | 一种服务器集群部署方法、装置、计算设备及存储介质 |
-
2020
- 2020-04-17 CN CN202010306601.0A patent/CN111538590A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100111093A1 (en) * | 2008-10-31 | 2010-05-06 | Michael Satterlee | Methods and apparatus to dynamically control connectivity within virtual private networks |
US9646095B1 (en) * | 2012-03-01 | 2017-05-09 | Pathmatics, Inc. | Systems and methods for generating and maintaining internet user profile data |
CN105447088A (zh) * | 2015-11-06 | 2016-03-30 | 杭州掘数科技有限公司 | 一种基于志愿者计算的多租户专业云爬虫 |
CN106570074A (zh) * | 2016-10-14 | 2017-04-19 | 深圳前海微众银行股份有限公司 | 分布式数据库***及其实现方法 |
CN109933701A (zh) * | 2019-03-08 | 2019-06-25 | 四川大学 | 一种基于多策略融合的微博数据获取方法 |
CN113347049A (zh) * | 2021-08-04 | 2021-09-03 | 统信软件技术有限公司 | 一种服务器集群部署方法、装置、计算设备及存储介质 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727564A (zh) * | 2019-10-22 | 2020-01-24 | 上海游族信息技术有限公司 | 服务器性能压力测试的测试数据实时监控方法 |
CN112182563A (zh) * | 2020-09-28 | 2021-01-05 | 邢韬 | 一种linux***Bash安全防护方法 |
CN112486630A (zh) * | 2020-11-30 | 2021-03-12 | 之江实验室 | 分布式训练部署***及其方法 |
CN112685503A (zh) * | 2021-01-04 | 2021-04-20 | 上海圣剑网络科技股份有限公司 | 基于自动化运维工具的数据处理方法、装置及*** |
CN113127150A (zh) * | 2021-03-18 | 2021-07-16 | 同盾控股有限公司 | 云原生***的快速部署方法、装置、电子设备和存储介质 |
CN113127150B (zh) * | 2021-03-18 | 2023-10-17 | 同盾控股有限公司 | 云原生***的快速部署方法、装置、电子设备和存储介质 |
CN113329062A (zh) * | 2021-05-10 | 2021-08-31 | 灵羲科技(北京)有限公司 | 数据共享方法、装置、电子设备和存储介质 |
CN114024841A (zh) * | 2021-08-04 | 2022-02-08 | 统信软件技术有限公司 | 一种服务器集群部署方法、装置、计算设备及存储介质 |
CN113347049B (zh) * | 2021-08-04 | 2021-12-07 | 统信软件技术有限公司 | 一种服务器集群部署方法、装置、计算设备及存储介质 |
CN114024841B (zh) * | 2021-08-04 | 2023-09-19 | 统信软件技术有限公司 | 一种服务器集群部署方法、装置、计算设备及存储介质 |
CN113347049A (zh) * | 2021-08-04 | 2021-09-03 | 统信软件技术有限公司 | 一种服务器集群部署方法、装置、计算设备及存储介质 |
CN114466017A (zh) * | 2022-03-14 | 2022-05-10 | 阿里巴巴(中国)有限公司 | kubernetes边缘集群的数据监测方法和装置 |
CN114466017B (zh) * | 2022-03-14 | 2024-03-12 | 阿里巴巴(中国)有限公司 | kubernetes边缘集群的数据监测方法和装置 |
CN115086003A (zh) * | 2022-06-10 | 2022-09-20 | 上海弘积信息科技有限公司 | 一种负载均衡集中管控***的网页跳转后的免登录方法 |
CN115086003B (zh) * | 2022-06-10 | 2024-03-29 | 上海弘积信息科技有限公司 | 一种负载均衡集中管控***的网页跳转后的免登录方法 |
CN115774564A (zh) * | 2022-11-03 | 2023-03-10 | 北京大学重庆大数据研究院 | 任务处理方法、装置及电子设备 |
CN117834653A (zh) * | 2023-12-22 | 2024-04-05 | 北京联广通网络科技有限公司 | 一种节点同步分级隔离的数据网网络安全*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111538590A (zh) | 一种基于cs架构的分布式数据采集方法及*** | |
US20220261419A1 (en) | Provisioning and managing replicated data instances | |
JP6357243B2 (ja) | データストリーム取り込み及び永続性ポリシ | |
US7890689B2 (en) | Virtual appliance management | |
EP3069228B1 (en) | Partition-based data stream processing framework | |
EP3069495B1 (en) | Client-configurable security options for data streams | |
US9858322B2 (en) | Data stream ingestion and persistence techniques | |
US20150134797A1 (en) | Managed service for acquisition, storage and consumption of large-scale data streams | |
US20140047272A1 (en) | System and method for configuring a cloud computing system with a synthetic test workload | |
US20140047079A1 (en) | System and method for emulating a desired network configuration in a cloud computing system | |
EP2019358A1 (en) | A method and a system for the creation and deployment of a virtual machine appliance on virtualised servers | |
US20140007092A1 (en) | Automatic transfer of workload configuration | |
US20210382802A1 (en) | Establishing and monitoring programming environments | |
WO2004092951A2 (en) | Managing a computer system with blades | |
US20190034464A1 (en) | Methods and systems that collect data from computing facilities and export a specified portion of the collected data for remote processing and analysis | |
CN115344273B (zh) | 一种基于货架***来运行应用软件的方法及*** | |
CN103067507A (zh) | 互联网云计算资源虚拟化封装***及方法 | |
EP1489498A1 (en) | Managing a computer system with blades | |
Pierce et al. | The Quakesim portal and services: new approaches to science gateway development techniques | |
US20240193141A1 (en) | Parameter-Based Versioning For Log-Based Block Devices | |
US20230409454A1 (en) | System and method for updating a non-persistent collector deployed in a compute environment | |
Li | Private Multi-Cloud Architectural Solutions for NRDC Data Streaming Services | |
Cimmino | Fault-tolerance classification in virtualized redundant environment using Docker containers technology | |
Alapati et al. | Deploying a Cassandra Cluster | |
Nykyri | Implementing Continuous Availability in Java EE Environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200814 |