开发者社区 > 大数据与机器学习 > 实时数仓 Hologres > 正文

一个典型的 HSAP 系统是由哪些架构组成?

已解决

一个典型的 HSAP 系统是由哪些架构组成?

展开
收起
游客lmkkns5ck6auu 2022-09-26 22:18:14 394 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    存储计算分离:所有的数据存储在一个分布式文件系统中,我们以数据分片的方式来扩 展系统,Storage Manager 会管理这些数据分片(Shard),Resource Manager 管理系统 的计算资源,保证系统能够处理高吞吐的数据写入和查询的需求。这种架构能够快速应对工 作负载的变化,当查询负载变大需要更多的计算资源的时候可以扩展计算资源,当数据量快 速增长的时候可以快速扩展存储资源。存储计算分离的架构保证了不需要等待移动 / 拷贝数 据就能快速完成这些操作。这种架构较大地简化了运维,为系统的稳定性提供了保障。

    统一的实时存储:为了能够支持各种查询模式,统一的实时存储层至关重要。查询大体 可以分为两类,一类是简单的点查询(数据服务类的大多是这类),另一类是扫描大量数据 的复杂查询(分析类的大多是这类),当然这是一个连续变化的过程,很多查询介于两者之 间。这两种查询模式对数据存储也提出了不同的要求。行存储能够比较高效地支持点查询, 而列存储在支持大量扫描的查询上有明显的优势。我们可以通过类似 PAX 的方式在行存和列 存之间做一个折衷,付出的代价是可能在点查和扫描数据的场景都不能获得最佳的性能。我 们希望在两种场景都做到最优,所以在系统里同时支持了行存和列存,用户可以根据场景选 择每个表的存储方式。对同时有两种需求的表我们通过索引的抽象允许用户同时选择两种存储,系统通过索引维护的机制保证两者间的一致性。在实践中我们发现这种设计带来的效率 和灵活性能够更好地支持业务。

    工作负载的隔离:系统在混合工作负载下的 SLO 是通过调度来保证的。在理想情况下, 一个大查询就应该能把所有的资源都利用起来。而当有多个查询同时运行的时候,这些查询 需要公平地共享资源。由于服务型的查询通常比较简单从而需要的资源比较少,这种公平调 度的机制能够保证服务型查询的延迟即使在有复杂的分析型查询的情况下仍然能够得到保 障。作为一个分布式的系统,调度可以分为分布式和进程内两部分。Coordinator 会把一个 查询分解为多个任务,这些任务被分发到不同的进程,Coordinator 需要采取一定的策略保 证公平性。同样重要的是,在一个进程内我们也需要让不同任务公平地分享资源。由于操作 系统并不理解任务间的关系,所以我们在每个进程里实现了一个用户态的 Scheduler 去更灵 活地支持工作负载的隔离。

    系统的开放性:很多业务已经使用了其他存储平台或者计算引擎,新的系统必须考虑和 已有系统的融合。对时效性要求高的查询,计算和存储的一体化能够带来明显的优势。但是 对时效性不高的离线计算,存储层可以提供统一的接口开放数据,这种开放性允许其他引擎 把数据拉出去处理能够赋予业务更大的灵活度。开放性的另外一面是对存储在其他系统中数 据进行处理的能力,这个可以通过联邦查询的方式去实现。以上内容摘自《阿里云实时数仓Hologres最佳实践合集》电子书,点击https://developer.aliyun.com/topic/download?id=996 可下载完整版

    2022-09-26 23:09:40
    赞同 展开评论 打赏

本技术圈将为大家分析有关阿里云产品Hologres的最新产品动态、技术解读等,也欢迎大家加入钉钉群--实时数仓Hologres交流群32314975

相关电子书

更多
MaxCompute Serverless 架构演进 立即下载
阿里云消息队列的 Serverless架构演进 立即下载
青团社云原生架构实践—亿级灵活用工平台的架构实践 立即下载