首页> 中国专利> 一种基于志愿者计算的多租户专业云爬虫

一种基于志愿者计算的多租户专业云爬虫

摘要

本发明涉及网络信息采集领域,提供了一种基于志愿者计算的多租户专业云爬虫,包括用户管理客户端,定义爬虫任务,提交爬虫任务,设定爬虫参数,查看爬虫运行情况及获取爬取回来的数据,还包括爬虫服务端,实现爬虫任务的调度和爬取回来的数据处理;爬虫采集客户端,采集互联网站点数据,收集运行主机的网络带宽速率的信息;爬虫服务端包括分布式调度和分布式处理,分布式调度,实现爬虫任务的调度、爬虫客户端资源的管理及接收爬虫客户端返回来的数据;分布式处理,分布式数据处理器实时的去消费消息队列里面的数据,以流式的方式处理数据。本发明提高了用户闲置资源的利用率,节约了用户开发爬虫系统的成本,实现了资源的公平共享。

著录项

  • 公开/公告号CN105447088A

    专利类型发明专利

  • 公开/公告日2016-03-30

    原文格式PDF

  • 申请/专利权人 杭州掘数科技有限公司;

    申请/专利号CN201510751538.0

  • 发明设计人 徐精忠;刘凯枫;

    申请日2015-11-06

  • 分类号G06F17/30(20060101);

  • 代理机构杭州华知专利事务所;

  • 代理人宁冈

  • 地址 310000 浙江省杭州市申花路789号剑桥公社D座1526室

  • 入库时间 2023-12-18 15:07:46

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-01-07

    专利权的转移 IPC(主分类):G06F16/951 登记生效日:20191218 变更前: 变更后: 申请日:20151106

    专利申请权、专利权的转移

  • 2019-04-09

    授权

    授权

  • 2016-04-27

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20151106

    实质审查的生效

  • 2016-03-30

    公开

    公开

说明书

技术领域

本发明涉及网络信息采集领域,尤其涉及一种基于志愿者计算的多租户专业云爬虫。

背景技术

如今已经进入了一个数据爆炸的时代,随着互联网、移动互联网技术的发展,Web已经变成数据分享的平台,那么,如何让人们在海量的数据中想要找到他们需要的信息将变得越来越难。

在这样的情形下,通用搜索引擎(Google,Bing,百度等等)成为大家快速找到目标信息的最好途径。在用户对自己需求相对明确的时候,用通用搜索引擎很方便的通过关键字搜索很快的找到自己需要的信息。但通用搜索引擎并不能完全满足用户对信息发现的需求,那是因为在很多情况下,一是由于通用搜索引擎本身存在网络覆盖率低、漏检率高等局限性,不能为用户提供精确全面的信息;其次用户的需求很难用简单的关键字来表述。由于通用搜索引擎的以上不足,用户为了获取特定的主题信息,必须自己构建不同的主题爬虫来采集互联网特定信息。但是对于普通用户,构建一个易于扩展、稳定的网络爬虫并不是一件容易的事,因为要考虑到URL去重,动态网页采集、网页内容解析、实时增量更新、爬虫IP资源,爬虫调度、反爬等问题,如果爬取的目标网页内容很多,还需要考虑海量数据存储问题。鉴于通用搜索引擎的不足及普通用户构建爬虫所面临的难点,提出一种基于志愿者计算的多租户专业云爬虫实现方法来克服。

志愿者计算是通过互联网让全球的普通大众志愿提供空闲的PC时间,参与科学计算或数据分析的一种计算方式。志愿者计算模式当前主要运用在科学计算等一些基础性领域。

云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。

多租户的概念最早起源于软件领域,指一个软件实例服务于多个用户的架构。每个用户称为一个租户。利用多租户技术,可以实现资源的高度共享,从而提高资源利用率,降低单位资源成本。多租户也是云计算的基本属性之一,云计算的三种服务层次—SaaS、PaaS和IaaS均体现了对多租户不同的支持。

