计算密集型分布式内存存储和运算平台架构

author author     2022-08-21     182

关键词:

避嫌声明:所有图文都是根据自己的理解原创,且已离开这家公司三年以上,不存在保密协议,写此文只是用来分享知识、探究不足。

牢骚:本来想弄个ppt交互展示的,不过我的js权限还没批。。。

 

1. 相关概念

1.1 内存数据库

关系型数据库处理永久、稳定的数据,内存数据库就是将其数据放在内存中,活动事务只与内存数据打交道,重新设计了体系结构并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比磁盘数据库要快很多,一般都在10倍以上。但它不容易恢复,可能暂时不一致或非绝对正确的,要求较大的内存量,而64位操作系统可以支持更大的地址(2T),为内存数据库的实现提供了可能。

1.2 计算密集型

计算密集型是指,每个请求的命令中,大都包含不同的参数值,很难重用前一次计算的结果,所以要按照约定的业务逻辑重新计算,并按照约定的格式返回数据,且计算在总耗时中占比较大。

2. 数据存储

2.1 DB

数据存储在DB中,直接访问数据库。但数据库压力太大,系统瓶颈明显。

 

2.2 DB + All In One Cache

将DB中的数据加载到节点的内存中,并定时从数据更新日志库中读取来更新内存的数据,极大减轻数据库的压力。

但随着数据的膨胀,节点启动加载慢,升级时间长,宕机恢复难等。

2.3 DB + File + All In One Cache

每天晚上从DB读取数据,生成带有数据同步标识的数据文件,分发到各个服务器节点。节点启动时,直接从本地数据文件加载,大大提高了启动速度。

但随着DB中数据的更新,实例间数据不一致性严重。

2.4 DB + File + All In One Cache + AMQ Sync

通过DP服务定时监控数据更新日志库中的记录,通过AMQ发布给订阅的每个节点,节点根据当前同步的标识决定是否处理消息记录,根据消息记录的属性执行具体的增删改操作,使得数据的一致性较好。

但单个节点内存过大,大数据量时仍会变慢,卡顿现象频繁且耗时较长。

2.5 DB + File + Distributed Cache + AMQ Sync

按照业务将数据拆分到不同的节点上,通过管理节点分配任务,使得内存大小可控,卡顿频率和耗时明显减少。

但生产bug、业务逻辑变更或新增需求时,只能重启服务,不够灵敏,可维护性差。

 2.6 DB + File + Distributed Cache + AMQ Sync +CodeDom

利用CodeDom实现动态编译,在运行时增加或修改业务逻辑。

另外,可以为每个节点对应一个独立的DataProcess。

3. 数据运算

3.1 存储过程

将业务逻辑写到存储过程中,难以维护,请求排队现象严重。

3.2 内存运算

通过缓存节点的中间层对外提供服务,在缓存数据的基础上,提供:获取单个运算结果的API(对外),获取数据集合的Enumerator(对内),获取数据运算结果集合的Report(对外),内存读取速度较快。

但很难有效的负载均衡,无法高效并行。

3.3 负载均衡+并行

通过Master节点,将请求分给对应的若干工作节点并行处理,再对结果进行合并和归纳,返回给客户端,实现高效并行处理。

延伸:数据运算的耗时,大都在查找、比较、排序、序列化、压缩、加密处理等,根据性能分析逐个调优。

4. 系统调优

4.1 GC

当内存越大时,二代回收耗费几秒甚至十几秒,会挂起所有线程而使节点在这段时间内不能正常工作。

1.可设置多核并发的Server GC模式,为每个核创建单独的大小堆和GC线程,减少回收的粒度和影响。

2.监控将要发生回收的工作节点,通知Mater并暂停该工作节点提供服务,直至GC完成。

4.2 Cache

1.运行时内存的增加,主要是因为创建了很多临时对象。所以,要尽量少用Linq,尽量避免创建不必要的对象。
2.频繁使用的字符串可尝试采用驻留机制。
3.将不常用的历史数据以文件方式存储和更新而不放入内存。
4.业务拆分减少每个节点要加载的数据。
5.尽量避免创建大对象,必要时通过弱引用+延迟加载处理大对象。

 

 

 

cuda编程入门极简教程(转)(代码片段)

...看到GPU包括更多的运算核心,其特别适合数据并行的计算密集型任务,如大型矩阵运算,而CPU的运算核心较少,但是其可以实现复杂的逻辑运算,因此其适合控制密集型任务。另外,CPU上的线程是重量级的,上下文切换开销大,... 查看详情

大数据架构设计与数据计算流程

大数据架构设计Hadoop有3个核心组件:分布式文件系统HDFS;分布式运算编程框架MapReduce;分布式资源调度平台YARN。HBase,HadoopdataBase,基于HDFS的NoSQL数据库,面向列式的内存存储,定期将内存数据刷新到... 查看详情

hadoop和spark的区别

