中国数据创新琅琊榜之Laxcus:构建全栈和通用的大数据管理系统

古之“琅琊榜”让最优秀的青年才俊闻名天下,而“中国数据创新琅琊榜”正是为积极鼓励那些在各自领域不断创新,不断突破的企业,从行业角度出发,对以数据创新驱动业务发展的公司进行案例推广、梳理和排名,让优秀的数据创新企业得到更多的展示和关注,让更多拥有新型服务模式和自我创新能力的数据型公司,成为未来大数据产业发展新生力量的同时,威震江湖,名闻天下!
业务平台介绍
laxcus大数据管理系统源自这样一个思考:能不能在一套产品里集成大数据所有功能,向上支持大数据应用业务,向下整合各种软硬件基础设施,为用户提供完整、通用一站式的大数据解决方案,从而摆脱积木式模块框架的功能分散重叠、兼容不足、安全性差、效率低下、组织部署困难、开发维护使用成本高昂的困扰。
截止目前,laxcus大数据管理系统持续进行了八年的设计开发工作,经历过数个版本迭代,达到了当初的产品设计目标,已经是一个全栈和通用,适合全行业、全球用户使用的大数据管理系统。
laxcus大数据管理系统架构
成功案例分享
(1)总体目标和思路
laxcus大数据管理系统的设计目标是在一套产品里,针对不同的软硬件,集成大数据的所有功能,保证系统的通用性,适合全行业、全球用户使用。为了达到这个目标,系统的产品技术设计,除了采用架构/功能一体化设计、增加内聚、减少调用层次、改进人机界面、提高分布效率等基本要素外,还包括以下方面:
1.硬件基础设备定位于pc、移动架构平台,来减少用户采购、运营费用。
2.系统总体设计成松耦合架构,在此框架下实现多集群、多用户、多任务,和数据业务的可定制、可扩展。
3.网络通信采用二进制协议,来提高数据传输和处理效率。
4.引入自适应机制,使集群具备自组织管理和容错处理能力,降低维护人员工作压力。
5.依托多集群并行和弱中心管理的特点,实现超大规模、可伸缩的数据存储和计算。
6.底层数据采用混合存储方案,支持oltp和olap业务两种业务模式,实现数据即时存取。
7.数据处理融入sql思想,兼容数据库,满足高并发和高可靠性两种需求。
8.索引矩阵融合分区、动态关系、图论、键值技术,实现网络数据的精准定位和快速查询。
9.全新设计的分布算法,保证数据处理简捷高效。
10.组件化编程,结合容器管理,来减少数据业务的开发和维护难度。
11.体系化安全策略,将安全管理纳入系统每一个环节。
12.使用类自然语句命令操纵集群,覆盖全部数据处理和管理工作。
13.支持全球所有字符集,满足不同国家地区的用户语言使用习惯。
目前laxcus大数据管理系统运行在linux/windows系统上,硬件平台支持x86、arm、powerpc、nvidia。同时提供了丰富多样的api接口,供用户开发、运行、维护使用。
(2)综合解决方案
laxcus大数据管理系统涉及大数据处理所有环节。为了保证系统的稳定可靠、安全、易操作、易开发、易维护的特点,大部分功能都做了内置处理,不允许用户调用,如网络通信、数据存取、分布资源的管理等;有些功能以命令或者配置文件方式允许集群管理者和用户有限使用,如分布锁、安全管理、节点资源的设置等;有些功能以api接口方式的开放出来,供开发者使用,如大数据应用层/系统层开发部分;有些功能是针对用户需求的创新设计,如多用户资源共享和去中心化的数据处理等。鉴于laxcus大数据管理系统体系庞大,本篇无法全部阐述,以下将甄选部分重要内容简单说明。更多详细内容请见:《laxcus大数据管理系统-白皮书》和《laxcus大数据管理系统-产品简介》的介绍。
2.1节点
节点是laxcus大数据管理系统的基本运行单元。相较于物理性质的计算机,在这里的节点是一个逻辑单位,它具有双重身份,即是客户端又是服务器。当它做为服务器使用时,接受其它节点的命令请求和执行数据处理;当处于客户机状态时,又可以向其它节点发送命令。软件层面上,节点实质是操作系统下的一个进程,在后台运行,通过网络与外界保持联系。目前laxcus大数据管理系统共有6类11种节点。6类节点包括:管理节点、网关节点、工作节点、资源节点、监视节点、用户节点。其中top/home属于管理节点,data/work/build/log属于工作节点,aid属于网关节点,call兼具工作节点和网关节点的双重特点,archive是资源节点,watch是集群监视节点,front属于用户节点。运行过程中,这些节点提供一种或者几种功能,多种节点协同合作,完成大数据处理和管理工作。其中网关节点把网络分成彼此隔绝的两个部分,它处于“边界”位置。对外,它接受来自用户节点的任务请求;对内,它将用户节点的任务请求转发给网络内部的节点处理,同时对外部网部屏蔽内部拓扑结构,起着“反向代理服务器和防火墙”的安全作用。工作节点承接网关节点的任务请求,负责组织和实施具体的数据处理工作。当数据处理工作完成后,将结果返回给网关节点。管理节点在集群里是一个“维护者”的角色,起到管理和监视集群其它节点的作用。在laxcus大数据管理系统里,用户节点的部署和维护由是用户来实施,没有特别明确的要求。其它节点由管理员负责组织实施,需要遵守节点部署规定。
laxcus大数据管理系统节点拓扑结构
2.2集群
集群由不同类型的节点组成。在laxcus大数据管理系统的语义里,“域”是一个计算机集群的单位,其中管理节点处于核心地位,负责监督、维护整个集群的运行,它的作用非常重要。管理节点实质也是一台计算机,也受到自身cpu、内存、网络接口等硬件性能的限制,随着集群内计算机数量的增加,它的管理负荷也在随之升高。因为这个限制,在实际部署时,一个集群内的计算机数量是不可能无限增加的。据我们测试显示,当一个集群内的节点数量达到3000至8000这个范围时,会出现管理峰值,超过这个范围,稳定性会大打折扣。但是在实际使用中,用户对数据存储和计算需求总是在持续增加的,这样就产生一个矛盾:如何在保证集群稳定运行的情况下,仍然能够满足用户更大规模存储数据和计算数据需要?多域并行集群就成为这样的一个选择。
多域并行集群是对现有单域集群的升级和改进。通过把原来多个孤立运行的集群连接起来,在这些集群之上,建立更高一层的管理模型,形成一个两级的管理架构。这个两级架构的集群被称为“主域集群”,它下属的集群被称为“子域集群”。子域集群接受主域集群的管理,实时向主域集群汇报自己的运行状态。按照规定,子域集群必须集中在一个物理环境里,主域集群允许跨地域分散存在。就是说,如果a子域集群的机房在北京,b子域集群的机房在广州,天津机房是c主域集群,只要它们之间能够通过网络进行通信,就可以在天津的c主域集群管理下协同工作。在laxcus大数据管理系统里,top集群是主域集群,home集群是子域集群。
2.3松耦合架构
laxcus大数据管理系统被设计成松耦合架构,与松耦合相对的是紧耦合。laxcus大数据管理系统的松耦合架构是从紧耦合架构改进而来。本处的松耦合架构可以理解成:为适应复杂分布网络环境,被临时组织起来的工作模型。在这个架构下,所有硬件的设备和软件的模块,以及其上运行的数据处理工作,都被视为服务。它们在获得授权的情况下,可以自由的加入和退出,以离散、独立、弱依赖的形态存在。其中少量故障不影响系统的整体运行和用户使用,从而使系统具备极强的稳定性、可靠性、可伸缩、冗余容错的能力。
laxcus松耦合架构是一个客户机、代理、服务器的三层管理模型(csa),与之配套是实现了架构/功能一体化的invoke/produce任务调度模型,它们协同配合,共同完成各种数据处理和管理工作。实际使用也显示,改进后的松耦合架构的各项性能指标,要远超过当初的紧耦合架构。
紧耦合/松耦合性能对比
松耦合架构
2.4网络通信
laxcus大数据管理系统的网络通信建立在tcp/ip网络之上,目前支持ipv4和ipv6两种网络地址。网络通信是laxcus体系里最基础和最重要的一环,为了最大限度利用有限的网络资源,我们在tcp/ip协议基础上,设计了一套专属的二进制网络通信协议:fixp协议。它采用小头编码(littleendian),具有平台独立、上下文无关、结构简单、数据尺寸小等特点。
fixp协议结构由三部分组成:命令、消息、数据实体。命令分为两种:请求和应答,命令的作用是说明本次通信的基本属性。每次通信由发起方发送请求命令,受理方返回应答命令。消息在命令之后出现,消息在一次通信协议中允许出现任意多个,消息中携带本次通信需要的多类附属信息。消息之间是衔接的,彼此无分隔标记,通过消息头中的标记长度加以区别。在最后面是数据实体部分,数据实体包含本次通信所要传递的内容。内容是任意格式的,如音频、图像、数据库数据、各种元数据等。数据实体是一个可选部分,是否存在会在消息中注明。
在fixp协议基础上,还提供了四种通信方案。这些方案包括:tcp方案、udp方案、keepudp方案、rcp方案。laxcus大数据管理系统将根据运行环境条件和不同任务需求,选择合适的通信方案,实现有区别的网络通信,以达到节约网络流量,降低运行负载,提高计算效率的目的。另外,通信方案也可以由系统管理员在配置文件中指定。
fixp协议结构
2.5数据存取
数据存取是最底层的一个子系统。它执行磁盘文件存取工作,这个磁盘文件被称为数据块。数据块有cache和chunk两种模式,cache块执行添加、删除、查询操作,chunk块执行查询和删除操作。每个数据块都有一个64位无符号整数,做为它唯一标识。这个标识由系统分配,不会重复。
数据块支持两种存储模式:行存储模型(nsm)和列存储模型(dsm)。nsm以“行”为单位存储,dsm以“列”为单位存储。nsm模型主要针对oltp业务,dsm更适合olap业务。为防止读写竞用,系统在磁盘层面提供细粒度的“行级锁”保护。
除此之外,数据存取子系统还提供了元数据、内存计算、完整性检查、快照、备份、主块冲突检查,负载检测等功能来完善、优化、保护数据读写工作。
行存储模型和列存储模型
2.6数据组织
数据组织设计与关系数据库一致,严格遵循数据和数据描述分离的原则,继续沿袭用户模型、逻辑模型、存储模型的三层结构,和兼容sql。它的基本核心是以关系代数的理念去处理数据,以及类自然语言风格的数据描述。索引矩阵的设计,表象上是关系查询,但是隐性融合了动态关系、图论、键值对技术。所以用户的使用体验,与关系数据库相比,并不会感觉到有太多的差异。
为了支持分布处理环境,保证大规模数据存取和计算的性能效率,数据组织子系统采用了大量新的数据处理技术,如取消关系数据库中的视图(view),引入全局数据库概念,支持跨数据库操作,允许用户压缩和加密行列数据。另外也增加了一些创新性设计,如:可调cap策略、去中心化的数据处理,跨用户的数据操作等。
2.7分布算法
laxcus大数据管理系统提供两套分布算法:diffuse/converge、scan/sift,其中diffuse/converge用于分布计算工作,scan/sift用于分布数据构建工作。
diffuse/converge算法基于这样的理念:传统的集中计算模型,数据处理可以分解为产生、计算两个阶段,如果把它扩大到网络环境,可以进一步分解为分散和聚合。它们的区别在于:前者是直接产生数据,然后对数据进行计算,输出计算结果;后者是通过网络收集数据,经过组织整理后,再分配给多台计算机去执行计算,最后输出计算结果。
scan/sift是针对大规模数据重组构建的算法。它的特点是在即有数据基础上,经过重新组织加工,产生新的数据,面向etl业务。起到数据处理加速器的作用,为数据计算工作提前准备一个快速处理通道。
这两种算法都可以进行了抽象化处理,以“分布任务组件”形式,向开发者提供了api接口,供用户结合自己的数据业务进行开发,然后发布到laxcus大数据管理系统运行使用。
2.8应用开发
laxcus大数据管理系统的应用开发分为两种:管理者应用开发,用户应用开发。前者遵循invoke/product任务调用模型,面向集群所有者或者云计算运营商,提供系统层面个性化的数据管理和处理业务,操作者是集群管理员。后者面向普通的应用开发者,它以api接口发布出来,以组件编程的方式,由开发者编程,供注册用户使用。
在运行过程中,用户层应用被置于容器中运行,接受沙箱的监管控制。系统层应用与系统嵌合在一起,没有沙箱管理,直接运行。它们都支持冷发布和热发布两种模式。系统层应用发布由管理员通过命令�...