联系邮箱:market@golaxy.cn

客服电话:400-901-9755

01智能机器学习平台:从“零”到“壹”的渊源


随着万维网、互联网、物联网、云计算、三网融合等IT与通讯技术的迅猛发展,数据的快速增长成了许多行业所共同面对的严峻挑战和难得的机遇,信息社会已经进入了网络化的大数据(Big Data)时代。


相较于传统数据,大数据具有体量巨大、模态繁多、增长极快、价值稀疏等特点,而要从大数据挖掘大价值,往往涉及到从预处理、分析挖掘、知识推断、决策研判、可视化交互、领域应用这样冗长的分析链路,这些特点使得传统的数据分析算法和处理平台难以适用。  


传统的最为流行的数据分析系统是基于结构化数据的OLAP、OLTP体系,典型的如Oracle、MySQL系统等,这一类分析体系具有很好的一致性和容错性,但是支持的数据单一、扩展性差,对异质数据、异质计算模式的融合能力差;


随着数据规模快速增长,Hadoop、Spark、Tensorflow等计算框架逐渐成为大数据分析的主流框架,其对大数据计算与机器学习提供了较好的平台支持,但是这些平台的使用者通常是具有一定技术背景的数据分析人员,对于普通行业人员使用门槛相对较高;虽然市场上存在诸多支持大数据分析的计算平台和算法库,但其在使用过程中往往存在软硬件环境搭建困难、对用户编程门槛较高、缺乏协作与共享能力、缺乏便捷的用户接口等诸多困难,给普通行业用户带来了巨大挑战。  


天玑公司通过多年同行业客户合作进行大数据分析应用实践过程中及用户沟通反馈中发现,对海量数据的有效分析,离不开大数据处理计算平台与机器学习平台的支持。


基于上述的应用背景,为解决将大数据分析技术推向行业应用时遇到的诸多困难,天玑公司决定研发智能机器学习平台(简称天玑BDA),它是集数据预处理、模型训练、预测、评估为一体的一站式大数据智能分析挖掘平台。


平台以现有主流分布式计算框架(如Spark、TensorFlow等)为基本计算环境,在此基础上构建了面向大规模机器学习算法的分布式计算框架BDA Infrastructure、大规模机器学习核心算法库BDA Lib、交互式大规模机器学习应用协作平台BDA Studio,将大数据分析计算所需要的ETL、模型训练、评估和在线预测整合成流水线,并提供图形化配置和运行监控界面,实现大数据分析任务一站式配置和运行,帮助用户快速构建和优化大数据分析模型,挖掘大数据资产价值。


02大跃进:从“V0.1”到“V1.0”的架构演进之路


天玑公司BDA产品发展前后主要经历了两个版本的演变:


  •  V0.1版本:该版本为BDA产品的孵化原型,在研发该版本初期,公司联合中科院计算所网络数据实验室大数据分析方向的相关负责人,基于现阶段大数据分析平台的需求,共同探讨并完成BDA平台雏形设计、搭建,完成产品原型后,经过了部分客户的试用、验证。随着产品应用客户逐步增加、机器学习、人工智能技术的不断发展,对产品的分析能力有了更高的要求,因此,我们对0.1版本进行了重新的思考与优化。


  • V1.0版本:该版本相比V0.1主要在图形交互接口、技术架构、平台化能力上进行了全面的升级与优化。


从单一MVP架构向分布式微服务架构转变

BDA在技术架构上主要完成了单一WEB 应用向前后端分离的分布式应用优化升级;同时基于微服务架构完成了平台核心模块的拆分,真正实现各模块之间的松耦合与分布式部署,提升了服务的并发访问效率;在后台机器学习算法模型方面,根据大数据分析应用构建流程我们将模型划分为加载、转换、特征、统计、算法、工具等模块,提高用户在进行大数据分析过程中数据采集与预处理、特征工程、模型训练、评估、应用发布等全生命周期的数据分析能力。


单体web应用架构

 

BDA第一版本主要基于GWT的Web应用程序开发框架,采用了MVP设计模式,MVP(Model-View-Presenter)模式对MVC模式做了一定的改进,并在此基础上做了进一步的分工。View和Model在功能上与MVC模式一致,主要区别在于MVP中增加了Presenter模块。MVP模式将View中的逻辑处理模块进行抽象存放到Presenter中,而View只作为UI模块用来显示界面和转发事件。增加的Presenter模块中有View和Model的接口,主要用来处理相应的事件和响应函数、升级View或者调用Model中的处理函数。


MVP模式架构图


GWT是一个全Ajax的实现方案。所以GWT的整个Presenter层需要控制View层的全部事件,因为在全Ajax页面中Ajax操作其实包含了很多的业务逻辑。而使用MVP模式就可以实现剥离这些Ajax业务事件逻辑。这样View层就仅仅是单纯的页面显示。这种面向接口的开发编程方式,大大简化了逻辑层对页面View的依赖,因此多个页面都可以共用一个逻辑类,大大弱化了界面层和逻辑层的耦合度,增强了应用的可扩展性和代码的重用性,降低了代码的维护难度。

 

