我想构建一个分布式系统,其中我有分布在许多服务器上的“线程”(具有自己 ID 的消息集合,而不是系统进程)。这些线程必须具有两个关键属性:
我想知道是否有任何已知的解决方案、库或算法可以帮助我实现第二个选项,因为现在我认为这是一个大问题,因为由于许多因素,不同的服务器可以在不同的时间收到相同的消息,这可能会影响它订单号。
只是为了概述我目前对一个问题的想法,说我有 3 个服务器,我的分布式线程已经包含 5 条消息,每个服务器向它自己的线程和其余两个发送一条新消息。
幼稚的订购。每个服务器都认为它自己的消息编号是 6,而来自其他服务器的其余两条消息将根据网络延迟和许多其他随机因素在到达时获得它们的编号,因此服务器之间的订单号不一致。这立即是不可接受的。
基于 UTC 时间戳的排序。当每个线程收到一条新消息时,我假设 10 条前面的消息已经具有正确的订单号,提取它们的时间戳并通过在最近 10 个时间戳的列表中找到它的时间戳位置来确定新消息的订单号。我猜这可能有效,但它确实需要可以分配某些消息的订单号,然后在某些时候进行更改,这是不可接受的。另外,当传入的消息数量很大时,我不确定这是否会正常工作。
感谢所有的帮助。
我想动态更改梁实例的节点名称。
该用例位于 VM 集群中,我希望启动过程查找 IP 信息,然后从中选择一个名称。
node()
# => :nonode@nohost
# Lookup ip and change name
node()
# => :myapp@x.x.x.x
Run Code Online (Sandbox Code Playgroud) 顺序一致性
任何执行的结果都是一样的,就好像所有处理器的操作都是按某种顺序执行的,每个处理器的操作都按照其程序指定的顺序出现在这个序列中。
我是分布式系统的新手,在这种情况下执行是什么意思,请以简单的方式解释这个定义?
我对分布式系统还很陌生,想知道 Raft 共识算法是如何线性化的。Raft 通过仲裁提交日志条目。当领导者 Raft 提交时,这意味着超过一半的参与者拥有复制的日志。但可能有一部分参与者没有最新日志,或者他们有日志但没有收到提交这些日志的指示。
或者 Raft 的读取线性化是否需要读取法定人数?
我在采访中被问到这个问题,但无法回答。
\n当两条消息并发时,FB Messenger 如何对用户端的消息进行排序,以避免聊天期间以及用户再次访问 Messenger 时显示顺序出现差异。我认为我们可以为每条消息存储一个时间戳,这是服务器接收消息的时间。但是,这并不能确保客户端消息的正确排序。
\n假设服务器时间戳无法确定消息的确切顺序,如下所示:
\n我读到解决这个问题,我们可以使用矢量时钟,但无法理解如何在聊天期间以及用户再次登录时为不同用户保留消息顺序。
\n在上述场景中,用户 1 将看到 M1,然后是 M2,而用户 2 将看到 M2,然后是 M1。现在,如果每个用户还为其发送给每个客户端的每条消息(分别)生成序列号或时间戳。然后在上面的场景中,user1 将发送序列 <1 (user1 seq), 0(user2 seq) > 的消息 M1,而 user2 将发送序列 <0 (user1 seq), …
distributed distributed-computing distributed-system sequencing vector-clock
我从SVN服务器A检出了一个项目,但我需要将我的更改提交回服务器B - 两个服务器上的存储库具有相同的结构.我怎么能用Tortoise SVN做到这一点?
谢谢,唐
我正在设计一个分布式系统,其中单线程服务器进程执行CPU密集型操作.这些操作由ZeroMQ网络消息触发.
如果单线程进程正在执行CPU密集型工作,那么I/O(ZeroMQ套接字)是否会阻塞?
谢谢!
我正在写一个假的运送应用程序.客户端发送产品,服务器保留所有发送的产品.
现在服务器 - 因为它只是虚拟的 - 每分钟更新产品的状态(SEND - > ACCEPTED - > SHIPPED - > RECEIVED),现在我希望服务器在更新状态时更新相应的客户端.
我讨论的大多数RMI信息只谈到客户端 - >服务器..但我需要我的服务器为我的客户端调用这个...
希望你们能帮忙!
负载均衡器必须知道所有节点.客户端将与负载均衡器连接,然后负载均衡器将每个任务分配给节点.
如果客户端总是访问相同(单个)负载均衡器,怎么会没有单点故障?您不能拥有两个负载均衡器,否则客户端将如何知道要连接哪个负载均衡器?
是否接受了对于某些设计部分,您无法避免单点故障?
我正在学习REST API,我无法理解如何在分布式Web应用程序中使用REST?这是我见过的唯一参考.但是我仍然无法了解用于分布式计算的REST.先感谢您.
distributed ×10
erlang ×2
system ×2
consensus ×1
consistency ×1
elixir ×1
io ×1
java ×1
messaging ×1
networking ×1
raft ×1
rest ×1
rmi ×1
sequencing ×1
svn ×1
vector-clock ×1
zeromq ×1