标签: distributed

如何设计和验证分布式系统?

我一直在研究一个项目,它是一个应用程序服务器和一个对象数据库的组合,目前只在一台机器上运行.前段时间我读了一篇描述分布式关系数据库的论文,并对如何将该论文中的想法应用到我的项目中提出了一些想法,以便我可以使用共享在集群上运行它的高可用性版本- 没什么架构.

我的问题是,我没有设计分布式系统及其协议的经验 - 我没有参加大学分布式系统的高级CS课程.因此我担心能够设计一个不会导致死锁,饥饿,裂脑和其他问题的协议.

问题:在哪里可以找到有关设计分布式系统的好材料?有哪些方法可以验证分布式协议是否正常工作?欢迎提供书籍,学术文章和其他建议.

distributed formal-verification high-availability protocols

16
推荐指数
3
解决办法
8108
查看次数

分布式错误跟踪器与DVC一起使用

到目前为止,我们已经完全舔了整个分布式的版本控制.我并不是说一切都很完美,但是,从这里开始,这主要只是继续已经开始的事情.

然而,分布式错误跟踪正处于初期阶段,恕我直言.这是相当不方便的,无法在路上与问题跟踪器一起工作,特别是因为我倾向于忘记过去两小时内我的变化是什么.是的,我知道,我可以在路上记录并更新一个传统的跟踪器,一旦我再次上网,但仍然......保持我的选择开放和所有这一切.:P

目前,我只知道Bugs EverywhereDitz - 那些,以及Fossil附带的那个.其中,我认为Fossil是最远的,考虑到它与版本控制方面的集成程度有多紧密,这并不令人惊讶.我不得不跳过相当多的箍来让我的共同开发人员甚至看看SVN以外的其他东西,但是,如果Fossil真的如此,我不介意再做一次.

然而,在我这样做之前,我想问的是比我更老更聪明的人:你有这三个经验吗?你觉得他们怎么样?你认识其他人吗?请链接到他们,让我知道他们的表现.

bug-tracking distributed fossil

16
推荐指数
2
解决办法
2058
查看次数

以分布式方式枚举组合

我有一个问题,我必须分析500C5组合(255244687600)的东西.将其分布在10个节点的集群中,每个集群每秒处理大约10 ^ 6个组合,这意味着该作业将在大约7个小时内完成.

我遇到的问题是在10个节点上分配255244687600组合.我想给每个节点提供25524468760,但是我使用的算法只能顺序生成组合,我希望能够传递元素集和一系列组合指标,例如,[0 -10 ^ 7),[10 ^ 7,2.0 10 ^ 7)等,并让节点自己找出组合.

我目前使用的算法来自以下内容:

我考虑过使用一个主节点,它枚举每个组合并将工作发送到每个节点.然而,从单个节点迭代组合并来回通信工作所产生的开销是巨大的,并且随后将导致主节点成为瓶颈.

是否有任何良好的组合迭代算法可以实现有效/最佳的分布式枚举?

c++ algorithm distributed hpc combinatorics

16
推荐指数
1
解决办法
587
查看次数

如何确定分布式架构?

在设计大型应用程序时,我正试图了解思考过程.

假设我有一个客户需要一个新的客户网站,他估计每天有40,000个订单,已有25,000个用户群.在设计应用程序时,您如何确定是否需要分布式架构?我应该使用网络农场吗?等等

我过去主要构建2层(物理)应用程序,我真的想提高我的理解力.

任何见解都会很棒!

.net c# architecture asp.net distributed

16
推荐指数
2
解决办法
1543
查看次数

在Hadoop中搜索/查找文件和文件内容

我目前正在使用Hadoop DFS开展项目.

  1. 我注意到Hadoop Shell中没有搜索或查找命令.有没有办法在Hadoop DFS中搜索和查找文件(例如testfile.doc)?

  2. Hadoop是否支持文件内容搜索?如果是这样,怎么办?例如,我有许多存储在HDFS中的Word Doc文件,我想列出哪些文件中包含"计算机科学"字样.

在其他分布式文件系统中呢?文件内容搜索是分布式文件系统的软肋吗?

filesystems distributed hadoop file distributed-computing

16
推荐指数
1
解决办法
5万
查看次数

Ocaml和其他语言的基于Actor的分布式并发库

任何人都可以为Ocaml推荐一个库,为分布式计算提供基于actor的并发模型吗?

请注意这里的"基于actor"和"分布式" - 我喜欢基于actor的模型,但我也希望无缝处理分布式actor - 我不想编写协议来与他们交谈.理想情况下,库也应该提供标准模式,例如监督树等.


动机

我喜欢Erlang并发模型以及透明地处理分布式流程和本地流程的能力.但是,我发现Erlang的语法相当有限,并且想要一种更具表现力的语言.我正在考虑从Erlang迁移到Scala或Ocaml.

