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

66人阅读 评论(0) 收藏 举报
分类:
分布式计算
Hadoop
分布式系统

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

关注者
950
被浏览
112,808

14 个回答

默认排序
68 人赞同了该回答
分布式系统是一个非常广泛的概念,它最终要落实到解决实际问题上,不同的问题有不同的方法和架构。所有的开源软件都是以某个应用场景出现,而纯粹以“分布式”概念进行划分的比较少见。
但如果以算法划分,到能分出几类:
1.以Leader选举为主的一类算法,比如paxos、viewstamp,就是现在zookeeper、Chuby等工具的主体
2.以分布式事务为主的一类主要是二段提交,这些分布式数据库管理器及数据库都支持
3.以若一致性为主的,主要代表是Cassandra的W、R、N可调节的一致性
4.以租赁机制为主的,主要是一些分布式锁的概念,目前还没有看到纯粹“分布式”锁的实现
5.以失败探测为主的,主要是Gossip和phi失败探测算法,当然也包括简单的心跳
6.以弱一致性、因果一致性、顺序一致性为主的,开源尚不多,但大都应用在Linkedin、Twitter、Facebook等公司内部
7当然以异步解耦为主的,还有各类Queue
。。。。
684 条评论
分享
收藏感谢
27 人赞同了该回答

有几个大的维度来区分:

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

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

a)支持持久化存储的分布式存储系统;

b)着重计算的分布式计算框架;

c)分布式消息队列

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

  1. 分布式协同系统(分布式日志复制)
  2. 分布式任务调度框架
  3. 流计算框架
  4. 分布式文件/对象系统
  5. 分布式NoSQL存储
  6. 分布式关系数据库(OLAP、OLTP);
  7. 各种消息队列mq
  • 分布式协调系统(日志复制系统)其实就是paxos算法及其变体的实现,典型的有zookeeper、etcd;一般来说只存少量的元数据信息,重点在高可用强一直,是很多分布式系统不可或缺的组件;
  • 开源的分布式文件/对象系统比较有名的包括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;

  • 分布式关系数据库(SQL完全兼容)分析型的有GreenPlum(商业版的OLAP很多,开源的少),事务型开源的有Voltdb;还有一些基于proxy实现关系数据库集群(很多互联网公司都有类似mysql fabric的产品),当然这些并非真正意义上的分布式数据库;
  • 还有一些基于开源的NoSQL分布式存储基础上研发的分布式OLTP数据库(类似spanner),数据模型和事务支持,介于关系数据库和NoSQL之间,例如Atlasdb(基于cassandra)、cockroachdb(仿照F1)等。分布式OLTP的发展还不是太成熟,还有一个calvin的项目(非2PC)值得关注,基于VLDB2014年的论文;国内一有个TiDB的项目,也比较值得关注
  • 开源的消息队列也非常多,应用广泛程度不亚于nosql存储。有些对事物支持比较好的消息队列,例如rabbitmq active mq等;还有很多的kafka,主要做日志处理。消息队列的核心关注点就是一个消息at least once, at most once, only once。
  • 分布式计算框架,典型的有基于mapreduce的hadoop,基于内存计算的spark。基于mapreduce的计算框架是基于有限数据集,而面向无限数据集的流计算矿建也比较多,例如storm,Flink,samza等等也不少。
  • 面向机器学习的分布式计算框架tensorflow mxnet caffeine等(需要支持GPU计算框架cuda等),架构特点跟其他计算框架有很大不同,主要建模对象是人工神经网络,需要进行大量的浮点运算和迭代运算,往往会采用一个全局的参数服务器存放迭代计算的中间结果。

分布式存储系统有一个常见的CAP理论,从CAP的角度,则可以划分为CP和AP系统。Dynamo可以配置为偏向CAP里面的AP系统,提升Availability,适当牺牲consistence,只要做到eventual consistence即可满足,允许短暂时间的数据失真,但是该系统必须是随时允许用户提交写请求,例如Dynamo应用于amozon的购物车服务。

CAP在学术界已经算相对传统的理论,最新研究的热点理论是FIT不可能三角:Fairness,Isolation和Throughput,三者只能满足两条牺牲一条(cs-www.cs.yale.edu/home)。voltdb属于牺牲fairness,spanner则是牺牲吞吐量。大部分NoSQL存储均属于牺牲隔离性满足公平和性能,而一个严格的分布式OATP系统,则需要满足隔离性。

还有一个常见的说法叫BASE(basically available soft state and eventually consistence),总结了NoSQL存储的一些特点:不保证绝对高可用,极端情况下允许返回失败;集群内部存储数据的状态也会存在变化(例如过期老化,副本修复等);最终一致性可定要满足;

总而言之,针对不同的应用场景,不同的数据模型,不维度的tradeoff,各大互联网公司的码农了造了很多分布式存储的轮子。总起来的思想都是,需要持久化存储的数据状态,交给一个分布式存储系统来做,应用开发者,除了关注业务逻辑之外,需要在不同的分布式存储中选择一个适合自己的轮子,特别是数据一致性、持久性和性能之间的trade off。

276 条评论
分享
收藏感谢收起
18 人赞同了该回答
功能分: olap, oltp, 分布式日志,share-nothing, numa, MapReduce, DAG.
数据分:表格,对象,文件,关系。
架构分: 类bigtable, 类dynamo
日志复制分: primary-backup,gossip,quorum.同步,半同步,异步。
数据切分分:hash,range
workload分:很多种
membership分:自己选主,主控节点选主,dlm选主。
CAP折衷分:强一致性牺牲可用性,最终一致性更高的可用性。
18添加评论
分享
收藏感谢
29 人赞同了该回答

