大数据知识图谱实战经验总结
作为数据科学家,我想把行业新的知识图谱总结并分享给技术专家们,让大数据知识真正转化为互联网生产力!大数据人工智能、云计算、物联网、区块链等技术日益融合,成为全球最热的战略性技术,给大数据从业者带来了前所未有的发展机遇,同时也对大数据工程师提出了高标准的技能要求。大数据具有海量性、多样性、高速性和易变性等特点,映射到大数据平台建设要求,不仅要具备海量数据采集、并行存储、灵活转发、高效调用和智能分析的通用Paas服务能力,而且能快速孵化出各种新型的Saas应用的能力。
要实现这个目标,架构设计至少要满足三个总体技术要求:
1.一是把分布式大数据平台的基础数据服务能力建设摆在首位。规划出支撑PB级规模数据运营能力的云平台架构,运用经典设计原则和设计模式的架构之美,吸纳业内主流分布式技术的思想精髓,深耕主流平台服务模式到现代微架构的演变内涵;
2.二是用系统架构设计和微服务建设思想武装团队,持续撰写多维度的架构蓝图,推动团队协同作战;
3.三是围绕大数据全栈技术体系解决项目实战中的各类难题,制定主流技术规范和设计标准,通过平台核心组件方式快速迭代出新型业务。从设计要求来讲,大数据平台服务的整体设计要具备全面、全局、权衡的关键技术要求,不仅能全面提炼国内外优秀架构和解决方案的精华,而且要理解分布式技术的底层设计思想;不仅能全局了解上下游技术生态和业务结合的设计过程,而且要游刃有余的处理系统功能和性能问题;不仅能权衡新技术引入和改造旧系统的成本估算,而且要推动作战团队轻松驾驭新技术。
第一个总体技术要求:把分布式大数据平台的基础数据服务能力建设摆在首位。规划出支撑PB级规模数据运营能力的创新云平台架构,运用经典设计原则和设计模式的架构之美,吸纳业内主流分布式技术的思想精髓,深耕主流平台服务模式到现代微架构的演变内涵。
第二个总体技术要求:用系统架构设计和微服务建设思想武装团队,持续撰写多维度的架构蓝图,推动团队协同作战。架构师不仅要具备大型云平台架构的实战经验之外,更要有大智慧和战略思维,通过蓝图来推动和管理好每一个产品的全生命周期。
第三个总体技术要求:围绕大数据全栈技术体系解决项目实战中的各类难题,制定主流技术规范和设计标准,通过平台核心组件方式快速迭代出新型业务。针对设计规范的重要性,我
们不妨用《孙子兵法》的大智慧来分析一下。
从系统整体技术能力出发,提出物联网大数据平台的八个通用微服务的技术要求,包括大数据的高并发采集服务、灵活分发服务、高可扩展海量存储服务、高并发展海量存储服务、高可靠海量存储服务、自定义迁移服务、基于机器学习的智能分析服务和基于Spark生态的实时计算服务,具体如下:
高并发采集服务:
支持多种移动终端和物联网数据的可扩展接入,并具备大规模接入并发处理能力。能够兼容主流行业通用的可扩展协议和规范,并采用高可靠的集或者负载均衡技术框架来解决。如引入Mina或者Netty技术框架后适配各种多种移动终端接入。标准化接入要求常用的字节流、文件、Json等数据格式符合主流标准格式。
restful接口设计灵活分发服务:
按照分析应用需求,转发不同的数据类型和数据格式,交互方式之一是主流的消息中间件MQ或者Kafka,保证高效的转发并转换数据给数据服务运营方。交互的方式之二是Restful
方式,保证数据可以按照协议规范进行安全可靠的数据转发和传输。
高可扩展海量存储服务:
支持数据类型和数据表可扩展,对物联网大数据进行海量存储和计算,尤其适用于初创公司研发百万级用户之内的大数据平台。
高可并发海量存储服务:
支持数据类型和数据量的高速增长,对物联网大数据进行批处理,适合构建PB级数据量和千万级用户量的云平台。
高可靠海量存储服务:
支持物联网多源异构数据的统一高效和海量存储,并提供易于扩展的行业数据的离线计算和批处理架构,适合构建ZB级数据量和亿级用户量的分布式大平台。
基于Spark生态的实时计算服务:
支持对物联网大数据智能分析能力,通过企业级中间件服务框架提供安全可靠接口,实现数据实时统计和计算。
基于机器学习的智能分析服务:
支持安全高效的机器学习算法,通过支持分布式分类、聚类、关联规则等算法,为用户和物联网机构提供个性化的智能分析服务。
自定义迁移服务:
支持对物联网大数据的整体迁移和同步,通过数据转换和数据迁移工具对不同数据类型和数据格式进行整体迁移,实现数据集的自定义生成。 
01高并发采集微服务
面对千倍用户量和万倍数据量的增长速度,如何保证物联网大数据在比较快的时间内进入平台?应对用户量的增长,如何在规定的时间内完成采集?在硬件设备处理能力之外,让数据更快的汇聚到平台是核心需求。具体考虑如下:
满足采集来自不同的厂家、移动设备类型、传输协议的行业数据的需求。我们在接口设计中完全可以针对不同设备和传输协议来设计,就是借用“分而治之”的用兵之道,“分而治之” 就是把一个复杂的算法问题按一定的“分解”方法分为等价的规模较小的若干部分,然后逐个解决,分别出各部分的解,把各部分的解组成整个问题的解,这种朴素的思想也完全适合于技术设计,软件的体系结构设计、模块化设计都是分而治之的具体表现。其中策略模式就是这个思想的集中体现。策略模式定义了一个公共接口,各种不同的算法以不同的方式实现这个接口。
满足高并发需求。需要借助消息队列、缓存、分布式处理、集、负载均衡等核心技术,实现数据的高可靠、高并发处理,有效降低端到端的数据传输时延,提升用户体验。借用“因粮于敌”的思想。“因粮于敌”的精髓是取之于敌,胜之于敌,以战养战,动态共存。我们常说的借用对手优势发展自己并整合资源就是这个思想的集中体现。正式商用的系统需要借助高性能中间件来并行处理数据,达到不丢包下的低延迟。我们采用商用的Mina 负载均衡技术框架,可以支持多种设备和传输协议(HTTP、TCP、UDP)的数据接入,可以满足每秒上万并发数的数据接入需求。针对以上的核心需求分析和技术定位,我们可以借助第三方中间件和采用设计模式实现个性化业务,来解决接口的集中化、可扩展性、灵活性等问题,借助Mina的
Socket NIO技术魅力,适配高并发的数据接口IOFilterAdapter进行反序列化编码,适配高并发的数据接口IOHandlerAdapter进行业务处理。
02 灵活转发微服务
灵活转发能力的总体设计中要考虑接口和消息中间件两种方式,其中消息中间件可支撑千万级用户规模的消息并发,适用于物联网、车联网、移动 Apps、互动直播等领域。它的应用场景包括:
一是在传统的系统架构,用户从注册到跳转成功页面,中间需要等待系统接口返回数据。这不仅影响系统响应时间,降低了CPU吞吐量,同时还影响了用户的体验。
二是通过消息中间件实现业务逻辑异步处理,用户注册成功后发送数据到消息中间件,再跳转成功页面,消息发送的逻辑再由订阅该消息中间件的其他系统负责处理。
三是消息中间件的读写速度非常的快,其中的耗时可以忽略不计。通过消息中间件可以处理更多的请求。
主流的消息中间件有Kafka、RabbitMQ、RocketMQ,我们来对比一下它们性能,Kafka是开源的分布式发布-订阅消息系统,归属于Apache顶级项目,主要特点是基于Pull模式来处理消息消费,追求高吞吐量,主要用于日志收集和传输。自从0.8版本开始支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务;RabbitMQ是Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP协议用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次。RocketMQ是阿里开源的消息中间件,由Java语言开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。RocketMQ设计思想源于Kafka,但并不是Kafka的一个Copy,它对消息的可靠传输及事务性做了优化,目前在阿里集团被广泛应用于交易、充值、流计算、消息推送、日志流式处理、binglog分发等场景。结合上述服务优势对比,在第三章我们会使用最主流的ActiveMQ消息中间件来处理数据转发,在第六章我们采用分布式的Kafka实现数据转发。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。