互联网信息采集问题是一个比较通用的需求,大到百度、腾讯、阿里等这样的互联网公司,小到开发天气预报APP的公司都有爬取数据的需求,目前对互联网信息采集的解决方案主要是每个用户根据自己的需求,开发构建一套爬虫系统,对那些中小企业客户也不例外。而构建一个爬虫系统,不仅面临上文所说的普通用户构建网络爬虫所面临的难点,而且还需要网络带宽、服务器等硬件资源。而对中小企业客户来说,由于大部分爬取的站点比较少且不频繁,导致企业很多带宽和服务器资源空闲。

发明内容

本发明为克服上述的不足之处,目的在于提供一种基于志愿者计算的多租户专业云爬虫,帮助用户特别是中小企业用户高效快速采集互联网信息,解决了现有技术中存在的问题,本发明通过以下技术方案达到上述目的:一种基于志愿者计算的多租户专业云爬虫,包括用户管理客户端,所述用户管理客户端是用户管理的门户,向用户提供WEB接口及RESTAPI服务,用户通过管理门户,定义爬虫任务,提交爬虫任务,设定爬虫参数,查看爬虫运行情况及获取爬取回来的数据,还包括爬虫服务端,爬虫采集客户端,所述爬虫服务端实现爬虫任务的调度和爬取回来的数据处理;所述爬虫采集客户端由连接在互联网上的各种相对空闲主机组成,采集互联网站点数据,收集运行主机的网络带宽速率的信息,用于爬虫任务的调度管理;所述爬虫服务端包括分布式调度和分布式处理,所述分布式调度实现爬虫任务的调度、爬虫采集客户端资源的管理及接收爬虫采集客户端返回来的数据;所述分布式处理接收爬虫采集客户端返回的数据,立即将数据进入分布式消息队列,实时的去消费消息队列里面的数据,以流式的方式处理数据。

进一步的,所述分布式调度包括调度器、爬取任务信息汇报器、用户信息汇报器、爬虫节点负载信息汇报器及爬虫集群负载信息收集器,爬虫节点负载信息汇报器收集爬虫采集客户端的负载信息,并将负载信息定期发送给爬虫集群负载信息收集器,调度器在负载均衡的过程中通过爬虫集群负载信息收集器获得所有爬虫采集客户端的负载信息,并根据用户信息汇报器和爬虫任务信息汇报器做出负载均衡决策。

进一步的,所述调度器收集各种信息的主要步骤包括:

(1)爬虫节点负载信息汇报器到爬虫集群负载信息收集器注册,爬虫节点负载信息汇报器发送节点的IP和主机名到爬虫集群负载信息收集器,爬虫集群负载信息收集器对爬虫节点的IP进行注册,创建该爬虫节点负载信息对象,该爬虫节点负载信息汇报器发送的负载信息都将存在该对象中;

(2)爬虫节点负载信息汇报器获得爬虫节点网络带宽的利用率,上述爬虫节点负载信息汇报器获得爬虫节点网络带宽的利用率的实现过程为:

a)计算最近一次间隔时间内平均网络带宽利用率,计算公式如下:

b)计算最近一次间隔时间内平均可提供网络带宽速率,计算公式如下:

平均可提供网络带宽速率=最大可提供网络带宽速率-平均已使用网络带宽速率;

c)估计爬虫节点执行任务期间可提供网络带宽速率,以此作为爬虫节点负载信息,为爬虫节点负载信息汇报器启动时刻记为t0,间隔时间记为t,t0+t时刻记为t1,依次类推,t0+n×t时刻记为tn,(tn-1,tn)时间间隔内的平均网络带宽速率记为rn(n≥1),rn可以由步骤(a)到步骤(c)得到,任务完成时刻记为tf,(tn,tf)时间内的平均网络带宽速率记为Rn,则Rn的预估公式如下:

>Rn=r1n=1(1-α)Rn-1+αrnn>1,>其中,α∈(0,1);

(3)爬虫节点负载信息汇报器将节点执行任务期间可提供网络带宽速率作为负载信息发送到爬虫集群负载信息收集器,所有机器上的爬虫节点负载信息汇报器均需要定时将负载信息报告给爬虫集群负载信息收集器,时间间隔根据系统规模来确定。

进一步的,所述调度器在获得各个爬虫采集客户端负载信息情况后,构建一个两层结构的资源池对爬虫采集客户端资源进行管理,调度器在调度任务时,以用户为单位来分配资源,具体算法如下所示:

