标签: distributed

微服务:什么是智能终端和哑管?

我看过一篇文章" 微服务 "由Martin Fowler,并发现它很难理解智能端点 S和哑管道.请解释这些条款,欢迎提供实例.

architecture messaging soa distributed microservices

20
推荐指数
4
解决办法
2万
查看次数

如何保持两个相关但独立的系统彼此同步?

我目前的开发项目有两个方面.首先,有一个公共网站,外部用户可以为各种目的提交和更新信息.然后,此信息将保存到colo工具的本地SQL Server.

第二个方面是员工用于管理相同记录(概念上)并提供状态更新,批准等的内部应用程序.此应用程序托管在具有自己的本地SQL Server数据库的公司防火墙内.

这两个网络通过硬件VPN解决方案连接,这是很好的,但显然不是世界上最快的东西.

这两个数据库是相似的,并且共享许多相同的表,但它们不是100%相同.双方的许多表都非常特定于内部或外部应用程序.

所以问题是:当用户更新他们的信息或在公共网站上提交记录时,如何将这些数据传输到内部应用程序的数据库,以便内部员工管理?反之亦然......你如何推动员工的更新回到网站?

值得一提的是,这些更新发生的"实时"越多越好.并不是说它必须是即时的,只是相当快.

到目前为止,我已经考虑过使用以下类型的方法:

  1. 双向复制
  2. 双方的Web服务接口都带有代码,以便在进行更改时实时同步(实时).
  3. 双方的Web服务接口使用代码来异步同步更改(使用排队机制).

有什么建议?有没有人遇到过这个问题?你有没有想出一个适合你的解决方案?

database sql-server distributed synchronization

19
推荐指数
1
解决办法
6913
查看次数

分布式系统中的故障转移有哪些算法?

我打算使用无共享架构多版本并发控制来创建分布式数据库系统.冗余将通过异步复制实现(只要系统中的数据保持一致,就可以在发生故障时丢失一些最近的更改).对于每个数据库条目,一个节点具有主副本(仅该节点具有对其的写访问权),此外,一个或多个节点具有该条目的辅助副本以用于可伸缩性和冗余目的(辅助副本是只读的) .更新条目的主副本时,它会加上时间戳并异步发送到具有辅助副本的节点,以便最终获得最新版本的条目.具有主副本的节点可以随时更改 - 如果另一个节点需要写入该条目,它将请求主副本的当前所有者为该节点提供该条目的主副本的所有权,

最近我一直在考虑当集群中的节点发生故障时该怎么做,以及用于故障转移的策略.这是一些问题.我希望你能知道至少其中一些的可用替代品.

  • 在分布式系统中进行故障转移有哪些算法?
  • 在分布式系统中有哪些算法可以达成共识?
  • 群集中的节点应如何确定节点已关闭?
  • 如何在发生故障时节点确定哪些数据库条目在故障节点上具有主副本,以便其他节点可以恢复这些条目?
  • 如何确定哪个节点具有某些条目的最新辅助副本?
  • 如何确定应将哪个节点的辅助副本提升为新的主副本?
  • 怎么处理它,如果那个虽然要关闭的节点突然回来,好像什么也没发生?
  • 如何避免裂脑情况,网络暂时分成两部分,双方都认为对方已经死亡?

database algorithm failover distributed cluster-computing

19
推荐指数
3
解决办法
4238
查看次数

在分布式系统中,与Paxos相关的更快的协议算法是什么?

我读过Lamport 关于Paxos 的论文.我也听说过,由于性能原因,它在实践中并没有太多用处.在分布式系统中,通常使用哪些算法来达成共识?

algorithm distributed consensus paxos

19
推荐指数
1
解决办法
3897
查看次数

保持分布式数据库在不稳定的网络中同步

我面临以下挑战:

我在不同的地理位置有一堆数据库,网络可能会失败很多(我使用的是蜂窝网络).我需要保持所有数据库同步,但不需要实时.我正在使用Java,但我可以自由选择任何免费数据库.

关于如何实现这一点的任何建议.

谢谢.

database replication distributed data-synchronization

18
推荐指数
2
解决办法
5889
查看次数

git的分布式问题跟踪器,具有可用的Eclipse Mylyn支持?

我正在使用git进行版本控制,但我目前缺少Eclipse Mylyn集成的好问题/错误/票证跟踪器.

我正在寻找的功能:

  • 开源实现(以便我可以添加我将来需要的功能.首选GPL,LGPL,MIT或BSD许可证).
  • 分布式(问题必须存储在存储库的git中,我打开以获取跟踪器的建议,这些跟踪器将问题存储在代码的相同或单独的分支中).
  • 必须拥有Eclipse Mylyn支持(以便我可以通过mylyn界面打开和关闭问题,我认为合理的实现可以在特定端口提供localhost HTTP服务器,mylyn将使用"web模板"连接器与问题跟踪器对话).最好是当我切换分支时,Mylyn会自动看到打开和关闭的问题,但我没关系,因为这不太聪明.
  • 能够跟踪分支之间的问题,例如:
    • 我有一个共同的父提交Z的分支X和Y.
    • 提交Z有一个未解决的问题Z1.
    • 分支Y有一个修复(提交Y4)并在Y中关闭问题.
    • 分支Y有一个新问题(提交Y2)
    • 分支Y在X中合并.
    • 问题跟踪器自动知道问题Z1在X中是固定的,但现在提交来自提交Y2的新问题.
  • 能够处理多个存储库打开,修改和关闭相同或不同问题的情况(分布式部分,我只是将其明确化).
  • 必须可以在64位和32位linux上运行(现在是ubuntu 10.04)
  • 最好用bash,c/c ++,python或perl(也可能是java或ruby)实现.