我知道Scala有Akka库,它似乎提供了一个很好的Scala版本的Erlang并发模型.我想看看Ocaml方面的可用内容.


在旁边

我也很高兴听到其他语言(特别是C++,Haskell,Python和Ruby)的基于actor的并发库.

erlang distributed ocaml scala actor

16
推荐指数
2
解决办法
2613
查看次数

三阶段提交

我理解三阶段提交是为了解决"两阶段提交"的问题,当在第二阶段协调器和队列同时失败时,不可能知道协调器是否已决定提交消息.

显然,三阶段提交旨在通过添加额外阶段来解决此问题.但是,如果协调员和队列失败,你是否在第三阶段面临完全相同的问题?

distributed distribution distributed-transactions

16
推荐指数
1
解决办法
2200
查看次数

如何在没有陈旧性的情况下快速增加Cassandra的计数器

我有一个卡桑德拉问题.你知道Cassandra如何更新/增加计数器吗?

我想使用风暴螺栓(来自github上的storm-contrib repo的CassandraCounterBatchingBolt)写入cassandra.但是,我不知道怎么样了一些incrementCounterColumn的实现()方法的工作..而且还有与卡桑德拉计数器限制(来源:中http://wiki.apache.org/cassandra/Counters),这使得他们对我的情景无用恕我直言:

  • 如果写入意外失败(超时或失去与协调器节点的连接),则客户端将不知道是否已执行操作.重试可导致CASSANDRA-2495过多计数.

  • 反移除本质上是有限的.例如,如果您非常快速地发出序列"递增,删除,递增",则删除可能会丢失

无论如何,这是我的场景:
我更新相同的计数器比更新传播到其他Cassandra节点更快.

示例:
假设我有3个cassandra节点.每个节点上的计数器为0.节点
1:0,节点2 :0,节点3 :0

增量到来:5 - > Node1:0,node2:0,node3:0

增量从节点2开始 - 仍然需要传播到node1和node3节点
1:0,节点2 :5,节点3 :0

与此同时,在
传播前一个增量之前,另一个增量到达:3 - > Node1:0,node2:5,node3:0

假设3个在不同于5个
起始点的节点上启动,我们有:Node1:3,node2:5,node3:0

现在,如果3传播到其他节点AS AN INCREMENT而不是作为新值传播(并且5相同),那么最终节点将全部等于8,这就是我想要的.

如果3覆盖5(因为它有一个更晚的时间戳)这是有问题的 - 不是我想要的.

你知道Cassandra如何处理这些更新/增量吗?

注意,写入之前的读取仍然容易受到同一问题的影响,这取决于读取执行的副本节点(如果传播距离不远,仲裁仍然会失败)

我也在想,也许放一个缓存b/w我的风暴螺栓和Cassandra可以解决这个问题,但这是另一个故事.

distributed cassandra apache-storm

16
推荐指数
1
解决办法
6364
查看次数

用于.NET的BLOB分布式存储?

我正在寻找一个经过合理测试的库+服务器来存储一个持久的分布式哈希表.

我非常喜欢使用基于SQL的解决方案,因为数据是高度面向文档的,由数百万~64KB的blob组成,只有一个索引(通过所述BLOB的哈希计算) - 并且需要能够分发以进行长期扩展前景.

由于费用和带宽的考虑,S3等外部解决方案不是一种选择.

像CouchDB或Project Voldemort这样的东西是理想的 - 但是两者都有明显缺乏.NET绑定(PV可以是来自Java的IKVMC-但是有"问题".).键和值都是字节数组(键为16字节,值最大为2048KB,平均为64KB)

到目前为止,我已经搜索了Dynamo,Chord和类似的某种.NET端口 - 但是大多数结果似乎都是纯粹的内存缓存,缺乏任何形式的持久性或复制.

有人有任何想法或建议吗?

.net database storage distributed dht

15
推荐指数
1
解决办法
1059
查看次数

分布式错误跟踪的状态是什么?

几年前,关于分布式错误跟踪系统,在SO上有一些活动:

存在一些似乎或多或少活跃的系统:

  • Fossil(看起来相当成熟,特别是因为它有一个图形用户界面,但它带来了自己的版本控制系统,我不想从Git切换)
  • BugsEverywhere(看起来很活跃,但缺少图形用户界面除了它的Tortoise集成BEurtle)
  • 这里列出的其他一些(VCS不可知和特定的)

我想知道:分布式错误跟踪的当前状态是什么?它是否仍处于某种黑客阶段(这使得它几乎不能用于普通的GUI开发者)或者我错过了什么?

此外,虽然我发现这个主题非常有趣,因为它与分布式版本控制系统完美集成,但似乎很久以前开始的大多数项目都已经死了.我的印象是真的吗?为什么这个领域没有活动?

git distributed issue-tracking

15
推荐指数
1
解决办法
1680
查看次数