当出现一个空闲爬虫采集客户端时,调度器会将此爬虫采集客户端分配给缺额最大的爬虫用户,系统每隔500毫秒更新一次信息,包括:用户缺额、用户权重、最小共享量、公平共享量;

(1)用户权重计算方法;

默认情况下,用户权重是基于用户等级的,但也可以基于用户所拥有爬虫任务的多少,用户权重的计算方法如下:

根据用户等级计算用户权重:

用户权重=默认用户权重×用户等级

(2)更新用户权重

每个已经有爬虫作业运行的用户权重更新公式:

(3)初始缺额计算

每个用户的初始资源缺额设置为0

(4)更新用户的最小共享量

在每个资源池中,将其拥有的爬虫采集客户端按用户的权重分配给各个用户(由步骤a)完成),分完之后将剩余的爬虫采集客户端按用户的权重和缺额分配给仍需爬虫采集客户端的用户(由步骤b)),如果还有爬虫采集客户端资源剩余,则将这些客户端资源共享给其他用户资源池,具体步骤如下所示:

初始化:当前所有用户资源的最小共享量置零;

重复以下几步,直到资源池剩余资源为零:

计算每个用户的最小共享量

首先计算该用户可获得的共享值:

根据当前资源池中的剩余资源数,调整该共享值:

获取资源数=min{min{剩余资源数,用户尚需资源数与正运行资源数之和-最小共享量},最小资源保证量}

资源剩余量=资源剩余量-获得资源数

如果此轮循环中,资源剩余值未变,即没有资源分给任何作业,则将剩余的资源共享给资源池中所有用户,即,执行b)c)并结束算法;

将资源池中的用户按权重和缺额排序;

按顺序依次计算每个用户的最小资源共享量

首先计算该作业可获得的共享值:

根据当前资源池中的剩余资源数,调整该共享值:

获取资源数=min{min{剩余资源数,用户尚需资源数与正运行资源数之和-最小共享量},最小资源保证量}

资源剩余量=资源剩余量-用户获得资源数

需要注意的是,当执行完b)、c)后,资源剩余量可能仍大于0,这时候会将剩余的资源剩余量共享给其他用户资源池;

(5)更新公平共享量

具体步骤如下所示:

初始化:当前所有用户的公平共享量置零;资源剩余量为系统中空闲的爬虫采集客户端资源;

遍历系统活动用户集合中的所有用户,计算每个用户的公平共享量:

如果作业的最小共享量大于公平共享量,则将最小共享量作为公平共享量赋值给用户,同时将此用户从活动用户集合中删除;

将剩下的爬虫采集客户端资源按权重比例赋给活动用户集合中剩余的用户:

将公平共享量赋值给用户;

(6)更新缺额

用户资源缺额=用户资源缺额+(公平共享量-活动用户数)×两次信息更新的时间间隔;

(7)资源分配

当系统中产生一个空闲爬虫采集客户端资源时,将此资源分配给缺额最大的用户。

本发明的有益效果:本发明针对现有的爬虫解决方案遇到诸如资源利用率低、开发爬虫系统成本高及效率低等问题,提出了新的一种基于志愿者计算的多租户专业云爬虫解决方案,本发明的优点包括:

1)利用志愿者计算方式提高用户闲置资源的利用率;

通过志愿者计算方式把用户在互联网上闲散的大规模计算资源聚集并作为采集客户端利用起来,从而为构建多租户专业云爬虫对采集客户端计算资源需求较多的难题提供了一种行之有效的解决途径。对于多租户专业云爬虫平台,志愿者计算意味着近乎免费且无限的采集资源;而就志愿者而言,他们可以得到一个免费或者很便宜的互联网信息采集服务。

2)利用云服务的形式向用户提供互联网信息采集服务,不仅提高资源利用率,还节约了用户开发爬虫系统的成本;

本发明把数据处理和数据爬取分离,数据处理端以专有云的形式部署在Hadoop,Spark分布式计算框架之上,具备准实时数据处理、可扩展和可维护等特性;数据采集采用志愿者共享计算资源模式;并用SAAS(软件即服务)的方式向用户提供互联网数据采集服务,用户只要提供爬取的目标站点及需要返回的数据格式等,多租户专业云爬虫就能把用户对应的数据爬取回来;

