我看过一篇文章" 微服务 "由Martin Fowler,并发现它很难理解智能端点 S和哑管道.请解释这些条款,欢迎提供实例.
我目前的开发项目有两个方面.首先,有一个公共网站,外部用户可以为各种目的提交和更新信息.然后,此信息将保存到colo工具的本地SQL Server.
第二个方面是员工用于管理相同记录(概念上)并提供状态更新,批准等的内部应用程序.此应用程序托管在具有自己的本地SQL Server数据库的公司防火墙内.
这两个网络通过硬件VPN解决方案连接,这是很好的,但显然不是世界上最快的东西.
这两个数据库是相似的,并且共享许多相同的表,但它们不是100%相同.双方的许多表都非常特定于内部或外部应用程序.
所以问题是:当用户更新他们的信息或在公共网站上提交记录时,如何将这些数据传输到内部应用程序的数据库,以便内部员工管理?反之亦然......你如何推动员工的更新回到网站?
值得一提的是,这些更新发生的"实时"越多越好.并不是说它必须是即时的,只是相当快.
到目前为止,我已经考虑过使用以下类型的方法:
有什么建议?有没有人遇到过这个问题?你有没有想出一个适合你的解决方案?
我打算使用无共享架构和多版本并发控制来创建分布式数据库系统.冗余将通过异步复制实现(只要系统中的数据保持一致,就可以在发生故障时丢失一些最近的更改).对于每个数据库条目,一个节点具有主副本(仅该节点具有对其的写访问权),此外,一个或多个节点具有该条目的辅助副本以用于可伸缩性和冗余目的(辅助副本是只读的) .更新条目的主副本时,它会加上时间戳并异步发送到具有辅助副本的节点,以便最终获得最新版本的条目.具有主副本的节点可以随时更改 - 如果另一个节点需要写入该条目,它将请求主副本的当前所有者为该节点提供该条目的主副本的所有权,
最近我一直在考虑当集群中的节点发生故障时该怎么做,以及用于故障转移的策略.这是一些问题.我希望你能知道至少其中一些的可用替代品.
我读过Lamport 关于Paxos 的论文.我也听说过,由于性能原因,它在实践中并没有太多用处.在分布式系统中,通常使用哪些算法来达成共识?
我面临以下挑战:
我在不同的地理位置有一堆数据库,网络可能会失败很多(我使用的是蜂窝网络).我需要保持所有数据库同步,但不需要实时.我正在使用Java,但我可以自由选择任何免费数据库.
关于如何实现这一点的任何建议.
谢谢.
我正在使用git进行版本控制,但我目前缺少Eclipse Mylyn集成的好问题/错误/票证跟踪器.
我正在寻找的功能:
次要功能(会很好,但我可以没有):
你能提出什么建议吗?
更新:截至2012-09-13未找到合适的工具.迄今为止最佳匹配摘要:
两者都被定义为一组协同工作的计算机,并为最终用户提供对在其后面运行的单个计算机的感知.
那么这里的区别是什么?
我有一段处理文件的代码,
processFiles :: [FilePath] -> (FilePath -> IO ()) -> IO ()
Run Code Online (Sandbox Code Playgroud)
此函数生成执行IO操作的异步进程.必须通过作业调度系统(例如Slurm)将此IO操作提交给集群.
因为我必须使用作业调度系统,所以不可能使用cloudHaskell来分发闭包.相反,程序会编写一个包含所需计算的新Main.h,即与主要依赖的所有模块一起复制到集群节点,然后使用"runhaskell Main.hs [opts]"远程执行.然后,如果作业完成,异步过程应定期询问作业调度系统(使用threadDelay).
有没有办法避免创建一个新的Main?我可以序列化IO操作并在节点中以某种方式执行它吗?
我非常喜欢Golang,可以轻松地编写并发软件,以便在一台机器上使用更多的CPU内核.我有点担心得知Go并不是真正的分布式(如多节点并发)语言 - 甚至Rob Pike也承认(在GopherCon 2014上)它从一开始就不是为分布式计算而设计的,尽管有尝试帮助的GoCircuit等软件包.
因此,我最近对Erlang和Elixir感兴趣,因为经过实战的Erlang VM已被用于跨节点分发应用程序数十年.
但后来我了解到Rust从Erlang(消息传递,模式匹配)中获取大部分并发功能,同时仍然是静态类型和编译语言(因此可能更快),我想知道Rust是否可能是一个不错的选择(除此之外) Erlang/Elixir)用于编写分布式多节点软件?
以下是一些针对所寻求信息的具体问题:
distributed programming-languages distributed-computing rust
我一直在阅读很多关于保证分布式系统中节点之间一致性的不同策略,但是我在确定何时使用哪种算法时遇到了一些麻烦.
使用什么样的系统我会使用像矢量时钟这样的东西?哪个系统适合使用像Paxos这样的东西?两者是相互排斥的吗?
distributed ×10
database ×3
algorithm ×2
architecture ×1
closures ×1
consensus ×1
eclipse ×1
failover ×1
git ×1
haskell ×1
messaging ×1
mylyn ×1
paxos ×1
replication ×1
rust ×1
soa ×1
sql-server ×1
theory ×1