[架构设计]一个简单的数据中心的设计

636 阅读2分钟

前言

最近做了一个小需求,主要功能是提供一个数据中心的能力,因为之前的平台没有数据服务的能力,所以酒趁这个机会在一期讲数据中心的架子简单搭起来。

分析

简单来讲,需求就是有若干个维度的数据,搭配上若干个维度的数据类型,为了不踩红线,举个类似的例子。

有三种数据主体的数据,

  • 班级
  • 课程
  • 学校

有若干对于数据主体的数据查询类型

  • 学生画像(包括上课男女比例,不同年龄段比例等)
  • 签到情况(学生签到情况,某个课程的签到情况等)
  • 课程排班推荐(根据不同课程热门情况不同,进行课程的推荐)
  • .....

架构的设计

首先,从请求到数据返回按层次分可以分为四层

  • 接口层
  • 数据主体
  • 数据处理
  • 数据源

其中数据源随着不同数据处理的类型不同,可能会散落在各处。接口层统一收口,这两个地方操作的空间不大,也没有太大的意义,保持各个数据源有一个接口层即可。

数据主体和数据处理部分是一种多对多的关系,班级可以有学生画像,也可以有签到情况,学生画像也可以应用于课程的主体,所以,如果完全打散,针对不同链路都做单独实现类来处理,实在是太过于麻烦。

所以,处理方式如下

  • 接口层遍历所有的数据主体处理器,遍历执行请求。
  • 数据主体层获取可以处理当前数据主体的数据处理器,遍历处理请求。

这样,通过两个接口,把接口层调用数据主体,以及从数据主体调用数据处理解耦。 其中还有若干细节 1、通过依赖注入获取下游的所有实现类 2、通过注解在数据处理类上标记其可以处理的数据主体。 3、在数据主体的抽象接口下加了一层抽象父类,同时继承spring的初始化bean接口,可以在依赖注入完成后构建一个map,用于给子类快速获取支撑其数据主体的数据处理类

以上。