#研发解决方案#共享能力的数屏

创建于2017/7/23 最后更新于2017/7/25

关键词:大数据,监控大屏,实时大屏,大屏,数屏,React,Redux,

提纲:

  1. 自助式报表、魔盒和数屏的产生逻辑

  2. 共享能力

  3. 数屏的技术栈

  4. 数屏的能力


   数屏(DataB) 是数据中心吴佰清组推出的高逼格数据应用,它的目标是通过图形化界面快速搭建可视化监控大屏,数屏可以提供丰富的可视化数据组件,满足业务监控、会议展览、投资咨询等多种业务的展示需求,尤其要满足PC浏览器或者手机浏览器访问下的自适应布局。

 

图1 数屏默认首页

 

   感谢前台的吴佰清,董建昌,刘永飞,赵亮,孙铮,后台的赵兴申,袁丙泽,李少杰,吕中舟,高川川。

   数据中心2016年提供了实时监控大屏,云纵总部门口电视上投放的就是当面付和纵横客的大屏。它的运行原理是,数据库变更订阅中心(背后是canal)-->Kafka-->HBase/Redis/MySQL-->workman--websocket-->大屏。它的问题是每次都得开发,双十二时的多张监控大屏就是如此。所以自然而然产生一个想法:大屏能不能所见即所得,不用或减少开发?

 

0x00,自助式报表、魔盒和数屏为什么诞生?

   2014年时我提出所谓商业智能平台无非这么几个 feature:

  • 自助式报表;

  • 即席查询;

  • 数据可视化(在自助式报表基础上);

  • 数据融合;

  • 数据仓库。

   那时候自助式报表的目标是,可视化自定义报表,并将报表和图表组装成仪表盘。这样可以节省数据中心的开发人力,不用陷入到每张报表都必须开发的泥潭,专注做好数据仓库即可。

   2014年12月12日,少明主持开发的自助式报表一期上线发布,我们认为初期不需要对外提供自助定义报表的能力,能让内部开发人员可视化自定义报表(含图表)、授予其他部门访问权限即可。

 

图2 自助式报表平台-配置报表的向导界面

 

   后来又看到了美团的自助ETL规划,即开放数据的存储和计算环境,让ETL流程的编写和部署Web化,让其他组织里有能力的研发人员,可以自己在数据仓库上部署计算流程,计算自己需要的数据。

   数据中心沿着这两个思路一路走来,现如今都有了对应的解决方案:

  1. 自助式报表,有了;

  2. 即席查询,实际上被数据开放实验室(OpenDataLab)间接又实现了一遍;

  3. 数据可视化,对应于数屏(DataB);

  4. 自助ETL,对应于魔盒(DataCube)。

这些解决方案的目的都是一个:

共享数据,共享计算资源,共享能力。

 

0x01,共享能力

   我们的研发哲学讲求,凡是被不断重复的(coding)过程,就要将其工具化,绑定到自动化流程之中,目的是解放生产力,提高生产效率,为的是让大家不陷入日复一日年复一年的重复性工作里。

   自助式报表对外提供了报表的图形化设计界面。

   数屏对外提供了监控大屏的图形化设计界面。

   魔盒对外提供了 Spark/SparkSQL 等离线计算的图形化操作界面。

   数据开放实验室对外提供了对授权数据的查询、发布和下载的图形化操作界面。

   这样,数据、资源、能力都共享之后,同一个集群,不同研发团队,可以心无旁骛地做更多的事情。

 

0x02,数屏的技术栈

前端:

React+Redux+D3.js+Three.js等。

后端:

Java+HBase。

前端所使用的包清单为:

包名称

描述

QS

发起 Ajax 请求时 JSON 串转换成 form-data

D3

图表绘图工具

Less

CSS 构建工具

Three

3D 绘图工具

Axios

AJAX 请求工具,仅支持 CORS 模式

React

React

Redux

Redux

CountUp

翻牌器

Immutable

数据层有 HASH 值,主要判断组件是否更新