3)基于用户等级的分布式公平调度器,不仅考虑了资源的公平共享,还考虑了用户信息等因素,提高了资源的利用率及用户采集任务的响应时间;

本发明提出的分布式调度器,利用两级资源池的方式来管理资源,具有支持多用户多任务、资源公平共享(公平共享量由用户等级决定)、保证最小共享量、支持时间片抢占、响应及时等特性;有效的为用户按需提供低成本、高可靠性、规模可伸缩的数据采集资源及服务。

附图说明

下面结合附图和具体实施方式对本发明作进一步详细的说明。

图1是本发明实施例整体架构图;

图2是本发明实施例中数据爬取流程图;

图3是本发明实施例中调度信息收集流程图;

图4是本发明实施例中调度资源管理流程图。

具体实施方式

以下结合附图,对本发明的技术方案作进一步的描述,但本发明并不限于这些实施例。

本发明的爬虫平台采用基于志愿者计算的分布式系统结构,由爬虫服务端、爬虫采集客户端和用户管理客户端组成,整个系统相互配合协同工作,其整体架构见附图1。即本发明由以下几个部分组成:

1、用户管理客户端

用户管理客户端是用户管理的门户,向用户提供WEB接口及RESTAPI服务,用户通过管理门户,定义爬虫任务,提交爬虫任务,设定爬虫参数,查看爬虫运行情况及获取爬取回来的数据。用户向平台提交一个采集任务,到任务调度运行并返回结果如附图2所示,其步骤为:

1)首先用户A通过管理门户提交一个爬虫任务1,管理门户会将爬虫任务1相关信息存储到Mysql数据库表,并将爬虫任务1的种子URL列表和其对应的状态信息存储到Hbase调度表;

2)分布式的读取Hbase调度表里的URL记录和其状态信息,判断读取的URL记录是否要处理,如果不满足设定的要求,本次则不处理,反之跳到3);

3)判断URL记录对应网页内容是否存在及已爬取时间是否符合要求,如果符合要求,则跳到4),反之则跳到5);

4)根据URL记录去Hbase数据存储表获取对应URL记录的站点数据,用当前用户信息、爬虫任务信息和站点数据生成一条用户A爬虫任务1的记录数据,进入数据处理队列;等待6)处理。

5)根据用户信息和爬虫采集客户端负载情况等信息,调度分发对应URL记录到某一爬虫采集客户端去采集,并返回采集来的站点数据,并根据用户信息、爬虫任务信息和站点数据生成一条记录数据,进入数据处理队列,等待6)处理

6)读取数据队列里的记录,并用对应规则解析网页内容、提取外链及数据抽取器的学习,生成对应记录的索引并把原始数据及解析的数据存储到Hbase数据表里。

7)更新Hbase调度表对应URL记录的状态信息。

8)用户可以通过门户站点或RESTAPI服务获取爬取回来的数据;

2、爬虫采集客户端

爬虫采集客户端是由连接在互联网上的各种相对空闲主机组成,最主要的功能就是采集互联网站点数据,爬虫采集客户端一般可以采集两种类型的数据即静态网页数据和动态网页数据(DeepWeb);静态网页数据相对来说比较容易采集,而动态网页数据一般比较难采集,因此这两类数据采集分别用不同的采集引擎实现,从而提高采集效率。静态数据采集引擎用Apache下面的HttpClient实现,动态网页数据一般是通过JavaScript生成的,因此动态网页数据采集引擎必须有能够解析执行JavaScript脚本的功能,目前采用HtmlUnit实现。爬虫采集客户端除了采集数据,还需收集运行主机的网络带宽速率的信息(当前阶段没有考虑CPU、内存等其他负载信息),用于爬虫任务的调度管理。

3、爬虫服务端

爬虫服务端是整个平台的中枢,由分布式调度和分布式处理组成,分别实现爬虫任务的调度和爬取回来的数据处理。将爬虫调度和数据处理部分分离,通过分布式数据存储及分布式消息中间件来进行连接,增强了平台的可扩展性和可维护性。

