如何打造一款底层平台扩建搬迁,业务都不受影响的大数据中间件?

Linkis是微众银行开源的一款数据中间件,用于解决前台各种工具、应用,和后台各种计算存储引擎间的连接、访问和复用问题。

一、引言

Linkis Github repo: https://github.com/WeBankFinTech/Linkis

Linkis,一个打通了多个计算存储引擎如Spark、TiSpark、Hive、Python和HBase等,对外提供统一REST/WebSocket/Java/JDBC等接口,提交执行SQL、Pyspark、HiveQL、Scala等脚本的数据中间件。

Linkis基于微服务架构,提供了金融级多租户隔离、资源管控、权限隔离等企业级特性,支持统一变量、UDF、函数、用户资源文件管理,具备高并发、高性能、高可用的大数据作业/请求全生命周期管理能力。


二、背景

大数据技术的广泛应用,催生出层出不穷的上层应用和下层计算引擎。

通过引入多个开源组件来实现业务需求,不断更新和丰富大数据平台架构,几乎是现阶段所有企业的通用做法。

如下图所示,当我们的上层应用、工具系统,和底层的计算存储组件越来越多时,整个数据平台的情况就会变成如上图的网状结构。

原大数据生态图

不断引入新组件来实现业务需求,越来越多的痛点也随之产生:

  1. 业务需求变化多端,上层组件各具特色,用户使用起来割裂感强烈,学习成本高昂。

  2. 数据种类繁多,存储和计算非常复杂,一个组件一般只解决一个问题,开发和运维人员必须具备完善的技术栈。

  3. 新组件的引入,在多租户隔离、用户资源管理、用户权限管理等无法兼容原有数据平台,自上而下的定制化开发,不仅工程浩大,而且重复造轮子。

  4. 上层应用直接对接底层计算存储引擎,一旦底层环境发生任何改变,都会直接影响业务产品的正常使用。


三、Linkis的设计初衷

如何让上层应用和底层计算存储引擎彻底解耦,真正实现上层用户只管具体业务实现,下层运维只管新引擎的引入,其他的诸如高并发、多租户隔离、用户资源管控等和机房搬迁都不受影响的企业级产品能力,全部交由一套统一的中间产品提供,是Linkis数据中间件的设计初衷。

Linkis解决方案

基于Linkis数据中间件,我们重新架构了整个大数据平台对外提供服务的方式和流程。

  • 业务应用:想要的服务访问方式:WebSocket/Rest/JDBC/Java SDK/Python SDK,Linkis都有;想要的高级特性:高并发和高可用7*24、限流和分流、资源管控和隔离、用户权限等,Linkis都有。

  • 应用层工具:Linkis全线贯通数据研发IDE工具、可视化BI工具和工作流调度工具。让数据研发IDE工具的一段代码,快速且顺畅地实现可视化展示,发布到工作流调度工具进行定时调度,无须顾及代码兼容性、UDF、自定义变量和各种Jar的跨系统使用问题。

  • 数据层工具:Linkis统一接入入口,让数据血缘的采集、热点数据的采集从未如此简单。统一建库/建表入口,具备了应用元数据信息的相关库表,才允许被Linkis传递到底层,保证企业元数据的完整性和有效性。查看数据时才脱敏,既满足复杂计算需求,又保证数据的私密性。

  • 平台工具:增强平台运维能力,提供统一的错误码和错误描述,错误码直接关联解决方案,让用户自助化解决异常问题。


四、Linkis即将打造的开源生态

作为微众银行大数据平台,经过了数年海量严苛金融业务场景的打磨和验证,表现十分卓越的数据中间件Linkis,我们在其开源之初,就同时筹备开源多个上层大数据工具,将其打造成一个完整的大数据生态。

  • 目前已开源的有:数据研发IDE工具Scriptis

  • 即将开源的有:数据可视化BI工具图形化工作流工具数据质量工具

即,Linkis全线贯通Scriptis + 数据可视化BI工具 + 图形化工作流工具为一体的DataWorkis,也将于近期开源。

在一个页面就可以完成脚本研发、可视化展现和工作流定时调度的开源项目,大家不妨保持期待。

更多工具准备开源中,敬请期待!


五、Linkis的技术架构

如下图所示,在技术架构层面,我们基于SpringCloud微服务技术,新建了多个微服务集群,来打造Linkis的中间件能力。

Linkis技术架构图

每个微服务集群都承担系统的一部分功能职责,我们对其进行了如下明确的划分。如:

  • 统一作业执行服务:一个分布式的REST/WebSocket服务,用于接收上层系统提交的各种访问请求。

    目前支持的计算引擎有:Spark、Python、TiSpark、Hive和Shell等。

    支持的脚本语言有:SparkSQL、Spark Scala、Pyspark、R、Python、HQL和Shell等;

  • 资源管理服务: 支持实时管控每个系统和用户的资源使用情况,限制系统和用户的资源使用量和并发数,并提供实时的资源动态图表,方便查看和管理系统和用户的资源;

    目前已支持的资源类型:Yarn队列资源、服务器(CPU和内存)、用户并发个数等。

  • 统一存储服务:通用的IO架构,能快速对接各种存储系统,提供统一调用入口,支持所有常用格式数据,集成度高,简单易用;

  • 统一上下文服务:统一用户和系统的资源文件(用户脚本、JAR、ZIP、Properties等),用户、系统、计算引擎的参数和变量统一管理,一处设置,处处自动引用;

  • 物料库服务:系统和用户级物料管理,可分享和流转,支持全生命周期自动管理;

  • 元数据服务:实时的Hive库表结构和分区情况展示。


六、总结

Linkis作为数据中间件,为实现对下层调用细节的屏蔽,做了许多的尝试和努力。

由于篇幅所限,本文不再详细论述Linkisd的架构设计,如您感兴趣,欢迎访问开源Github Wiki:https://github.com/WeBankFinTech/Linkis/wiki。

有没有一套真正基于开源,经过金融级生产环境和场景的自研打磨完善,再回到开源社区的大数据解决方案,让人能相对放心的拿去服务于生产,支持金融级业务,具备企业级特性保障?

希望Linkis生态成为答案。

期待更多的社区力量,一起推动Linkis生态圈的成长。

转载于:https://my.oschina.net/u/4199701/blog/3099481

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值