Skip to main content

用例规划

​ 大数据微服务 第一章 如何通过用例来理解微服务

2 用例规划

1-EDW view

​ 要理解大数据处理,首先要回顾一下传统的数据仓库的构建方案, 上图是澳洲一家电信公司的在2012年的时候的一个方案。虽然这是一个非常经典的ETL方案,但是在现代的大数据处理项目中,依然可以参考其中的设计思路。从澳洲的方案中,我们可以发现这是一个完全基于组件化集成的方案,所以全面掌握不同部分的组件选型和集成技术,就可以为自主构建低成本的大数据方案打下坚实的基础。

在前期第一门课的训练中,我们对大数据处理过程的模型进行了适当的简化处理,重点针对三方面的内容开展了用例设计工作。主要训练的内容如下:

1,经典数据中心相关的ETL流转换处理用例。

2,经典数据中心相关的数据汇总统计相关的用例,并提供两种实现模型,一种是经典的基于数据库的方案,另外一种是现代大数据中常用的内存计算方案。

3,用于支撑现代大数据中心的并行计算相关的用例。

有了第一门课程的基础,读者可以解决数据处理的一些原子问题,这样就可以进一步的学习分布式并行计算方面的一知识,以便形成整体方面的解决能力。

而在第二门课程,大数据微服务设计部分,我们将立足于打造一个面向7*24小时服务的高可用的ETL应用框架。可以适配工业界90%以上的大数据应用ETL场景。

在这门课程中,我们将侧重实践以下三方面的内容。

1、如何基于面向对象的软件工程方法,打造一个基于微服务架构的ETL应用框架。

2,分享几个基于微服务方案的应用案例,帮助大家理解微服务设计的一般准则

3、介绍微服务设计中的一些高级特性,方便支持超大规模的数据处理。

2.1 用例总体规划

use-case dimension

从上图可见,相关的的用例划分,主要可以划分为三大部分,分别是:

1,面向微服务的ETL系统: 基于面向对象的方法构建一个ETL系统,并在此基础上进一步通过微服务的方案来实现一个ETL系统。

2,几个基于面向微服务方法的数据处理原型:分享几个数据处理原型项目,通过微服务方法进行构建。

3,用于支持大数据微服务设计的高级特性:提供微服务设计的几个高级特性,用于支持大数据处理的场景。

以上是本培训课件的三大主轴,可以帮助具备在单台服务器上编写ETL应用的朋友快速养成大数据微服务设计的基本思维。

按照上述的主轴,我们可以进一步来细化面向微服务的ETL系统的用例模型。

2.2 基于微服务的ETL系统

use case model micro-service

在整个大数据处理的各项原子处理模型中,ETL处理是整个处理过程的基石。虽然ETL的业务逻辑比较简单,但是ETL的过程需要和多个外部接口进行协同处理,在缺乏经验的情况下,很容易出错,影响项目的进展,所以,如果立志进行大数据处理的朋友,首先需要掌握必要的微服务的设计技能,实现对ETL应用的支撑。

2.2.1 ETL系统-用例故事

ETL系统包含的use case 是一组非常基础的用例,也是非常重要的一组用例。他可以支撑很多现实的应用场景,掌握了这组用例的设计方法,就可以在很多场景下实现数据采集的工作。

​ 为了帮助读者理解这一组用例,下面回顾一个用例故事,来说明流转换用例的普适性。

use-case story

假设一个财富银行,他在一个城市有多个营业网点, 在一个营业网点中,有客户来存钱和取钱,每一次交易会生成一张ticket,其中包含了交易时间,流水号,操作员,客户,交易类型,交易金额的资讯。交易完成以后,交易的ticket会生成一个文件,放置在FTP接口上。

domain object

​ 为了及时的掌握各个营业网点的的交易情况,财富银行的中心机房会每15分钟从一个营业网点的FTP 接口机上提取前15分钟周期上的所有交易清单,并汇总为1张15分钟粒度的交易报表。

中心机房根据多张15分钟交易报表,会生成1小时粒度,24小时,天粒度的报表,并将相关的报表插入到数据库当中。

这个ETL模块的用例故事,虽然这个故事比较简单, 但是确是一个非常典型的应用案例,有非常广泛的适用场景。