1)分布式调度;

分布式调度是整个平台的控制中心,主要实现爬虫任务的调度、爬虫采集客户端资源的管理及接收爬虫采集客户端返回来的数据。为了高效的调度爬虫任务,调度器需要收集各种信息作为调度分发的依据,调度器整个信息收集如附图3所示,爬虫节点负载信息汇报器收集爬虫采集客户端的负载信息,并将负载信息定期发送给爬虫集群负载信息收集器。调度器在负载均衡的过程中通过爬虫集群负载信息收集器获得所有爬虫采集客户端的负载信息,并根据用户信息汇报器和爬虫任务汇报器做出负载均衡决策。

爬虫节点负载信息收集部分的主要步骤包括:

(1)爬虫节点负载信息汇报器到爬虫集群负载信息收集器注册;

爬虫节点负载信息汇报器发送节点的IP和主机名到爬虫集群负载信息收集器,爬虫集群负载信息收集器对爬虫节点的IP进行注册,创建该爬虫节点负载信息对象。该爬虫节点负载信息汇报器发送的负载信息都将存在该对象中。

(2)爬虫节点负载信息汇报器获得爬虫节点网络带宽的利用率,具体流程如下;

a)计算最近一次间隔时间内平均网络带宽利用率;

例如,在Linux操作系统下获取网络带宽利用率的相关信息的方法为:cat/proc/net/dev(从/proc文件系统获取网络使用情况)。该过程每隔一段时间执行一次,时间间隔根据系统规模来确定,设置较大的时间间隔能减少网络通信量,减轻爬虫集群负载信息收集器和爬虫节点负载信息汇报器的工作频率,反之能获得更多的平均已使用网络带宽速率,可以更精确的估计爬虫节点执行任务期间平均可提供网络带宽速率。最近一次间隔时间内平均已使用网络带宽速率的计算公式如下:

b)计算最近一次间隔时间内平均可提供网络带宽速率,公式如下:

平均可提供网络带宽速率=最大可提供网络带宽速率-平均已使用网络带宽速率

c)估计爬虫节点执行任务期间可提供网络带宽速率,以此作为爬虫节点负载信息。

为爬虫节点负载信息汇报器启动时刻记为t0,间隔时间记为t,t0+t时刻记为t1,依次类推,t0+n×t时刻记为tn。(tn-1,tn)时间间隔内的平均网络带宽速率记为rn(n≥1),rn可以由步骤(a)到步骤(c)得到。任务完成时刻记为tf。(tn,tf)时间内的平均网络带宽速率记为Rn,则Rn的预估公式如下:

>Rn=r1n=1(1-α)Rn-1+αrnn>1>

其中,α∈(0,1)。α越接近0表示网络带宽速率的历史情况对任务执行期间网络带宽速率影响越大,α越接近1表示最近的网络带宽速率对任务执行期间网络带宽速度影响越大。具体的α值,可以根据系统规模进行调优。

(3)爬虫节点负载信息汇报器将节点执行任务期间可提供网络带宽速率作为负载信息发送到爬虫集群负载信息收集器。

所有机器上的爬虫节点负载信息汇报器均需要定时将负载信息报告给爬虫集群负载信息收集器。时间间隔根据系统规模来确定。设置较大的时间间隔能减少网络通信量,减轻爬虫集群负载信息收集器和爬虫节点负载信息汇报器的工作频率,反之,能获得更精确的爬虫各节点负载信息。

爬虫调度器在获得各个爬虫采集客户端负载信息情况后,构建一个两层结构的资源池对爬虫采集客户端资源进行管理,流程如附图4所示,爬虫调度器在调度任务时,是以用户为单位来分配资源的,具体算法如下所示:

当出现一个空闲爬虫采集客户端时,公平调度器会将此爬虫采集客户端分配给缺额最大的爬虫用户。系统每隔500毫秒更新一次信息(有一个专门的更新线程对用户信息进行更新),包括:用户缺额(用户的其他属性,如用户权重、最小共享量、公平共享量等,均是为计算缺额服务的)、用户权重、最小共享量、公平共享量等。

