searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

大数据存算系统架构:统一分布式存储底座+应用层 VS 独立专精系统

2024-05-31 05:34:40
10
0

大数据存算系统因其承载海量的存储和大规模的计算,纷繁复杂的业务应用需求,设计一套高性能、高可靠、高扩展的分布式系统难度极大,业界主流的架构有两大模式:统一分布式存储底座+应用层 VS 独立专精系统,现简要分析对比。

统一分布式存储底座+应用层

存储底座可以统一的部分原理基础是Kafka创始人《I Heart Logs 》文中总结的日志(Append only data stream/file,类commit log/journal/WAL)即数据,日志为中心的思想,日志通常是只往后追加数据,暗含数据产生的逻辑先后顺序,并且也是所有分布式系统需要解决的根本问题,如故障恢复、数据同步、数据一致性等等。而所有面向业务的应用层都是基于这个日志数据之上建立的索引,如Key-Value/OLAP Store、搜索引擎等。

日志系统可以作为搭建复杂分布式存算系统的基础,再叠加面向业务场景优化的应用层,通过这样2层的抽象解耦,使设计复杂度大幅降低。统一的日志系统底座可以:

  • 序列化并发更新,处理数据一致性问题
  • 支持节点间数据复制
  • 向外部系统提供事务提交的语义
  • 向外部系统提供日志订阅功能
  • 向故障节点提供故障恢复能力
  • 解决数据负载在节点间的平衡问题

简化的架构为2部分,Log和Serving Nodes:

simplified-log-centric-data-system

所有的数据直接写入 Log (或被 Serving Nodes 代理),然后所有的 Serving Nodes 通过订阅 Log 来建立索引,向外提供数据服务。这种设计就是以日志为中心 (log-centric) 的设计:

log-centric-infra-stack

业界有不少比较成功的开源案例,如HBase(KV on HDFS),Pulsar(Message queue),SQL on Hadoop(Apache Hive/Impala/Drill, Presto/Trino),Ceph/Ozone等等;大型云厂商谷歌GCP,国内友商的Pangu

此架构2层自然是存算分离的,在系统规模和扩展性上有较大优势。

独立专精系统

相比一统底座的架构,面向较单一具体业务场景的独立专精系统在开源界也是大行其道,包括消息队列Kafka,KV系统Cassandra,OLAP系统Doris等,局部也有WAL之类机制,但其数据可靠一致性,更多依赖不同的replica策略实现,也未较严格的分层设计实现,但这类系统可更专更深度的优化,在存储效率、计算性能和时效性等方面有优势。

  目前,两类系统也在一些技术实现上较好的融合,希望既有统一架构带来的研发难度和成本的降低,又更好满足专有业务的需求。

0条评论
0 / 1000
阿德
4文章数
1粉丝数
阿德
4 文章 | 1 粉丝
原创

大数据存算系统架构:统一分布式存储底座+应用层 VS 独立专精系统

2024-05-31 05:34:40
10
0

大数据存算系统因其承载海量的存储和大规模的计算,纷繁复杂的业务应用需求,设计一套高性能、高可靠、高扩展的分布式系统难度极大,业界主流的架构有两大模式:统一分布式存储底座+应用层 VS 独立专精系统,现简要分析对比。

统一分布式存储底座+应用层

存储底座可以统一的部分原理基础是Kafka创始人《I Heart Logs 》文中总结的日志(Append only data stream/file,类commit log/journal/WAL)即数据,日志为中心的思想,日志通常是只往后追加数据,暗含数据产生的逻辑先后顺序,并且也是所有分布式系统需要解决的根本问题,如故障恢复、数据同步、数据一致性等等。而所有面向业务的应用层都是基于这个日志数据之上建立的索引,如Key-Value/OLAP Store、搜索引擎等。

日志系统可以作为搭建复杂分布式存算系统的基础,再叠加面向业务场景优化的应用层,通过这样2层的抽象解耦,使设计复杂度大幅降低。统一的日志系统底座可以:

  • 序列化并发更新,处理数据一致性问题
  • 支持节点间数据复制
  • 向外部系统提供事务提交的语义
  • 向外部系统提供日志订阅功能
  • 向故障节点提供故障恢复能力
  • 解决数据负载在节点间的平衡问题

简化的架构为2部分,Log和Serving Nodes:

simplified-log-centric-data-system

所有的数据直接写入 Log (或被 Serving Nodes 代理),然后所有的 Serving Nodes 通过订阅 Log 来建立索引,向外提供数据服务。这种设计就是以日志为中心 (log-centric) 的设计:

log-centric-infra-stack

业界有不少比较成功的开源案例,如HBase(KV on HDFS),Pulsar(Message queue),SQL on Hadoop(Apache Hive/Impala/Drill, Presto/Trino),Ceph/Ozone等等;大型云厂商谷歌GCP,国内友商的Pangu

此架构2层自然是存算分离的,在系统规模和扩展性上有较大优势。

独立专精系统

相比一统底座的架构,面向较单一具体业务场景的独立专精系统在开源界也是大行其道,包括消息队列Kafka,KV系统Cassandra,OLAP系统Doris等,局部也有WAL之类机制,但其数据可靠一致性,更多依赖不同的replica策略实现,也未较严格的分层设计实现,但这类系统可更专更深度的优化,在存储效率、计算性能和时效性等方面有优势。

  目前,两类系统也在一些技术实现上较好的融合,希望既有统一架构带来的研发难度和成本的降低,又更好满足专有业务的需求。

文章来自个人专栏
云原生架构
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0