用于加速 React 渲染

Normalize

去掉 input、body 等默认样式值(多浏览器兼容)

Redux-Saga

Redux 流程中的 AJAX 数据请求异步

React-Router

React 路由模块

History

管理路由层会话历史

React-Ace

在线代码编辑器

React-Color

颜色选择器

React-ID-Swiper

分屏滚动

SortableContainer

页面拖拽

Dom-To-Image

基于 Canvas 的 DOM 转换成图片

 

为什么使用Redux?

   大型应用中不同组件共享同一个数据源的情况是常见的,如果都让组件自身来维护一份的数据,很容易造成数据混乱。组件内部也由于夹带着处理数据的逻辑,从而和数据耦合到一起了。

   Redux 框架解决了这个问题,简单来说,它将 React 由父级传递数据,变为了由一个统一的数据源 store 单向地向各个组件传递数据。

   我们通过使用 Redux 能够将数据集中统一管理起来放到组件的最顶层,然后分发给所有组件,每个组件只管渲染,不处理数据逻辑。

 

0x03,数屏的能力

   登录系统之后,点击“新建可视化”大按钮,进入编辑向导。

   第一步需要先选择模板。目前只有两个模板。点击创建大屏即可。

 

图3 新建可视化-选择模板

 

第二步,在大屏编辑界面上,我们可以看到很多组件,如柱状图,饼图,数字翻牌器,折线图,漏斗图,地图,标题,时间器,等等,往大屏上拖拽即可,如下图所示:

 

图4 新建可视化-拖拽组件

 

第三步,选中组件,设置样式。如下图所示,我选中了一个折线图:

 

第四步,选中组件,设置数据源,如下图所示:

 

图6 新建可视化-编辑组件数据源

 

目前,数据源类型有三种:

  1. 静态数据:即按规定格式,写在 JSON 静态数据里,不可变;

  2. API:即自己在远端提供一个返回规定格式 JSON 数据的 Web Service;

  3. 数据库:如下图所示,选好数据库,写标准SQL了:

 

图7 新建可视化-组件数据源-数据库

 

   通过右上角的预览功能,测试通过之后,就可以点击“发布”了。发布的时候需要设定这张大屏的验证密码。

   至此,这张监控大屏就配好了。

 

-EOF-

赠图四枚

语录若干:


Facebook 终于让步了,React 许可又改为标准的 MIT 协议。

但以后 FB 再开源别的什么神器,还有人敢用吗?

信用经不起折腾啊。

/*

React 是 2013 年 5 月开源的。

随着 React 用户的增多,Facebook 在 2016 年7月修改了开源许可协议中的附加专利条款 Additional patent grant。

今年7月16号,Apache 基金会把 Facebook BSD + Patents 加入了黑名单,并从开源项目中移除。

8月份,Facebook 发表了一篇名为《关于React使用许可协议的官方声明》的申明,任何人不能将 React 用于与 Facebook 及其合作公司有直接或间接竞争关系的项目中,否则 Facebook 公司将自动取消其使用许可。

*/


骗中骗,局中局,中国互联网生态:《百合网红娘直言好多用户是假的:天天都有投诉》,前有校园贷、裸条,再有招聘网站沦为传销围猎场,而隐藏在水下的是相亲网站上多年来融合了茶托、酒托、业务推销、网店、微商、借钱、传销等经典骗局。


无极说如果只谈修身治国平天下那是错的,因为这只是后半句话,前面还有半句呢:“物格而后知至。知至而后意诚。意诚而后心正。心正而后身修。身修而后家齐。家齐而后国治。”修身得从最开始的格物致知做起,否则单纯修身也没有意义(闷在小黑屋里修什么身吟诗做赋?)。什么是格物致知?那就是先要了解业务,真刀真枪干起来,看清楚事物的规律,借事修人,借人成事,修身才有意义。

 

-END-

posted @ 2017-09-29 09:51  老兵笔记  阅读(1596)  评论(0编辑  收藏  举报