根据上述的用例故事,我们做一定的简化,主要的处理过程包括

1,采集到交易清单。

2,对交易清单进行处理,获取其中的信息结构。

3,将处理的结果,进行持久化处理,保存到数据库中。

2.2.2 用例模型

根据前面的用例图,我们知道有三个核心的用例,分别是:

1,采集文件:定期扫描特定路径下的文件,,将文件拷贝到本地的文件系统中,并将将文件信息记录到数据库当中。

2,处理文件:处理组件对文件进行解析,提取其中的信息结构,并形成临时结果文件。

3,数据入库文件:将临时结果文件拷贝到数据库中。

关于用例模型的详细解释,将在后续的设计中进行说明。

2.2.3 设计模型方案

ETL archiecture

​ 图 ETL的体系结构

​ 俗话说,”条条大路通罗马“,要构建一个ETL中间件,有很多种不同的体系结构,上图是目前主要可选的体系结构。

而在本课程中,我们会重点讲解面向对象的ETL解决方案。

2.3 微服务”溯源“

​ 目前和人工智能,大数据一样,微服务同样是一个热门的话题,而作为一个大数据的入门者,往往对“微服务”一头雾水。 要理解微服务,就必须回到本源去思考。

​ 微服务的源流,要回到早期的软件工程的发展历史,当开始有编程语言以来,面向对象的软件设计方法和面向过程的软件设计方法,就成为两大主流的设计方法。虽然学术界有很多争论, 但是随着图形界面编程的普及,面向对象的设计方法逐渐成为主流。

​ 说到面向对象的软件设计方法,那真是三天三夜也讲不完,我们这里只能简要的介绍一下。面向对象的软件设计,有三大核心概念,分布是继承,封装,和多态,而这里多态是最难以理解,因为他是用来说明对象和对象之间的关系的。如何要实现多态的设计方法,就要去服务的提供者,和服务的调用者之间是一种弱耦合的关系,简单的来说就是:服务的调用者无需关心服务的提供者。

​ 这种设计方法就是今天“微服务”设计的起源。从面向对象的软件设计开始,就要各种各样的方法来实现”多态“的软件架构,即使是面向过程的编程语言,也可以编写出具有“多态”特性的软件;那么python作为一种面向对象的高级编程语言,自然也可以非常容易的实现何种特性。 所以,语言层面并不是实现“多态”特性的瓶颈,关键在于设计思维。

​ 到了云服务的时代,很多云计算框架是强制要求就像微服务的设方法的,但是很多设计人员因为不理解这种设计模式,所以掌握起来比较费劲。所以,在这本培训教材中,我们会针对同一个问题,提供多种不同的解决方案,这样就可以帮助读者理解微服务的演进过程。理解了这个过程,这个部分的学习目标就达到了。

2.4 再说“velocity”难题

随着5G,物联网和工业4.0的普及,大数据人才需求量日益大增, 但是大数据处理和我们传统的数据处理存在很大的不同。 而大数据处理的第一个难题就是velocity 难题。也就是说,我们需要非常高效的处理数据。

我们知道任何一个大数据项目的预算是有限的,这其中有一个瓶颈就是计算资源方面的预算,无论是租用公有云平台,还是自己搭建私有云平台吗,都是一笔昂贵的开销,所以如何使用最少的硬件来满足velocity 难题的挑战,是大数据项目成败的关键。

而要破解这个velocity难题,有一个非常重要的要求就是:

1,尽量高的利用CPU资源。

2,尽量低的利用内存资源。

3,在多机的环境下,一定要把每台服务器都充分的使用。

要实现这个技术要求, 我们需要以下方面的专业组件

1,灵活的任务调度框架

2, 基于生产者-消费者模型的任务拆分

3, 服务的异步化协调。

上述的原则虽然讲解起来比较通俗易懂,而实现起来确实比较抽象和艰困的,因为这些设计原则以及设计到大数据方案中最本质的技术难点,我们还是结合原子用例的方式来进行介绍。

2.5 总结

​ 本章重点讲解了本书的章节规划,我们将通过一个构建ETL系统的案例,说明如何通过微服务方案,构建一个高可用的ETL系统。

Starter
MicroServ
Tutorials
Blog