中企动力 > 商学院 > 数据采集服务
  • ?

    APP数据采集是怎么实现的

    史博

    展开

    最近半年,我们八爪鱼陆续接到好几个APP数据采集的项目需求,我在群里面,偶尔也看到有些用户在问,有没有APP数据采集的工具。鉴于我们做过的几个APP数据采集项目的经验,我可以告诉大家,现在APP数据采集,市面上还没有通用的工具。我们八爪鱼内部是有一套工具,但由于使用的难度较高,需要编写脚本,所以不对普通用户公开,我们仅接受项目定制。

    虽然不对外公开,但并不妨碍我们将技术分享出来,APP数据采集,一般走以下两种方式:

    1.两种思路

    1. 抓包

    2. HOOK

    2.抓包

    有代码经验或APP开发的同学都很容易理解,其实很多APP,走的都是webservice通讯协议的方式,并且由于是公开数据,而且大部分是无加密的。所以只要对网络端口进行监测,对APP进行模拟操作,即可知道APP里面的数据是如何获取的。

    我们只需要写代码模拟请求,无论POST还是GET,即可得到该请求所返回的信息。再通过对返回的信息结构化解析,即可得到我们想要的数据。

    public static void main(String[] args) {

    Spider.create(new GithubRepoPageProcessor())

    //从https://github/****开始抓

    .addUrl("https://github/****")

    //设置Scheduler,使用Redis来管理URL队列

    .setScheduler(new RedisScheduler("localhost"))

    //设置Pipeline,将结果以json方式保存到文件

    .addPipeline(new JsonFilePipeline("D:\\data\\webmagic"))

    //开启5个线程同时执行

    .thread(5)

    //启动爬虫

    .run();

    }

    以模拟采集“meizu”应用市场为例

    应用市场产品

    抓包返回参数

    整个抓包过程

    3.HOOK技术

    HOOK技术是一种走操作系统内核的技术,由于安卓系统是开源的,所以可以借助一些框架修改内核,从而实现你要的功能。HOOK的形式,我们走的是Xposed框架。Xposed是一款可以在不修改任何其他开发者开发的应用(包括系统服务)的情况下,改变程序运行的一个开源框架服务。基于它可以制作出许多功能强大的模块,以此来达到应用程序按照你的意愿运行的目的。

    如果把安卓手机看做一座城堡,那Xposed可以让你拥有一个上帝视角,城里的运作细节尽收你眼底,还能让你插一手改变城堡的运作规律。

    什么意思呢?简单的说就是你可以通过他,自动化的控制你的APP。如果将我们的APP开在模拟器上,我们可以通过编码,通过他告诉APP这一步干什么,下一步干什么。你把它理解成类似游戏打怪外挂就可以了。

    而他每走一步,APP与服务端交互的数据,均可获取下来。这种方式广泛用于一些成熟的APP。比如某信采集。

    public class HookActivity implements IXposedHookLoadPackage {

    @Override

    public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {

    final String packageName = lpparam.packageName;

    XposedBridge.log("--------------------: " + packageName);

    try {

    XposedBridge.hookAllMethods

    (Activity.class, "onCreate", new XC_MethodHook() {

    @Override

    protected void afterHookedMethod(MethodHookParam param)

    throws Throwable {

    XposedBridge.log("=== Activity onCreate: " + param.thisObject);

    }

    });

    } catch (Throwable error) {

    XposedBridge.log("xxxxxxxxxxxx: " + error);

    }

    }

    }

    其实我们八爪鱼曾经也想开发一款通用的APP数据采集工具,并且两年前在这块投入研究了小半年,我们做出了一款APP采集脚本编辑工具,可以让一款APP的数据采集项目缩减到3-5天即可开发完成。但我们认为,这个工具需要编写脚本一般用户是比较难上手的,所以仅作为内部项目使用。

    以HOOK某APP为例:

    HOOK指令打开某

    4.这些年走过的坑

    聊完APP采集的思路,我们跟大家分享一些遇过的坑吧,让大家乐一乐

    坑一:签名算法

    以某信的文章列表页及某信息页为例,对其http访问进行抓包,会发现其url的一个核心参数是我们无法知道如何生成的,这就导致,我们不可能直接用该url进行信息爬取;签名算法如果无法破解,HTTP这条路就是死路了。

    坑二:http爬取回来的信息和页面显示不一致

    以某信的某信息页为例,对比直接访问某信页面及http爬取的信息,可明显发现http爬取到的信息较少。造成得两种方式都用,才能既照顾速度又照顾完整性。

    坑三:模拟器中的坑

    APP自动识别你的运行环境进行屏蔽,最厉害的还是某信,连你是用模拟器打开还是真机打开,是什么内核的,全部进行限制。曾经见过牛人,找某手机厂商专门定做真机来配合。

    坑四:帐号的坑

    这个坑就有点大了,要找号、养号,都不是件容易的事情,更惨的是封号,真真让你一夜回到解放前。

  • ?

    三大核心解读大数据信息采集

    柳怀莲

    展开

    对于大数据的理解

    大多人还停留在很大的数据这一概念上

    其实不然

    大数据指的是存在于网络上的海量的信息碎片

    通过类似云速数据挖掘这种先进的技术将其采集、整合、

    从而发现隐藏于其中的关联信息

    下面通过三个核心来解读什么是大数据信息采集

    一、大数据营销是将所有营销行为和销售行为数据化

    将这些可挖掘、整理的数据作为营销活动的核心部分

    贴合需求打造符合市场及消费需求的商业模式、

    二、大数据信息采集实现线上线下结合的网络营销时代

    线上的营销活动不受时间空间限制

    将线上数据与传统模式结合起来

    打通数据库实现技术共享

    将是未来营销工作的首要重点

    三、大数据信息采集实现企业高效转化

    大数据营销的核心意在大规模的个性化互动

    指的是有针对性的传播内容

    更加人性化的服务

    而实现这以核心的基础就是大数据信息采集

  • ?

    省安监总局安全数据采集管理中心解决方案

    花黎

    展开

    第一部分系统目标

    省安全生产监督管理局安全数据采集管理中心的总体建设目标,就是建设一个对安监网安全巡查的数据进行统一采集、存储、管理的中心平台,实现能够使县市乃至省级安监局相关单位在安监专网网络范围内通过此系统将安全巡查过程中智能安全帽所记录巡查的各类数据(视频、音频和照片)上传到系统平台,进行统一存储管理,便于各县市省级单位同事及领导登录系统后,对上传的各类数据(视频、音频和相片)进行检索、查看、浏览、下载,满足对安监网巡查工作更细致的情况追踪和监控,实现更高效的业务转化。

    系统主要特点

    1、拥有自主研发的智能安全帽,使用该安全帽可实现在巡查工作过程中的全自动巡查记录或重点记录,在不影响巡查工作的各项操作下,实现静默且稳定的图像资料记录和保存,实现巡查工作的忠实记录和保存,以便于巡查工作更好的保存和追踪。

    2、拥有自主研发的智能安全帽数据采集柜,具备智能的门锁技术,实现安全帽和储存柜的互相绑定,安全帽配合采集柜实现设备保存、设备充电、设备数据自动采集三合一功能,大大简化使用流程和提升使用便利性。

    3、采集柜本机具备超大容量存储空间的同时,可实现手动或自动上传备份数据或者传输数据至制定数据位置,实现数据的分布存储或集中存储的不同需求。可根据条件设置自动化执行任务,实现自动定时或针对性备份或传输特定数据,同时不同数据支持互相迁移。

    4、灵活多样、满足多途径的数据检索、统计和再利用能力,通过通用浏览器即可方便访问数据管理平台,实现远程的数据检索、预览、下载或备份。

    5、完善的日志管理和追踪功能,用户在系统中的各项操作均会生成日志记录,方便层层溯源追踪把控。

    6、完善的用户层级和权限管理,上百项细致入微的用户自定义权限内容,精确把控不同用户可在系统中获取的数据及操作权限,方便不同的使用和管理需求。

    7、支持网状模型连接扩展,可无限扩展架构层级,无损添加新节点,满足不断扩张成长的业务需求。

    通过该系统平台的建设,帮助省安监局各地单位建立远程的巡查数据管理入口,实现巡查业务更加精确高效安全的同时,将各地区的数据区块汇总接入,最终建立起属于省安监局单位独有的云端巡查数据管理中心。

    第二部分系统逻辑结构

    该方案可分为两种形成,每种形式各有优势和缺点,可以根据实际的需求情况,采用不同的搭建形式,满足不同的建设目标。、

    一、分布存储独立架构

    该架构下系统包含:一级应用服务器一台运行数据管理中心平台软件;一级数据服务器一台用于备份特殊重要数据满足少量独立存储需求;二级分布式数据采集柜多台。

    通过多台数据采集柜互联构成采集柜网状结构,经由网络统一直接连接到一级应用服务器托管,实现应用服务器对所有网络内的数据采集柜的远程连接、访问和管理,同时一级数据服务器接入应用服务器,作为数据管理平台的备份数据存储中心,常规数据全部储存在区块中各自独立的数据采集柜内,网络内电脑通过浏览器开启数据管理中心后台登陆,即可实现远程的数据访问与管理,并根据应用服务器内的权限层级设定,实现不同的功能和效果。

    结构拓扑图见(图1)

    优点:

    该模式下搭建平台更为简单快速,由于单层结构设计,可以大大免去网络层级的部署和规划,同时简化接入流程,提供快速更高效的平台建设和数据传输流程。数据采集柜接入网络,连接应用服务器即可实现托管。建设简单,相对建设成本较低,满足快速搭建小型网络平台或初期建立平台雏形,后续可方便的升级变换架构,升级成中心存储集群式。

    缺点:

    由于采用较为简单的单层结构,数据全部分布存储于数据采集柜,数据存储较为分散,访问并管理的效率较低,同时由于分布存储的原因,只安排了较小的数据服务器满足低比例的特殊备份需求,大量数据分散存储于不同地区采集柜中,数据产生丢失或者无法访问的风险较高,需要稳定的供电和网络维持基本的连接。同时分布式存储导致的数据访问并发情况较多,对网络的承载压力较大,传输链路较多跳转,导致效率较低。

    二、中心存储集群架构

    该架构下系统包含:一级应用服务器一台运行数据管理中心平台软件;一级数据服务器多台或多级数据服务器多台用于备份特定区块数据满足集群数据存储需求;二级分布式数据采集柜多台。

    通过多台数据采集柜互联构成采集柜网状结构,经由网络连接到区块内独立数据服务器,区块设立可依据地区或者业务规划来定,多区块数据服务器最终通过网络统一连接中心应用服务器,实现应用服务器对所有网络内的数据采集柜和数据服务器都能实现远程连接、访问和管理,设定不同的权限层级可满足区块内数据访问的相对独立和区块间的数据仍能通信的需求,同时通过中心应用服务器设定自动化自定义条件任务,自动执行数据从数据采集柜汇总备份到区块数据服务器进行多层级分布式存储,最终实现数据的多重安全备份,高效汇总和自动化的分配目标。

    结构拓扑图见(图2)

    优点:

    该架构下搭建而成的平台具备多区块分布存储备份,数据永不丢失,安全可靠,同时基于分布式存储技术接入网络后可实现更高效的可访问性和更稳定的数据传输。基于自动化的自定义任务可以在网络闲时自动静默汇总分散于采集柜中的零散数据集中传输至区块内的专用数据服务器进行存储,同时借由数据服务器的高速处理能力,实现更高效的远程访问、预览、下载、传输及检索操作。架构内采集工作、数据存储、中心访问分工明确,互不干扰运行更加稳定,同时可方便的无限拓展数据服务器数量,满足长远的平台成长需求。

    缺点:

    该方案搭建需要配合规划区块,搭建相对独立的数据服务器,同时由于多层级的架构加大了初期建设的工程难度和成本,基于分布式存储的形态需要安排更多的服务器安装空间。

    第三部分系统运行环境

    系统分为采集端CS程序和浏览器BS管理程序两部分。

    系统采集程序运行在windows环境下,支持各种版本的windows系统,数据库支持SQL Server系列的数据库或其它版本的关系型数据库。

    对安全帽采集数据的管理后台使用浏览器,支持目前主流的各种版本的浏览器。

    第四部分产品介绍

    智能安全帽

    l高清宽动态摄像头,支持高清录像

    l开机自动录像,免去繁琐操作

    l机身一体化设计,镜头及照明灯内置,产品更美观

    l高强度复合材料帽身,提供专业的安全帽应有的防护功能

    l简约的功能操作设计,一键开机,一键录像,一键亮灯

    l支持大容量最高128GB存储扩展,满足更持久的录像需求

    数据采集柜

    l高强度框架式机身,抗冲击防腐蚀外壳

    l安全内部排布设计,满足长时间连续稳定运行需求

    l内置键盘鼠标,屏幕支持触摸,多种操作方面满足不同场景需求

    l多设备独立存储仓设计,方便单独存储安全帽以及其他装备。

    l智能电子独立门锁设计,可实现独立开启每个存储仓位。

    l支持多设备同时接入,满足大批量安全帽充电需求同时实现自动化数据采集上传

    l支持网络化运行,可单机使用也可接入网络后交由统一服务器托管,实现多台采集柜互联构建采集网络。

    l主柜6口,副柜10口,最多一主两副一共26口,但实际可用最多22口。

    数据管理平台(服务器)

    lBS轻量化设计架构,通用浏览器即可访问,满足更好的兼容性

    l支持多条件数据检索,满足快速书筛选需求

    l支持多层级网络架构,实现不同的平台建设需求

    l支持用户权限管理,根据实际需求定义用户不同权限实现不同管控

    l远程预览,远程下载,可通过网络随时访问数据并进行管理

    l高度自定义的自动化任务系统,设定周期,时间,人员,单位等条件实现自动化数据备份操作。

    第五部分:产品功能说明

    一、产品示意图

  • ?

    安筱鹏:“数据+模型=服务”成就工业互联网更高平台

    清秋闲

    展开

    工业和信息化部信息化和软件服务业司副司长安筱鹏。王刚 摄

    中新网杭州4月27日电(张煜欢 楼子璇)“工业互联网平台是建设现代产业体系的支撑,建设制造强国和网络强国的焊接点,是中国经济实现高质量发展的重要举措,也是全新一轮产业竞争的制高点。”4月26日,“2018中国工业大数据大会·钱塘峰会暨浙江省工业互联网推进大会”在浙江杭州召开。工业和信息化部信息化和软件服务业司副司长安筱鹏在会上表示,工业互联网对未来工业发展会产生全方位、深层次、革命性影响。

    2017年11月,国家发布了《关于深化“互联网+先进制造业”发展工业互联网的指导意见》,安筱鹏从中归纳出工业互联网平台建设的出发点。“工业互联网作为新一代信息技术与制造业深度融合的产物,日益成为新工业革命的关键支撑和深化‘互联网+先进制造业’的重要基石。面对制造业的数字化、网络化、智能化需求,它的构建基于云平台的数据采集、汇聚、分析服务体系。”

    对于工业互联网发展的特性,安筱鹏首先抛出疑问:“我们现在谈论的工业互联网平台,和之前传统的消费互联网融合相比什么变了?”

    对此,安筱鹏根据自己的体会给出了答案,“不同于消费互联网,工业互联网连接的是各种数字化水平、智能化水平参差不齐的设备,要求实时、安全、可靠。工业互联网不仅仅强调创新,而且强调与已有资源的继承,它是继承和创新、线上线下的协同。”

    工业互联网平台的搭建任务艰巨,工作量庞大,在安筱鹏看来,找准平台建设的切入口,是所有工作开展的“重头戏”。

    2018中国工业大数据大会·钱塘峰会暨浙江省工业互联网推进大会。张勇 摄

    “工业互联网基于工业云的解决方案需通过数据采集、汇集、分析、描述、诊断、预测、决策等流程,解决过去面临的制造业数字化、网络化、智能化难题,目标是提高智能的生产效益。”安筱鹏说。

    基于此背景,安筱鹏归纳出工业互联网最重要的特征——“数据+模型=服务”。“无论是两化融合、智能制造,还是工业互联网平台,都在考虑如何通过‘数据+模型’优化资源配置效率,提供更为优质的服务,并最终把正确的数据以正确的方式,在正确的时间传递给正确的人和机器,以优化制造资源配置效率。”

    大数据赋能工业制造已然成为时代所趋。“下一步,我们将打造跨行业、跨领域工业互联网平台和企业级工业互联网平台,建立基础共性工业APP资源池、行业通用工业APP资源池和企业专用工业互联网APP,并开展四类验证测试工作,完善四大公共支撑体系。”安筱鹏说。(完)

  • ?

    如何在公共网站上收集客户信息?四个客户数据采集工具推荐给你

    雁易

    展开

    销售行业的客户资源非常重要。如果您想尽可能地达成交易,您就需要尽量多的客户资源。当然,优质的客户资源更好。今天教你如何使用工具来找到准确和大量的客户资源。现在有很多人应该知道有很多工具可以在公共网站上收集客户信息。这些工具做得很好,客户资源非常庞大和准确。以下是四个客户数据采集工具。

    现在介绍第一款工具:可采集车主,业主,靓号机主的信息(包括姓名和手机号码),这些都是比较高端的客户群体了。还可采集不同行业的企业的信息,如做广告的,做教育的,做汽车服务的,做美容的,批发的,家政的,婚纱的等等,不同行业的企业信息你都可以采集到 。

    第二款工具:可以根据关键词采集QQ群,然后导出群成员的QQ号。比如你输入交友,股票,软件,化妆品,教育,汽车等等,都可以采集到成千上万个QQ群,里面的群成员QQ号是非常庞大的,这些QQ号导出来同样可以加为QQ好友或微信好友,因为有6成的Q号会绑定微信。

    第三款工具:可采集地图上(百度地图,腾讯地图,高德地图)不同行业实体店的信息,包括手机号和地址等。比如你输入面包店,五金店,母婴店,电脑维修店,美发店,化妆品店等等,都可以搜索到相关的实体店店主的信息,这些信息都是非常有价值的。手机号也可以加为微信好友。

    第四款工具:可采集全国各个地区各个行业的商家信息,比如五金店、酒店、餐厅等183个行业信息,假如你是做酒水批发的,你就可以查本地的ktv、餐厅等需要酒水的商家,可以搜索到商家的联系方式,还能导入通讯录加微信好友很方便,还有图文推广等展示功能。

    有些朋友会问,这些数据采集后可以做些什么?首先,您可以按照自己的方式与客户沟通,并逐一打电话给他们。但现在很多人会通过通讯录加为微信好友。手机号码可以搜索到微信。在添加为微信朋友之后,您将通过朋友圈慢慢地进入市场。小编正在做营销软件开发。如果对这些工具感兴趣,欢迎私信小编,一起交流合作。

  • ?

    福利,数据采集工具和一些云平台推荐

    罗宾

    展开

    目前有很多数据采集云平台,如百度统计,腾讯统计、乐驰云采集等等,还有一些平台也非常不错:

    一. 友盟+

    支持移动端和web端数据采集,个性化场景数据定制采集方案。官网给的一些demo可以参考来设计大数据的分析展现,例如:

    友盟的:

    百度的:

    值得借鉴~

    二. 乐驰云采集

    以高性能分布式采集、存储为核心,建立分工明确的功能模块进行高度协作,融合打码、分词、代理、排重等实用性服务,帮助用户以最低成本、最少人力、最高效率完成大数据应用开发,从而满足当下广大中小企业对“实时、高难、海量”级大数据业务场景的根本需求。

    http://lewell/service.html#tabcon_4

    值得一看

    三. 火车采集器

    火车采集器,一款专业的互联网数据抓取、处理、分析,挖掘软件,可以灵活迅速地抓取网页上散乱分布的数据信息,并通过一系列的分析处理,准确挖掘出所需数据。火车采集器历经十二年的升级更新,积累了大量用户和良好口碑,是目前最受欢迎的网页数据采集软件。

    对于网站采集数据的主流实现方式是通过javascript脚本引入,记录页面动作与变化,搜集数据后作为参数,通过gif图片(gif图片格式请求可以解决跨域问题)请求上报。

    比如一些大型网站,可以看到他们的数据采集方式:如淘宝,百度,京东,聚划算等

    个人设计的web采集数据方案:

    lg.js脚本引入页面中通过gif图片请求到后端服务器服务器记录请求参数到日志文件日志文件实时抓取到消息队列实时计算系统消费队列消息,完成分析整理分析结果入ES,kibana二次开发展示ES历史数据入Hadoop

  • ?

    企业进入大数据信息采集时代

    错误

    展开

    做网络营销

    不论是个人还是公司都想要实现产品的渠道拓展和推广宣传

    但绝大多数的企业都不能达成想要的效果

    其实原因有很多

    一、想要做好网络营销

    客户是王道

    没有强大的客户群做后盾

    网络营销的销量不过是空想罢了

    当下客户渠道大多以网络大数据信息采集的方式来获取

    如云速数据挖掘

    通过输入行业关键字

    就能一键采集指定区域的客户信息和联系方式

    省时高效

    二、通过客户信息

    从分考虑分析目标群体的生活轨迹和习惯

    来预测客户下一步的消费行为

    以正确的时间正确的方式传达产品信息

    从而完成营销活动

    三、产品文案的策划一定要以客户需求为重点

    并且简单易懂、快速吸引客户眼球

    才能使转化率达到最佳

  • ?

    携程用户数据采集与分析系统

    小霜

    展开

    一、携程实时用户数据采集系统设计实践

    随着移动互联网的兴起,特别是近年来,智能手机、pad等移动设备凭借便捷、高效的特点风靡全球,同时各类APP的快速发展进一步降低了移动互联网的接入门槛,越来越多的网民开始从传统PC转移至移动终端上。但传统的基于PC网站和访问日志的用户数据采集系统已经无法满足实时分析用户行为、实时统计流量属性和基于位置服务(LBS)等方面的需求。

    我们针对传统用户数据采集系统在实时性、吞吐量、终端覆盖率等方面的不足,分析了在移动互联网流量剧增的背景下,用户数据采集系统的需求,研究在多种访问终端和多种网络类型的场景下,用户数据实时、高效采集的方法,并在此基础上设计和实现实时、有序和健壮的用户数据采集系统。此系统基于Java NIO网络通信框架(Netty)和分布式消息队列(Kafka)存储框架实现,其具有实时性、高吞吐、通用性好等优点。

    1、技术选型和设计方案:

    一个典型的数据采集分析统计平台,对数据的处理,主要由如下五个步骤组成:

    图1、数据平台处理流程

    其中,数据采集步骤是最核心的问题,数据采集是否丰富、准确和实时,都直接影响整个数据分析平台的应用的效果。本论文关注的步骤主要在数据采集、数据传输和数据建模存储这三部分。

    为满足数据采集服务实时、高效性、高吞吐量和安全性等方面的要求,同时能借鉴互联网大数据行业一些优秀开源的解决方案,所以整个系统都将基于Java技术栈进行设计和实现。整个数据采集分析平台系统架构如下图所示:

    图2(数据采集分析平台系统架构)

    其中整个平台系统主要包括以上五部分:客户端数据采集SDK以Http(s)/Tcp/Udp协议根据不同的网络环境按一定策略将数据发送到Mechanic(UBT-Collector)服务器。服务器对采集的数据进行一系列处理之后将数据异步写入Hermes(Kafka)分布式消息队列系统。为了关联业务服务端用户业务操作埋点、日志,业务服务器需要获取由客户端SDK统一生成的用户标识(C-GUID),然后业务服务器将用户业务操作埋点、日志信息以异步方式写入Hermes(Kafka)队列。最后数据消费分析平台,都从Hermes(Kafka)中消费采集数据,进行数据实时或者离线分析。其中Mechanic(UBT-Collector)系统还包括对采集数据和自身系统的监控,这些监控信息先写入Hbase集群,然后通过Dashboard界面进行实时监控。

    (1)基于NIO的Netty网络框架方案

    要满足前面提到的高吞吐、高并发和多协议支持等方面的要求。我们调研了几种开源异步IO网络服务组件(如Netty、MINI、xSocket),用它们和NginxWeb服务器进行了性能对比,决定采用Netty作为采集服务网络组件。下面对它进行一些概要介绍:Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。

    图3(Netty框架内部组件逻辑结构)

    Netty的优点有:

    a、功能丰富,内置了多种数据编解码功能、支持多种网络协议。

    b、高性能,通过与其它主流NIO网络框架对比,它的综合性能最佳。

    c、可扩展性好,可通过它提供的ChannelHandler组件对网络通信方面进行灵活扩展。

    d、易用性,API使用简单。

    e、经过了许多商业应用的考验,在互联网、网络游戏、大数据、电信软件等众多行业得到成功商用。

    Netty采用了典型的三层网络架构进行设计,逻辑架构图如下:

    图4(Netty三层网络逻辑架构)

    第一层:Reactor通信调度层。该层的主要职责就是监听网络的连接和读写操作,负责将网络层的数据读取到内存缓冲区中,然后触发各种网络事件,例如连接创建、连接激活、读事件、写事件等,将这些事件触发到Pipeline中,再由Pipeline充当的职责链来进行后续的处理。

    第二层:职责链Pipeline层。负责事件在职责链中有序的向前(后)传播,同时负责动态的编排职责链。Pipeline可以选择监听和处理自己关心的事件。

    第三层:业务逻辑处理层,一般可分为两类:a. 纯粹的业务逻辑处理,例如日志、订单处理。b. 应用层协议管理,例如HTTP(S)协议、FTP协议等。

    我们都知道影响网络服务通信性能的主要因素有:网络I/O模型、线程(进程)调度模型和数据序列化方式。

    在网络I/O模型方面,Netty采用基于非阻塞I/O的实现,底层依赖的是JDKNIO框架的Selector。

    在线程调度模型方面,Netty采用Reactor线程模型。常用的Reactor线程模型有三种,分别是:

    a、Reactor单线程模型:Reactor单线程模型,指的是所有的I/O操作都在同一个NIO线程上面完成。对于一些小容量应用场景,可以使用单线程模型。

    b、Reactor多线程模型:Rector多线程模型与单线程模型最大的区别就是有一组NIO线程处理I/O操作。主要用于高并发、大业务量场景。

    c、主从Reactor多线程模型:主从Reactor线程模型的特点是服务端用于接收客户端连接的不再是一个单独的NIO线程,而是一个独立的NIO线程池。利用主从NIO线程模型,可以解决一个服务端监听线程无法有效处理所有客户端连接的性能不足问题。Netty线程模型并非固定不变的,它可以支持三种Reactor线程模型。

    在数据序列化方面,影响序列化性能的主要因素有:

    a、序列化后的码流大小(网络带宽占用)。

    b、序列化和反序列化操作的性能(CPU资源占用)。

    c、并发调用时的性能表现:稳定性、线性增长等。

    Netty默认提供了对GoogleProtobuf二进制序列化框架的支持,但通过扩展Netty的编解码接口,可以实现其它的高性能序列化框架,例如Avro、Thrift的压缩二进制编解码框架。

    通过对Netty网络框架的分析研究以及对比测试(见后面的可行性分析测试报告)可判断,基于Netty的数据采集方案能解决高数据吞吐量和数据实时收集的难点。

    》》点击阅读全文

数据采集服务

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP