现在主流开源分布式系统架构都有哪些?

有几个大的维度来区分:

  • 有状态、无状态
  • 重存储还是重计算
  • long service还是批处理。

一些常见的分布式系统大类:

  • 支持持久化存储的分布式存储系统
  • 着重计算的分布式/并行计算框架
  • 分布式消息队列

根据不同的应用的领域,把上述分类细化,常见分布式存储系统分为:

  1. 分布式协同系统(分布式日志复制)
  2. 分布式任务调度框架
  3. 流计算框架
  4. 分布式文件/对象系统
  5. 分布式NoSQL存储
  6. 分布式关系数据库(OLAP、OLTP);
  7. 各种消息队列mq
  8. 分布式机器学习/深度学习训练框架
  • 分布式协调系统(日志复制系统)其实就是paxos算法及其变体的实现,典型的有zookeeper、etcd;一般来说只存少量的元数据信息,重点在高可用强一致,不提供高的through put,是分布式系统不可或缺的组件;
  • 面向非结构化数据的分布式文件/对象系统比较有名的包括Lustre(HPC)GlusterFS(NAS NFS)、HDFS(hadoop)、ceph(虚机块存储)、swift(restful对象存储),各有不同的适用领域。
  • 结构化数据的NoSQL分布式存储,种类和数量最多,按照Martin Fowler的分类,包括Aggregated Oriented NoSQL和图数据库NoSql;Aggregated Oriented NoSQL大致分为3类:
  1. Key-value NoSQL,例如Redis Riak等;
  2. column family NoSQL(wide column store),典型的是Hbase Cassandra
  3. document NoSQL,典型的是MongoDB

开源的图数据库有Neo4j;

  • 很多OLAP分析型数据库是分布式的,例如GreenPlum, CitusDB(都是基于pgSQL);还有一些基于proxy实现关系数据库集群(很多互联网公司都有类似mysql fabric的产品),当然这些并非真正意义上的分布式数据库,可以认为是个sql的分库分表中间件;
  • 还有一类兼容单机数据库,支持强事务的OLTP分布式数据库,统称NewSQL;NewSQL有不同的类别,比如stone braker搞的voltdb,有类似google的Spanner/F1的tidb/cockroachDB,具体对比可以看下CMU Pavlo的newSQL综述文章
  • 开源的消息队列也非常多,应用广泛程度不亚于nosql存储。有些对事物支持比较好的消息队列,例如rabbitmq active mq等;还有很多的kafka,主要做日志处理。消息队列的核心关注点就是一个消息at least once, at most once, only once。
  • 分布式计算 广义的分布式计算的外延很大,可以参考Distributed Computing Paradigms(包含了rpc p2p mpi等分布式通信模型)。AI/Big data兴起后,分布式并行计算的框架开始流行,比如
  1. hadoop/spark等以MapReduce为范式的批处理引擎
  2. flink,storm等流计算/CEP引擎
  3. tensorflow mxnet等ParameterServer范式的DeepLearning 训练框架
  4. 分布式图计算引擎比如pregel等
  5. 面向大数据集的传统ML的分布式训练框架,xgboost/lightGBM/gensim/Angel

一些insight

  • 分布式存储系统有一个常见的CAP理论,从CAP的角度,则可以划分为CP和AP系统。Dynamo可以配置为偏向CAP里面的AP系统,提升Availability,适当牺牲consistence,只要做到eventual consistence即可满足,允许短暂时间的数据失真,但是该系统必须是随时允许用户提交写请求,例如Dynamo应用于amozon的购物车服务。CAP在学术界已经算相对传统的理论,最新研究的热点理论是FIT不可能三角:Fairness,Isolation和Throughput,三者只能满足两条牺牲一条(http://cs-www.cs.yale.edu/homes/dna/papers/fit.pdf)。voltdb属于牺牲fairness,spanner则是牺牲吞吐量。大部分NoSQL存储均属于牺牲隔离性满足公平和性能,而一个严格的分布式OLTP系统,则需要满足隔离性。
  • NoSQL还有一个常见的说法叫BASE(basically available soft state and eventually consistence),总结了NoSQL存储的一些特点:不保证绝对高可用,极端情况下允许返回失败;集群内部存储数据的状态也会存在变化(例如过期老化,副本修复等);最终一致性可定要满足;
  • 分布式并行计算领域也是一个非常热门的话题,比较前沿的工作,例如,Berkeley Rise lab做的面向强化学习的Ray;国内老师木在做的企业级大数据集的深度学习框架,支持模型并行/数据并行的自动调度和资源分配;petuum 的SSP方式ML并行训练;还有比如AutoML/神经网络搜索,由于计算量很大,一般也需要实现分布式计算。整体上可以从两个维度来考虑,一个是并行加速的模型,一个是节点间数据同步的模式。按照并行加速模式,可以分为数据并行、模型并行两种。数据并行比较流行,一般的tf、mxnet、pytorch都支持;模型并行相对少些,不过最新的一些大模型,特别是图相关的模型,已经很难在单个节点计算。同步模式上看,有BSP,半同步、异步多种方式。从内部节点的通信模式上,则有参数服务器/all reduce 等多种通信方式。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值