分布式web应用架构


近年来,微服务、SpringBoot等新技术架构的出现,使得传统web应用架构在性能方面、扩展能力等方面逐渐表现出能力不足。随着一些大规模的互联网行业,例如社交,电商,物流,金融等行业,对微服务架构的实践应用,验证了微服务架构的可用性、基于高并发下的可靠性以及在开发阶段的高效性。


在BDA应用架构优化中,主要基于SpringCloud微服务架构,对原有的单体web应用进行了服务拆分。调整后的平台架构如下图所示。

BDA 整体技术架构图


从技术架构图中可以看出,服务层基于SpringCloud采用微服务架构实现。SpringCloud是基于SpringBoot的一整套实现微服务的框架。它提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件,结合SpringBoot框架使得微服务架构的应用开发更加便捷。SpringBoot旨在简化创建产品级的 Spring 应用和服务,简化了配置文件,使用嵌入式Web服务器,含有诸多开箱即用微服务功能。


基于微服务实现模块松耦合


系统拆分是单体程序向分布式系统演变的关键一步,也是极为重要的一步,拆分的好坏直接影响到未来系统的扩展性、可维护性和可伸缩性等。拆分工作中如何正确拆分、用什么样的方法和原则进行拆分从而得到一个高可用、可扩展、可维护、可伸缩的分布式系统是我们面临的挑战。


代码结构拆分


基于程序结构的横向拆分相对容易理解,首先拆分出顶层技术commons、entity,然后拆分服务治理模块、业务模块(modules),BDA平台拆分后的各代码模块之间关系如下图所示:


BDA 各业务服务逻辑关系图


通过上述工程代码结构,可以让技术人员在研发过程中将大部分精力集中在业务模块内功能实现,而无需过多考虑同其他模块的复杂业务逻辑,从而极大的提高了研发效率和代码质量。在微服务架构下,各个服务模块可以独立连接各自的数据库,可以独立进行代码的版本管理。


微服务架构的引入,不仅在技术层面提高了平台的可用性、可扩展性与可维护性,同时对产品研发团队的建设、产品的知识保护及项目迭代速度等方面有了较大的提升:


  • 团队建设:从最初的一个团队逐渐成长并拆分为几个团队,通过对原有系统进行拆分,团队按照业务线不同进行划分,减少了各个业务系统和代码间的关联和耦合,几个团队之间不再可能共同向一个代码库中提交代码,减少团队间的干扰,保证了代码的稳定性与唯一性。

  • 知识保护:这里所指的安全不是系统级别的安全,而是指代码或成果的安全,尤其是对于很多具有核心算法的系统,为了防止代码泄露,需要对相关系统进行模块化拆分,隔离核心功能,保护知识产权。

  • 迭代速度:单体程序最大的问题在于系统错综复杂,牵一发而动全身,也许一个小的改动就造成很多功能没办法正常工作,极大的降低了软件的交付速度。主要原因在于,每次改动都需要有大量的回归测试确保每个模块都能正常工作,由于在变动期间我们并不清楚改动的具体影响范围,因此需要做大量重复工作来确保功能正常,极大的增加了测试成本。而通过微服务对系统进行拆分,能够帮助技术人员快速整理各个功能间的关系并解耦,让各模块之间相互独立,保证各模块的功能高内聚性,从而提高了维护的成本与效率。


分布式架构拆分总结


针对微服务架构在BDA V1.0上的应用与实践,我们对产品研发团队在进行系统功能拆分过程中,引用了如下几点原则:


1.明确拆分原则和拆分需求。

2.梳理出业务模块和之间的依赖关联关系。

3.按照业务为单位,拆分实体、以及应用工程单独部署。

4.按照业务为单位拆分应用服务,避免环形依赖和双向依赖。


03智能机器学习平台应用实践


随着智能机器学习平台V1.0的正式发布,天玑公司在大数据分析领域向“服务国家,深挖价值,惠及大众”的宗旨目标又迈进了一步。通过多年的客户合作与交流,目前智能机器学习平台已在各大行业中有了较多的合作契机:


随着大数据产学研一体化的贯彻实施,平台在大数据教学、科研、人才培养等方面起到了举足轻重的作用;于此同时,随着大数据的发展,国家军工、政府舆情监管、金融大数据分析等行业领域对大数据分析挖掘平台的需求迫切,拥有较为广阔的应用场景。


智能机器学习平台未来将在大数据分析与机器学习领域打造一个通用、开放的大数据分析引擎,全面提升分析引擎在生产系统中的数据分析、深度挖掘的能力,为各行业在大数据分析应用中提供基础支撑平台。




分享