如何构建高性能可视化架构?一个交互式实时数据引擎的架构设计

如何构建高性能可视化架构?一个交互式实时数据引擎的架构设计

在分析SecDB、Athena、Quartz几个实时金融与风险分析平台的时候,发现了Perspective——一个FinTech开源基金会FinOS旗下开源的交互式分析和可视化组件库,由摩根大通(J.P.MorganChase)公司开源出去的流式数据可视化组件库。所以,从某种意义上来说也是《金融Python即服务:业务自助的数据服务模式》的后续展开,也可以算是低延迟架构的后续探索。
起初,我只是对其中使用的ExprTk感兴趣,后来发现这个库不简单:使用了C++、Rust、Python、JavaScript、TypeScript等语言。混合语言的项目都特别好玩,于是乎,我便开始探索它了。而我原先感兴趣的x<='abc123'and(yin'AString')or('1x2y3z'!=z)的解析与实现,也就先放在一边了。
开始之前,先复制一下官方的介绍:
Perspective是一个交互式分析和数据可视化组件,特别适合大型数据集或流数据。可以使用它来创建用户可配置的报告、仪表板、Notebook和应用程序,然后在浏览器中独立部署,或与Python和/或Jupyterlab协同部署。
简单来说,就是可以提供实时图形渲染,并支持Jupyter集成。如果是Jupyter的集成,那么从某种来说,它是一种金融工作台,类似于先前定义的架构工作台。
PS:写这样的工具太过复杂了,所以先写篇文章记录一下,等未来有空的时候,再写一个。
初步绘制的Perspective架构图如下所示:
在JavaScript侧,系统可以分为三层:
数据引擎。使用C++与一系列的数据结构库等,进行封装,并提供数据操作API。通过Emscripten构建和封装,以提供WASM接口。
wrapper层。提供对于数据引擎的再次封装,以使API更符合日常的编程习惯,诸如于table、view等,还提供worker、websocket等封装。
UI组件。viewer分为d3fc、datagrid、openlayers等不同的组件,大部分使用纯Rust编写,提供WebComponentAPI等。
在Python侧,除了相同的UI部分,还需要构建Jupyter插件:
数据引擎。结合pybind11来提供FFI(ForeignFunctionInterface,外部函数接口)能力。
wrapper层。结合了Python数据科学生态中的Pandas、Numpy等工具,来进行数据转换。
UI层。结合Lumino对UI组件进行封装。
其中,比较有意思的是ApacheArrow,提供了跨语言的数据支持。
对于将密集型计算下沉到WASM部分,相信大家都比较熟悉了。对于常规的WASM使用来说,需要平衡开发效率和运行效率,FFI在调用的时候也存在性能损失。也因此,一种比较理想的方式是将数据操作,全部委托给C++部分去实现。
如上面的架构图所示,Perspective的计算部分,主要是Table对象实现的,它是Perspective中的基本数据容器。Table是有类型的——它们有一组不可变的列名,每个都有一个已知的类型。每当有对数据的处理时,都会通过WASM来处理。过滤与计算,在这里也是一个非常有意思的问题,即上面说到的ExptTk,便是用来做这部分计算用的。
值得注意的是,Perspective之所以采用C++来构建WebAssembly的方式,大概率是因为原有的一部分基础设施是基于C++的。与此同时,原先采用的是C++的UI,以提供更好的性能。不过,Perspective提供的WASM包,大概有40M左右,在初始化的时候相对慢了一点。
可是,又为什么是Table呢?这就得从ApacheArrow提供的能力说起。
对于序列化的性能优化,相信大家都比较熟悉了。通常来说一次数据传输操作包括:
以某种格式序列化数据
通过网络连接发送序列化数据
在接收端反序列化数据
于是乎,在很多系统中(如ArchGuard),序列化就是系统的瓶颈。既然序列化会带来问题,那么就不应该有序列化。于是乎,我们就可以在上面的架构图中,看到两个工具:
ApacheArrow。一个直接针对数据分析需求的数据层,提供分析所需的数据类型的综合集合。除了语言无关的标准化列式存储格式之外,它还包含三个特性:零拷贝共享内存和基于RPC的数据移动、读取和写入文件格式(如CSV、ApacheORC和ApacheParquet)、内存分析和查询处理。
FlatBuffers。同样的,无需解析/解包即可访问序列化数据。
不过呢,FlatBuffers只是Arrow用来序列化实现Arrow二进制IPC协议所需的模式和其他元数据。随后,我们就可以使用Table来调用Arrow的API来进行计算。
ApacheArrow的相关介绍可以见官方文档:https://arrow.apache.org/
简单来说,只要是以下的两个特点:
无框架。对于一个以渲染为主的项目来说,Perspective不采用任何框架。从某种意义上来说,更小的包大小,也带来了更好的性能。除此,作为一个纯粹的webcomponents组件,它可以非常容易与几大主流框架结合到一起。
虚拟渲染的Table。在Table显示上,Perspective采用的是JMPC的regular-table,同样也是WebComponents组件,可以直接引入项目使用。并且支持虚拟渲染,即仅显示可视区域的数据,减少DOM节点以带来更好的性能。
对于WebComponent和CustomElement部分,相信大家都比较熟悉了。它们使用起来和正常的HTML区别不大,如下是一个不同UI组件之间的关系示例:

每一个组件分别在不同的工程中,倒是挺componentless的。一旦数据发生变化的时候,就会从viewer侧,调用update_and_render从而更新UI部分的render。
参考材料:
《ApacheArrow和Java:大数据传输快如闪电》
《Perspective.js》官网

主题测试文章,只做测试使用。发布者:最新稳定辅助网,转转请注明出处:https://www.744broad.com/13975.html

