泛接口思想实现大数据平台的结构优化研究
2020-07-20王丁
王丁
随着互联网应用的飞速发展和各行业信息化的普及,数据呈爆发式增长,传统面向对象编程思想和数据处理方式在分析如此海量的数据时出现性能和可扩展性的瓶颈,所以必须研究新的有效的大数据分析平台开发架构,尤其是从底层编程思想着手进行优化,来应对大数据时代所带来的全新挑战。
目前业界对于大数据的概念还没有统一定义,IBM公司将其特征概括为大规模、多样性和快 速化三方面,其中大规模表示数据量非常大,TB 级以上;多样性表示数据不像传统关系数据库那样的结构化数据,而是有较多无法用二维表逻辑来表达的非结构化数据;快速化表示数据产生速度和要求的分析速度都要快,并且对大数据分析后的结果可快速用于用户的决策依据上,实现大数据所蕴含价值的真正落地体现。
大数据平台大规模、多样性和快速化的三个特征,导致在编程实践中会面临数据关系极其复杂、源码改动非常频繁、代码间冲突众多等问题,这将耗费大量时间和精力在代码编写和完善上,如果没有良好的编程思想对底层结构进行优化,大数据项目到后期往往会陷入BUG频出,难以维护的境地。运用泛接口思想在大数据平台进行编程实践,将大数据算法的复杂流程划分为相对独立的若干个步骤,并封装成独立的类或接口,只需通过实例化实现这些接口的类,便可以方便的进行大数据项目的开发和后期维护修改。
一、从面向接口编程到泛接口思想
在面向对象程序设计中,接口指实体把自己提供给外界的一种抽象化物,用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式。面向接口编程是比面向对象编程体更先进的一种独立编程思想,是面向对象编程体系中的思想精髓之一。一个系统由若干个组成部分按照一定的层次组成,并且各个组成部分之间存在着一定的依赖关系,面向接口编程要求各个层次不直接向其上层提供服务,即不直接实例化在上层结构中,而是通过定义一组接口,仅向上层显示其接口,接口中只定义了该层次所具有的功能,上层对下层仅仅是接口依赖,而不依赖具体实例。这样在编程实践中就具备了很大的灵活性,当下层需要改变时,只要接口及接口功能不变,则上层不用做任何修改,甚至可以在不改动上层代码的情况下将下层整个替换掉,这就大大节约了开发时间,有效提高了工作效率。
泛接口思想则是对面向接口开发的集中体现和进一步升华。泛接口思想不同于一般意义上的接口偏重于具体实现,而是上升到底层架构设计层面的一种思想。泛接口的核心是解耦和自由互通,是在面向接口开发的基础上,为应对大数据平台超大规模数据和前所未有的结构复杂性而产生的一种新的编程思想。泛接口在具体代码编写层面与面向接口开发具有一致性,重點是通过全新底层架构设计思想,避开庞杂的、无序的数据关联处理,同时建立一套新的内部交互机制,化繁为简,由一个复杂的大型问题转化为多个较简单的小型解决方案,最终从根本上解决大数据平台开发的复杂度难题。
二、 泛接口思想综述
泛接口思想的核心是解耦和自由互通,在整个编程实践的各个层面均可以利用泛接口思想实现开发结构优化。体现在代码实现层面是解耦对象之间的依赖关系,提升系统的维护性与扩展性;在数据库层面是通过建立新的映射关系来解耦表与表的多对多关系,否则表信息与表关系严重糅合在一起,造成大量数据冗余;体现在ORM上是用注解配置文件来解耦对象与数据库表的对应关系,实现内部运行效率大幅提升;体现在MVC上是建立新的路由机制来解耦URL与Action之间的运转关系等。在整个编程实践中,只要应用场景中两个“对象”之间的复杂关系影响到结构设计和开发工作量,我们就可以采用某种手段将一方灵活的转换为另一方,从而实现场景中两个“对象”之间直接关系互不依赖,同时这种解耦和自由互通在各个层次都有应用,因此将其进行抽象,形成了一整套泛接口思想。
图1 泛接口思想图解
泛接口是进行复杂编程实践的一套新的方法论,当面临互相依赖的两个“对象”的时候通过某种手段进行互相解耦或连通,这里的“对象”不仅仅是类,还可以是整个模块或系统中其它任何组合。在具体应用中,泛接口要结合具体业务场景落地为具体实现手段,以达到两个“对象”的自由互通。例如:新的路由机制实现了URL对象与Action对象的互通;通过配置文件和相应算法结合实现了类对象与表对象的互通,这里路由机制和配置文件就是泛接口思想落地后的具体方法。通过对各个层面具体解决方案的抽象归纳,形成的泛接口思想,可以有效指导我们在应对编程实践中的复杂度难题,尤其适合当前大数据平台的超大规模编程中的复杂逻辑转换。
三、 泛接口思想在大数据平台中的应用
泛接口思想在大数据平台开发中的应用,首先要定位整个平台设计中哪里有耦合,针对具体问题具体处理。在大数据基础处理中,通常需要将多种文件的元数据格式进行相互转换,面临的问题主要是源格式与目标格式复杂的对应关系,为了解耦这种复杂对应关系,基于泛接口思想,我们可以引入中间格式,使各种格式都依赖于中间格式,降低繁多的对应关系。
图2 利用中间格式解耦复杂对应关系
通过这种方式可以将复杂的依赖关系由N的幂次方级别降低到N的线性级别,大大降低了大数据平台的开发难度。但此时耦合依然存在,需要进一步解耦,源与目标都依赖于中间格式,由于大数据平台结构要求需要将中间格式存放在数据库中,那么一旦遇到表信息的更改或者数据库迁移问题,整个系统会遇到较大问题,必须重新修改。为了解除这种依赖,基于泛接口思想可以引入映射关系,通过映射文件描述各种格式和中间格式的映射关系,然后实现每种格式的转换算法,通过调用映射处理模块获取不同格式与中间格式的元数据对应关系,传递进具体算法中进行格式转换处理。通过这样的处理方式,整个核心依赖关系被完全转移到了映射文件中,如果添加新的格式,只需要在映射文件中添加相应的映射关系,并编写该格式对应的转换算法,完全不影响已完成的代码运行。具体应用时还可以将映射关系加载到缓存中,降低IO操作,提高程序的灵活性与扩展性。这样就形成了一个完整的泛接口在大数据平台开发中的结构优化设计。
图3 利用映射文件进一步完善结构设计
四、结束语
利用泛接口思想进行大数据平台开发的结构优化设计,采用分而治之的原则,实现了复杂依赖关系的解耦和互通,提高了程序的灵活性,可以更加方便的进行海量数据交互效应分析和统计实验,更好地实现大数据的价值发掘。用泛接口思想对大数据平台的结构优化,是面向接口开发的进一步升华,对其它类型平台的开发结构优化也有较好的借鉴意义。
作者单位:人天通信集团有限公司