数据处理服务中间层系统

回忆下算法的几个特征:

  1. 有穷性(Finiteness)
    算法的有穷性是指算法必须能在执行有限个步骤之后终止;
  2. 确切性
    (Definiteness)
    算法的每一步骤必须有确切的定义;
  3. 输入项
    (Input)
    一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
    输出项
  4. (Output)
    一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
  5. 可行性
    (Effectiveness)
    算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步骤,即每个计算步骤都可以在有限时间内完成(也称之为有效性)。

作为一个系统,显然类似

  1. 输入/输出可以理解为业务方需求:他们给我们怎样的数据或者接入系统,我们应当如何处理后输出给他们
  2. 系统要是可行的/确定的,即是能够满足需求的,可能要依赖其它系统,但是一定是要满足输入输出的;在此基础上去追起稳定性,安全性,可靠性等等

如下图,反映了我们的数据处理服务中间层系统

数据处理服务中间层系统

  1. kafka实时流或hive表 通过Druid集群形成Druid datasource;或者是外部直接的注入Mysql,Es等存储系统
  2. 到数据服务后形成所谓物理表的概念

(这期间要提供可配置的任务提交,修改,回跑等等一系列任务相关的操作)

  1. 物理表还是比较底层的,支持多表的join,字段提取,自定义等等 构成逻辑表概念, 普通用户对其可见(即用户所做的数据分析都是针对这个逻辑表的)

  2. 由于不同给用户,即使是同一表,也会拥有不同的权限;所以一个二维表数据是要加上一些 控制的,形成有特定权限的模板概念

  3. 模板有了,就可以查了,这保证用户能看到数据,且是安全的;

  4. 关于数据我们提供两种返回:一是直接返回给业务方;另一种是直接借助可视化平台,让用户自主分析;而这两种都是有模板控制权限的,这里分别称为了查询模板数据模型,权限模板数据模型;两者都是控制对数据的查看/获取权限的,输出不一样,不同的叫法而已

  • 总结起来
  1. 输入:业务方实时或离线数据,自身存储
  2. 输出:有权限控制的可多维分析操作的数据分析系统(直接让你能对输入进行分析处理);或者是直接返回有权限控制的查询数据(业务方怎么处理返回的数据是业务方自己的事情)