到目前为止,我们已经完全舔了整个分布式的版本控制.我并不是说一切都很完美,但是,从这里开始,这主要只是继续已经开始的事情.
然而,分布式错误跟踪正处于初期阶段,恕我直言.这是相当不方便的,无法在路上与问题跟踪器一起工作,特别是因为我倾向于忘记过去两小时内我的变化是什么.是的,我知道,我可以在路上记录并更新一个传统的跟踪器,一旦我再次上网,但仍然......保持我的选择开放和所有这一切.:P
目前,我只知道Bugs Everywhere和Ditz - 那些,以及Fossil附带的那个.其中,我认为Fossil是最远的,考虑到它与版本控制方面的集成程度有多紧密,这并不令人惊讶.我不得不跳过相当多的箍来让我的共同开发人员甚至看看SVN以外的其他东西,但是,如果Fossil真的如此,我不介意再做一次.
然而,在我这样做之前,我想问的是比我更老更聪明的人:你有这三个经验吗?你觉得他们怎么样?你认识其他人吗?请链接到他们,让我知道他们的表现.
我有一个问题,我必须分析500C5组合(255244687600)的东西.将其分布在10个节点的集群中,每个集群每秒处理大约10 ^ 6个组合,这意味着该作业将在大约7个小时内完成.
我遇到的问题是在10个节点上分配255244687600组合.我想给每个节点提供25524468760,但是我使用的算法只能顺序生成组合,我希望能够传递元素集和一系列组合指标,例如,[0 -10 ^ 7),[10 ^ 7,2.0 10 ^ 7)等,并让节点自己找出组合.
我目前使用的算法来自以下内容:
Stack Overflow问题有效地计算矢量组合
我考虑过使用一个主节点,它枚举每个组合并将工作发送到每个节点.然而,从单个节点迭代组合并来回通信工作所产生的开销是巨大的,并且随后将导致主节点成为瓶颈.
是否有任何良好的组合迭代算法可以实现有效/最佳的分布式枚举?
在设计大型应用程序时,我正试图了解思考过程.
假设我有一个客户需要一个新的客户网站,他估计每天有40,000个订单,已有25,000个用户群.在设计应用程序时,您如何确定是否需要分布式架构?我应该使用网络农场吗?等等
我过去主要构建2层(物理)应用程序,我真的想提高我的理解力.
任何见解都会很棒!
我目前正在使用Hadoop DFS开展项目.
我注意到Hadoop Shell中没有搜索或查找命令.有没有办法在Hadoop DFS中搜索和查找文件(例如testfile.doc)?
Hadoop是否支持文件内容搜索?如果是这样,怎么办?例如,我有许多存储在HDFS中的Word Doc文件,我想列出哪些文件中包含"计算机科学"字样.
在其他分布式文件系统中呢?文件内容搜索是分布式文件系统的软肋吗?
任何人都可以为Ocaml推荐一个库,为分布式计算提供基于actor的并发模型吗?
请注意这里的"基于actor"和"分布式" - 我喜欢基于actor的模型,但我也希望无缝处理分布式actor - 我不想编写协议来与他们交谈.理想情况下,库也应该提供标准模式,例如监督树等.
我喜欢Erlang并发模型以及透明地处理分布式流程和本地流程的能力.但是,我发现Erlang的语法相当有限,并且想要一种更具表现力的语言.我正在考虑从Erlang迁移到Scala或Ocaml.
我知道Scala有Akka库,它似乎提供了一个很好的Scala版本的Erlang并发模型.我想看看Ocaml方面的可用内容.
我也很高兴听到其他语言(特别是C++,Haskell,Python和Ruby)的基于actor的并发库.
我理解三阶段提交是为了解决"两阶段提交"的问题,当在第二阶段协调器和队列同时失败时,不可能知道协调器是否已决定提交消息.
显然,三阶段提交旨在通过添加额外阶段来解决此问题.但是,如果协调员和队列失败,你是否在第三阶段面临完全相同的问题?
我有一个卡桑德拉问题.你知道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可以解决这个问题,但这是另一个故事.
我正在寻找一个经过合理测试的库+服务器来存储一个持久的分布式哈希表.
我非常喜欢使用基于SQL的解决方案,因为数据是高度面向文档的,由数百万~64KB的blob组成,只有一个索引(通过所述BLOB的哈希计算) - 并且需要能够分发以进行长期扩展前景.
由于费用和带宽的考虑,S3等外部解决方案不是一种选择.
像CouchDB或Project Voldemort这样的东西是理想的 - 但是两者都有明显缺乏.NET绑定(PV可以是来自Java的IKVMC-但是有"问题".).键和值都是字节数组(键为16字节,值最大为2048KB,平均为64KB)
到目前为止,我已经搜索了Dynamo,Chord和类似的某种.NET端口 - 但是大多数结果似乎都是纯粹的内存缓存,缺乏任何形式的持久性或复制.
有人有任何想法或建议吗?
几年前,关于分布式错误跟踪系统,在SO上有一些活动:
存在一些似乎或多或少活跃的系统:
我想知道:分布式错误跟踪的当前状态是什么?它是否仍处于某种黑客阶段(这使得它几乎不能用于普通的GUI开发者)或者我错过了什么?
此外,虽然我发现这个主题非常有趣,因为它与分布式版本控制系统完美集成,但似乎很久以前开始的大多数项目都已经死了.我的印象是真的吗?为什么这个领域没有活动?
distributed ×10
.net ×2
actor ×1
algorithm ×1
apache-storm ×1
architecture ×1
asp.net ×1
bug-tracking ×1
c# ×1
c++ ×1
cassandra ×1
database ×1
dht ×1
distribution ×1
erlang ×1
file ×1
filesystems ×1
fossil ×1
git ×1
hadoop ×1
hpc ×1
ocaml ×1
protocols ×1
scala ×1
storage ×1