次要功能(会很好,但我可以没有):

  • 小到可以包含在项目的源代码中:最好是一个带有可执行位集的单个文件(例如单个bash或具有完整实现的python脚本)
  • 某种类型的Web用户界面,以便没有Eclipse Mylyn的人至少可以添加新问题并为现有问题添加注释(无需设置优先级甚至关闭问题)

你能提出什么建议吗?

更新:截至2012-09-13未找到合适的工具.迄今为止最佳匹配摘要:

  • Bugs Everywhere - 没有Mylyn的支持,过去两年中"Adnet Wilkins希望在"Plannet功能中看到BE的Mylyn连接器".否则项目将继续进行.
  • git-issues - 这个项目似乎已经死了.原作者大约两年前就停止了提交,其他作者在过去两年里做了不到十次的提交.
  • git-case - 这个项目似乎已经死了.原作者三年前就停止了提交.
  • 坚持 - 这个项目似乎已经死了.我甚至找不到公共存储库了.
  • TicGit这个项目似乎已经死了.我能找到的所有存储库都有免责声明项目不再开发.
  • TigGit-NG - 这个项目似乎已经多次死亡但是到目前为止,有人总是再次采用这个项目.这里也没有Mylyn的支持.需要最近的Ruby环境才能运行.
  • TicGit.net - 这个项目似乎是用C#编写的win32/.Net特定的TicGit分支.不符合我的需求.

eclipse git distributed mylyn issue-tracking

18
推荐指数
1
解决办法
1923
查看次数

分布式系统和集群系统之间的差异是什么?

两者都被定义为一组协同工作的计算机,并为最终用户提供对在其后面运行的单个计算机的感知.

那么这里的区别是什么?

distributed distributed-computing cluster-computing

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

在群集上分发Haskell

我有一段处理文件的代码,

processFiles ::  [FilePath] -> (FilePath -> IO ()) -> IO ()
Run Code Online (Sandbox Code Playgroud)

此函数生成执行IO操作的异步进程.必须通过作业调度系统(例如Slurm)将此IO操作提交给集群.

因为我必须使用作业调度系统,所以不可能使用cloudHaskell来分发闭包.相反,程序会编写一个包含所需计算的新Main.h,即与主要依赖的所有模块一起复制到集群节点,然后使用"runhaskell Main.hs [opts]"远程执行.然后,如果作业完成,异步过程应定期询问作业调度系统(使用threadDelay).

有没有办法避免创建一个新的Main?我可以序列化IO操作并在节点中以某种方式执行它吗?

distributed closures haskell

18
推荐指数
1
解决办法
369
查看次数

Rust是否适合Erlang风格的分布式软件?

我非常喜欢Golang,可以轻松地编写并发软件,以便在一台机器上使用更多的CPU内核.我有点担心得知Go并不是真正的分布式(如多节点并发)语言 - 甚至Rob Pike也承认(在GopherCon 2014上)它从一开始就不是为分布式计算而设计的,尽管有尝试帮助的GoCircuit等软件包.

因此,我最近对Erlang和Elixir感兴趣,因为经过实战的Erlang VM已被用于跨节点分发应用程序数十年.

但后来我了解到Rust从Erlang(消息传递,模式匹配)中获取大部分并发功能,同时仍然是静态类型和编译语言(因此可能更快),我想知道Rust是否可能是一个不错的选择(除此之外) Erlang/Elixir)用于编写分布式多节点软件?

以下是一些针对所寻求信息的具体问题:

  • Rust如何处理部分故障的稳健性(类似于Erlang的"让它崩溃"的理念,通过进程隔离)?
  • Rust是否在标准库或生产就绪包中提供易于使用的远程通道,消息传递或其他东西,以协助机器之间的通信?
  • Erlang/Exlixir的哪些功能可能适用于分布式软件,但在Rust中不可用?

distributed programming-languages distributed-computing rust

17
推荐指数
0
解决办法
3886
查看次数

我什么时候使用像Paxos这样的共识算法vs使用类似矢量时钟的东西?

我一直在阅读很多关于保证分布式系统中节点之间一致性的不同策略,但是我在确定何时使用哪种算法时遇到了一些麻烦.

使用什么样的系统我会使用像矢量时钟这样的东西?哪个系统适合使用像Paxos这样的东西?两者是相互排斥的吗?

theory distributed distributed-computing

17
推荐指数
1
解决办法
1426
查看次数