(0)
上一篇 2023年3月4日 上午2:53
下一篇 2023年3月4日 上午2:58

相关推荐

  • 彩钢瓦翻新配套的施工工艺流程

    彩钢瓦翻新配套的施工工艺流程 彩钢瓦绝大部分都是暴露在自然环境下,要经受严酷气候的考验,表面长时间使用难免会出现不同程度的腐蚀生锈、渗漏等问题,使用时间长了,为了延长其使用寿命,更好的方法是进行彩钢板翻新,喷涂水性彩色瓦翻新漆。彩钢瓦又称彩色压型瓦,是由彩色涂层钢板经辊压冷弯制成各种波型的压型板,巨大部分都是工业厂房、大型仓库、等的屋顶和墙面,彩钢瓦的优点是…

    RUST资讯 2023年2月23日
    80
  • 新突破!杨凌专家团队在小麦条锈菌致病机制研究方面取得重要进展

    新突破!杨凌专家团队在小麦条锈菌致病机制研究方面取得重要进展 近日,西北农林科技大学植物保护学院植物免疫研究团队在双一流期刊、植物科学Top期刊《NewPhytologist》(IF=7.299)发表了题为“StriperusteffectorPst18363targetsandstabilizesTaNUDX23thatpromotesstriperust…

  • 人人生为网红(内含福利)

    人人生为网红(内含福利) 按:直播有多火?《经济学人》2月刊的一篇文章告诉我们中国的直播狂热已经深入三线城市和偏远农村地区。读完本文,你将了解到直播在中国的发展历史、日趋流行的现状以及面临的挑战和机遇。值得思考的是:和直播的未来一样,很多行业都将在大数据时代发生变革,留给普通草根的机会将越来越少了,你所在行业的未来在哪里?(文末有福利,关注微信公号:关于写作…

  • Linux下的搜索工具,你知道几个?

    Linux下的搜索工具,你知道几个? 在Linux命令行下进行文本关键字的搜索,大家肯定第一时间会想到grep命令。grep命令确实十分强大,但如果需要用到它更加灵活的功能时,可能命令就会显得十分复杂。于是,为了简化grep的语句并达到同等效果,很多业内高手开发出了很多同样强大的工具,在某些程度上甚至可以替代grep。下面我就给大家介绍5个常用的命令行搜索工…

    RUST资讯 2023年2月19日
    70
  • 2022如何学习golang,为什么学习它

    2022如何学习golang,为什么学习它 什么是golanggolang是一门由谷歌的三个大神,罗伯特格瑞史莫、罗勃派克及肯汤普逊创建的静态类型的,编译的,支持高并发的编程语言。接近c语言的语法,但是具有垃圾回收功能,采用CSP模型的并发方式,通过管道解决信息传输问题是go语言的特性。为什么学习它Go开发人员的普遍薪水很高。当然,这也和你的工作经验和具体能…

    RUST资讯 2023年2月16日
    80
  • 更适合玩家的顶级游戏卡!iGame RTX 3080Ti Advanced OC性能测试

    更适合玩家的顶级游戏卡!iGame RTX 3080Ti Advanced OC性能测试 2021年6月2日,GeForceRTX3080Ti解禁,一款可能更适合游戏玩家的旗舰显卡正式亮相。iGameRTX3080TiAdvancedOC成为本次测试对象,对于一款除显存容量外其他规格都十分接近RTX3090的存在,想必也让玩家非常好奇其硬件规格与实际性能差距…

    RUST资讯 2023年2月26日
    50
  • GitHub 发布 2019 年年度报告,用户超 4000 万

    GitHub 发布 2019 年年度报告,用户超 4000 万 GitHub发布了2019年年度报告《TheStateoftheOctoverse》,下边来看看一些主要数据。全球用户超过4千万目前GitHub上有超过4000万开发人员,其中有80%来自美国以外的地区。去年一年里有1000万新加入的开发者,2019年创建第一个repo的人比2018年增加了44…

    RUST资讯 2023年2月18日
    60
  • 精品推荐—古钱币,粮票

    精品推荐—古钱币,粮票 清代钱币以光绪元宝为最,光绪元宝是其中收藏的大类,历来都受到很多藏家的关注,光绪元宝是清朝光绪年间流通的货币之一,由两广总督张之洞率先引进英国铸币机器铸造银元和铜元,之后各省纷纷仿效,由于当时时局不稳定,因此几乎在全国的各个省都有专门的货币铸造厂,因此我们会发现那个时代的货币上都有鲜明的铸字,共有十九个省局铸造。除中央户部,地方省所铸…

    RUST资讯 2023年2月28日
    40
  • 爱英语学习时刻

    爱英语学习时刻 Aaloneadj./adv.独自的;单独的bananan.香蕉a/anart.一;任一;每一alongprep.沿着/adv.一起bankn.银行;岸abilityn.能力,能耐;才能aloudadv.大声地*barkvt.狗叫/n.树皮;毛皮ableadj.能,有能力的,能干的alreadyadv.已经baseballn.棒球abouta…

    RUST资讯 2023年2月22日
    70
  • 《辐射4》中的彩蛋:向那些经典致敬

    《辐射4》中的彩蛋:向那些经典致敬 身为宅男极客圣经般的存在,《辐射4》自身也在疯狂引经据典,内容涉及电影、小说、美剧、游戏……全球玩家对这些彩蛋进行了大力发掘,来看看我们收集的玩家发现吧。在CIT废墟有一块黑板,画着《心灵捕手》马特达蒙在黑板上画的图形。这群诡异的猴子是向《玩具总动员3》致敬,同样的猴子在《玩具总动员3》中给胡迪找了…

    RUST资讯 2023年2月13日
    70
关注微信