(1)用户权重计算方法;

a)默认情况下,权重是基于用户等级的,但也可以基于用户所拥有爬虫任务的多少,权重的计算方法如下:

b)根据用户等级计算用户权重:

用户权重=默认用户权重×用户等级

(注:后面的用户权重为系统默认的用户权重,一般为1;前面的用户权重是根据用户等级计算出来的用户权重)

(2)更新用户权重

每个已经有爬虫作业运行的用户权重更新公式:

注:资源池权重一般由系统设定,默认为1;后面的用户权重为更新前权重,前面的用户权重为更新后的权重

(3)初始缺额计算

每个用户的初始资源缺额设置为0。

(4)更新用户的最小共享量

在每个资源池中,将其拥有的爬虫采集客户端按用户的权重分配给各个用户(由步骤a)完成),分完之后将剩余的爬虫采集客户端按用户的权重和缺额分配给仍需爬虫采集客户端的用户(由步骤b)),如果还有爬虫采集客户端资源剩余,则将这些客户端资源共享给其他用户资源池。具体步骤如下所示:

初始化:当前所有用户资源的最小共享量置零;

重复以下几步,直到资源池剩余资源为零:

a)计算每个用户的最小共享量

首先计算该用户可获得的共享值:

根据当前资源池中的剩余资源数,调整该共享值:

获取资源数=min{min{剩余资源数,用户尚需资源数与正运行资源数之和-最小共享量},最小资源保证量}

资源剩余量=资源剩余量-获得资源数

如果此轮循环中,资源剩余值未变,即没有资源分给任何作业,则将剩余的资源共享给资源池中所有用户,即,执行b)c)并结束算法:

b)将资源池中的用户按权重和缺额排序

c)按顺序依次计算每个用户的最小资源共享量

首先计算该作业可获得的共享值:

根据当前资源池中的剩余资源数,调整该共享值:

获取资源数=min{min{剩余资源数,用户尚需资源数与正运行资源数之和-最小共享量},最小资源保证量}

资源剩余量=资源剩余量-用户获得资源数

需要注意的是,当执行完b)、c)后,资源剩余量可能仍大于0,这时候会将剩余的资源剩余量共享给其他用户资源池。

(5)更新公平共享量

主要思想:基于用户权重和最小共享量计算公平共享量。首先,根据权重分配可用爬虫采集客户端资源数,如果用户的最小共享量大于公平共享量,先要满足最小共享量,更新可用爬虫采集客户端数,重复以上步骤,直到所有用户的最小共享量小于或等于公平共享量,这样,每个用户的最小共享量都得到了满足,最后,所有用户平分剩下的爬虫采集客户端数。

算法实现:

初始化:当前所有用户的公平共享量置零;资源剩余量为系统中空闲的爬虫采集客户端资源;

a)遍历系统活动用户集合中的所有用户,计算每个用户的公平共享量:

如果作业的最小共享量大于公平共享量,则将最小共享量作为公平共享量赋值给用户。同时将此用户从活动用户集合中删除。

b)将剩下的爬虫采集客户端资源按权重比例赋给活动用户集合中剩余的用户:

将公平共享量赋值给用户。

(6)更新缺额

用户资源缺额=用户资源缺额+(公平共享量-活动用户数)×两次信息更新的时间间隔

(7)资源分配

当系统中产生一个空闲爬虫采集客户端资源时,将此资源分配给缺额最大的用户。

2)分布式处理;

分布式调度器接收到爬虫采集客户端返回的数据后,立即将数据进入分布式消息队列,分布式数据处理器实时的去消费消息队列里面的数据,以流式的方式处理数据。网页数据的处理分为两种情况,一种是通用的数据处理方法,一种是根据用户配置的模板来处理数据;通用方法利用基于特征模型的自学习文本数据挖掘技术进行数据的提取和分析,基于用户模板的方法会根据模板定义的规则去提取数据;数据处理完成后,生成对应数据的索引,更新对应的URL记录状态,并存储数据到Hbase数据表里,同时将生成的外链插入到Hbase调度表里,等待调度分发、爬取和处理。

本发明未详细阐述部分属于本领域公知技术。

本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号