...综合评价上要优于第一代的hadoop。计算不同spark和hadoop在分布式计算的底层思路上,其实是极为相似的,即mapreduce分布式运算模型:将运算分成两个阶段,阶段1-map,负责从上游拉取数据后各自运算,然后将运算结果shuffle给下游... 查看详情

spark和hadoop的区别

...综合评价上要优于第一代的hadoop。计算不同spark和hadoop在分布式计算的底层思路上,其实是极为相似的,即mapreduce分布式运算模型:将运算分成两个阶段,阶段1-map,负责从上游拉取数据后各自运算,然后将运算结果shuffle给下游... 查看详情

spark和hadoop的区别

...综合评价上要优于第一代的hadoop。计算不同spark和hadoop在分布式计算的底层思路上,其实是极为相似的,即mapreduce分布式运算模型:将运算分成两个阶段,阶段1-map,负责从上游拉取数据后各自运算,然后将运算结果shuffle给下游... 查看详情

spark和hadoop的区别

...综合评价上要优于第一代的hadoop。计算不同spark和hadoop在分布式计算的底层思路上,其实是极为相似的,即mapreduce分布式运算模型:将运算分成两个阶段,阶段1-map,负责从上游拉取数据后各自运算,然后将运算结果shuffle给下游... 查看详情

云知声atlas超算平台:基于fluid+alluxio的计算加速实践(上)

...作者简介吕冬冬云知声超算平台架构师,负责大规模分布式机器学习平台架构设计与功能研发,负责深度学习算法应用的优化与AI模型加速。研究领域包括高性能计算、分布式文件存储、分布式缓存等。有多年的云原生开... 查看详情

什么是云计算架构和组件

...发生故障,另一个单元将自动接管。用户磁盘空间在分布式文件系统上分配,而另一个重要组件是资源分配算法。云计算是一个强大的分布式环境,它在很大程度上依赖于强大的算法。云计算架构云计算的体系结构包... 查看详情

极客天成scaleflash助力2023亚洲超算大会(sca2023)

...性能,更绿色的高性能计算基础设施、更先进的数据密集型研究和跨境合作正在推动HPC在刚刚摆脱疫情的世界中的应用。RDMA全闪分布式存储是一种基于远程直接内存访问(RDMA)技术和全闪存的分布式存储系统。它通... 查看详情

hadoop的简单概述以及架构(代码片段)

...概述以及架构1、hadoop概述:hadoop是一个适合海量数据分布式存储和分布式计算的平台。2、hadoop是一个统称,hadoop主要包含三大组件:(1)hdfs:是一个分布式存储框架,适合海量数据存储(2)m... 查看详情

惠普架构师解密从分布式到微服务,深入理解rpc内存存储检索等问题

...,受到了广大架构师与开发者的高度关注。内容简介分布式架构与微服务平台是当今IT界的关键 查看详情

分布式基础-存储引擎

...能和可以干什么,不可以干什么的问题;本文参考《数据密集型应用系统的设计》和《大规模分布式存储系统原理解析和架构实战》。存储系统的功能做机制的简化就是存储和查询,如果从一般功能出发就是基础的增删改查。从... 查看详情

31学习大数据平台hadoop的基本概念和架构,包括hdfsmapreduce(代码片段)

...基本概念和架构Hadoop概念Hadoop是一个开源的、基于Java的分布式计算框架,主要用于大规模数据集的存储和处理。它包括两个核心组件:Hadoop分布式文件系统(HadoopDistributedFileSystem,HDFS)和基于MapReduce的分布式... 查看详情

hadoop是啥:分布式系统基础架构

Hadoop是一个由一家软件基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。它实现了一个分布式文件系统,简称HDFS。HDFS有高容错性的... 查看详情

alluxio增强spark和mapreduce存储能力

Alluxio的前身为Tachyon。Alluxio是一个基于内存的分布式文件系统;Alluxio以内存为中心设计,他处在诸如AmazonS3、ApacheHDFS或OpenStackSwift存储系统和计算框架应用ApacheSpark或HadoopMapReduce中间,它是架构在底层分布式文件系统和上层分布... 查看详情

ceph分布式存储系统架构研究综述

...发的。当时他发现元数据的查询和维护严重影响了Lustre等分布式文件系统的性能和扩展性,因此设计了一种利用算法来确定数据与存储节点对应关系的方法CRUSH。2015年5月发布的Linux内核2.6.34已开始支持Ceph。Weil也成立了IntTank... 查看详情

阿里飞天云平台架构简介

飞天是由阿里云开发的一个大规模分布式计算系统,其中包括飞天内核和飞天开放服务。飞天内核负责管理数据中心Linux集群的物理资源,控制分布式程序运行,隐藏下层故障恢复和数据冗余等细节,有效提供弹性计算和负载均... 查看详情

mapreduceonyarn的执行流程

...平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。 Yarn的架构如下图所示:   从Yarn的架构图来看,他主要由ResourceManag... 查看详情