我即将使用Apache Hadoop,标题为:
Apache Hadoop项目开发了用于可靠,可扩展的分布式计算的开源软件.
我可以将"可伸缩性"与编程联系起来,但我只是不知道这种"分发"如何在我的开发中帮助我.根据维基百科:
分布式系统由通过计算机网络进行通信的多个自治计算机组成.计算机彼此交互以实现共同目标
那么这是否意味着我可以在多台计算机上部署我的网络应用程序并进行某种"强烈计算"?我想到的术语是内容交付网络和云计算.
我正在开发一个小型分布式计算项目.服务器无法处理计算而不会在进程中崩溃Apache,所以我将这些计算给用户.
基本的想法是我运行3次计算,结果需要完全相同.但是,该应用程序需要在Mac,Linux和Windows上运行.基本上这意味着我不能使用rand().
我可能正在寻找一个替代生成器,它接受种子值(由服务器提供)并在每个平台上提供相同的结果.
我的问题是:这确实是我在寻找什么,你有一个很好的建议,还是我应该以不同的方式做到这一点?
是否有分布式缓存系统(理想情况下是.NET客户端)具有开箱即用的程序化缓存依赖性?
在我的研究中,我只发现了基于时间的缓存过期的分布式缓存.
客户端 - 服务器范例的三层软件体系结构有三个不同的层:
表示层 - 用户可以直接访问的层,例如UI或网页.也称为客户端.
应用层 - 该层封装业务逻辑(如业务规则和数据验证),域概念,数据访问逻辑等.也称为中间层.
数据层 - 用于存储应用程序数据的外部数据源,例如数据库服务器.
为什么将单独层的逻辑封装在单独的软件模块中是有利的?
在Microsoft Orleans中,我尝试使用以下代码实现类似可用工作的列表:
public Task<WorkResponse> PerformWork(WorkRequest request)
{
Console.WriteLine("Performing work for id: {0}", request.Param1);
Thread.Sleep(TimeSpan.FromSeconds(10));
var result = Task.FromResult(new WorkResponse(request.Param1, request.Param2, request.Param3));
Console.WriteLine("Completed work for id: {0}", request.Param1);
return result;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用像这样的代码启动许多任务,那么事情就不会正常.
_work
.ToList()
.AsParallel()
.ForAll(x =>
{
Console.WriteLine("Requesting work for id: {0}", x.Key);
var worker = GrainFactory.GetGrain<IWork>(x.Key);
var response = worker.PerformWork(x.Value);
Console.WriteLine("Response for work id: {0}", x.Key);
});
Run Code Online (Sandbox Code Playgroud)
但是,如果另一个节点加入群集,则工作似乎永远不会移动到新节点.仅在该新节点上处理新计划的工作.
似乎如果奥尔良队列中有一堆额外的工作,那么新节点就会加入群集.
https://ringpop.readthedocs.org/en/latest/
据我了解,可以在某些库例程中实现分片,并且应用程序仅与库链接。如果该库是RPC客户端,则可以从服务器端实时查询分片。因此,即使有一个新分区,它对应用程序也是透明的。
Ringpop是基于SWIM成员身份协议的应用程序层分片策略。我想知道应用程序层的主要优势是什么?
在系统层中分片又是另一面呢?
谢谢!
database distributed distributed-computing distributed-caching
我知道Google很快就会获得大量的结果,关于这个主题的文献非常丰富,这正是问题所在.在众多可能的解决方案中,我不确定哪个是针对我的特定需求的最佳,最新选择.
我正在尝试通过互联网实现p2p网络,其中唯一的功能是向在线节点广播消息.要连接到网络,您必须能够指向现有IP.当您这样做时,您会发现一些同伴并与他们保持活跃的联系.然后,您可以将消息发送到每个其他节点.没有直接通信,发送的每条消息都是由其他人接收的.我希望这个网络尽可能高效,并在UDP之上工作.
在这里指定的形状上解决这个问题的一些现有算法的名称是什么?
我使用Kubernetes创建了一个集群,我想使用不同的IP向服务器请愿,每个节点是否有不同的节点,以便我可以并行化请求?谢谢
请考虑以下情形.我有一个Apache Ignite节点集群.在每个节点上,工作单元可以出现(例如,基于最终用户的输入),需要异步处理.执行的顺序并不严格,即早期发生的工作单位应该在以后的工作单位之前执行,但只能大约执行.
经过一些阅读,我的第一个想法是使用分布式队列(并置,因为它可能很大).每个节点都有一个工作线程监听队列并一旦到达就处理工作单元.但是,据我所知,队列项目随后会分发到所有集群节点.
所以我的第二个想法是:有没有办法让工作单位在该节点上的节点上生成并主要在该节点上进行处理?我的意思是,当节点本地工作单元全部被处理时,其他节点的工作单元被采取等.
你遇到过类似的问题,你是如何解决的?
编辑:工作单位需要坚持我的情况.这意味着,如果节点在执行工作单元期间关闭,则工作单元必须由其他节点处理或在节点重新启动时重新处理.
networking ×2
apache-spark ×1
asp.net ×1
c# ×1
c++ ×1
caching ×1
containers ×1
database ×1
distributed ×1
gossip ×1
ignite ×1
java ×1
kubernetes ×1
orleans ×1
p2p ×1
performance ×1
random ×1
rdd ×1
scala ×1
srand ×1