我的 gmail 里面现在还有一封草稿,是发给 erlang-china 社区的。内容是我一直想不明白,为什么 hadoop 成了主流的分布式计算架构,而不是 Erlang/OTP。后来觉得这种比较贴太多了,所以没有发出去。

我认为 Erlang/OTP 系统是最优秀的分布式架构。它的每个特性----变量不变、轻量线程、IPC/RPC 机制、闭包、代码热升级、监控树模型、world等等等等----都是为了分布与并发准备的。用 Erlang 做分布式架构实在太轻松了,开发效率是 C++ 开发的近十倍

国内很多项目也纷纷让 Erlang 上马,但基本上都秘而不宣。Erlang 社区也曾经一度活跃,到现在,已经沉寂了快两年了。我也很期待像某人解释的那样,兴起必然伴随着跌宕起伏,金子迟早会发光的。
2914 条评论
分享
收藏感谢
7 人赞同了该回答
高性能rpc服务框架,zookeeper服务注册和发现,配置中心这几个是重点,其他的比如MQ和缓存服务
7添加评论
分享
收藏感谢
5 人赞同了该回答
粗略一看二郎的语法,顿时奔溃了
能流行起来的东西,往往是因为他简单易用
5添加评论
分享
收藏感谢
1 人赞同了该回答

题住如果感兴趣的话可以先看看几个经典的paper:

(1) 做fault-tolerance, 一致性的:paxos

(2) 做分布式计算的,mapreduce,spark

(3) 做分布式存储的,bigtable,spanner

1添加评论
分享
收藏感谢
1 人赞同了该回答
我们曾经做过一个网站,之前用微软4.0开发的,数据量达到7万*35万后,查询统计功能就完全死掉了,没法用,后来更换了erpcore快速开发框架,利用缓存技术重新开发,这个问题基本就解决了,这个比较适合像学校这种要求自有服务器,小的技术团队开发的web软件架构
1添加评论
分享
收藏感谢
1 人赞同了该回答
参与人数越多的大系统,使用同构技术带来日后维护的难度风险越高,所以现在开源分布式系统基本都是基于公开协议的 MQ 或 RPC 进行组织的。Erlang 作为一个无所不包的平台,用在一个公司 / 团队内部实现系统是可以的,放在外面,优势不如“找不到合适的人”的劣势明显。
1添加评论
分享
收藏感谢
1 人赞同了该回答
erlang不流行可能与其编程思想有关,其独特编程思想,让那些有思维定式的人很难理解。所以,真正掌握的人不多,能掌握的都是高手,高手大多比较谦虚,经历丰富高手一般都非常谦虚。所以,社区不热。
12 条评论
分享
收藏感谢
关注
0添加评论
分享
收藏感谢
嗯,erlang确实被忽略了!现在多核超线程是该产生点变革性的东东了
01 条评论
分享
收藏感谢
scala+akka
0添加评论
分享
收藏感谢

dubbo

0添加评论
分享
收藏感谢
查看评论

常见开源分布式存储系统

系统整体对比 对比说明 /文件系统 TFS FastDFS MogileFS MooseFS GlusterFS Cep...
  • wujin8589
  • wujin8589
  • 2017-04-20 19:49:20
  • 6189

找到一个适合的分布式文件系统之各种分布式文件系统优缺点对比

分析各主流、开源、不开源的分布式文件系统
  • Prepared
  • Prepared
  • 2017-05-19 17:20:16
  • 10372

两大主流开源分布式存储的对比:GlusterFS vs. Ceph

存储世界最近发生了很大变化。十年前,光纤通道SAN管理器是企业存储的绝对标准,但现在的存储必须足够敏捷,才能适应在新的基础架构即服务云环境内运行。 GlusterFS和Ceph是在现代云环境中表现最...
  • CloudXli
  • CloudXli
  • 2018-03-24 21:16:59
  • 59

流行的开源分布式文件系统比较

我现在有海量的数据文件(1000万个文件)需要存储,需要让其他计算机可以很容易地访问,数据无价,我还希望这个文件系统带冗余功能。 我首先注意到的是Ubuntu Enterprise Cloud的提...
  • cnbird2008
  • cnbird2008
  • 2015-01-12 23:07:45
  • 6155

各种分布式文件系统简介

常见的分布式文件系统有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自适用于不同的领域。它们都不是系统级的分布式文件系统,而是应用级的分...
  • qq_26562641
  • qq_26562641
  • 2016-10-26 11:10:49
  • 2878

开源分布式文件系统的对比

工作需要,整理了一份分布式文件系统对比的材料。网上看到过不少类似的材料,大家视角不同,差别不小,这里只是提供大家参考,不对的地方欢迎指导。      GlusterFS 特点1:去中心化...
  • load2006
  • load2006
  • 2013-11-04 09:14:39
  • 4471

各种分布式文件系统的比较

适合做通用文件系统的有 MooseFS,GlusterFS,Lustre。 MooseFS 支持FUSE,相对比较轻量级,对master服务器有单点依赖,用perl编写,性能相对较差,国内用的...
  • gatieme
  • gatieme
  • 2015-04-10 18:52:46
  • 14753

常见的分布式文件系统介绍

常见的分布式文件系统有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自适用于不同的领域。它们都不是系统级的分布式文件系统,而是应用级的分...
  • xyw591238
  • xyw591238
  • 2016-05-18 09:35:10
  • 10340

FastDFS - 开源的轻量级分布式文件系统

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相...
  • hcfelix
  • hcfelix
  • 2017-02-11 16:08:53
  • 1120
    个人资料
    等级:
    访问量: 0
    积分: 287
    排名: 0
    文章存档