distributed-system

how raft follower rejoin after network disconnected?

烈酒焚心 提交于 2020-07-08 19:41:32
问题 I have a problem on raft. In paper "In Search of an Understandable Consensus Algorithm(Extended Version)" it says: To begin an election, a follower increments its current term and transitions to candidate state. (in section 5.2) and it also says: reciever should be "Reply false if args.term < currentTerm" in AppendEntries RPC and RequestVot RPC so, let's think this scene, there are 5 machine in raft system, and now machine 0 is leader, machine 1 to 4 is follower, now is term 1. Suddenly,

RPC semantics of gRPC

风流意气都作罢 提交于 2020-06-26 14:04:02
问题 I am trying the find out what RPC semantics the gRPC library provides? Is it at-most once? Does it guarantee that an RPC call made by a client is not executed more than once on a server? I couldn't find this explicitly mentioned anywhere in the docs. From what I understand, gRPC channels have an exponential back-off based retry mechanism of re-initiating TCP connections after transient failures. So, if a server fails after executing an RPC call but before responding, and later comes back up,

Leader election for paxos-based replicated key value store

孤者浪人 提交于 2020-01-31 05:31:15
问题 I am going to implement a key value store with multi Paxos. I would have several nodes, one of which is the primary node. This primary node receive update requests and replicate values to slave nodes. My question is how the primary node (or leader) is selected? Can I still use the Paxos algorithm? If so, do you think it is necessary to abstract the paxos implementation to a single unit that could be used not only by the replication unit but also the leader election unit? If I use the node

How to monitor whether a ZeroMQ server exists?

霸气de小男生 提交于 2020-01-14 03:29:10
问题 I want to check the existence ( state ) of a server before I send a ZeroMQ request, but I have no idea how to do it. 回答1: Q : I want to check the existence ( state ) of a server before I send a ZeroMQ request The solution is to setup and use the services of a zmq_socket_monitor() // Read one event off the monitor socket; return value and address // by reference, if not null, and event number by value. Returns -1 // in case of error. static int get_monitor_event ( void *monitor, int *value,

Why is 2-phase commit not suitable for a microservices architecture?

我是研究僧i 提交于 2020-01-12 08:00:05
问题 I've read a post saying that: We can not implement traditional transaction system like 2 phase commit in micro-services in a distributed environment. I agree completely with this. But it would be great if someone here can explain the exact reason for this. What would be the issues I'm going to face if I'm implementing 2-phase commit with microservices? Thanks in advance 回答1: The main reason for avoiding 2-phase commit is, the transaction co-ordinator is a kind of dictator as it tells all

BFT and PBFT and BA consensus algorithm

我是研究僧i 提交于 2020-01-05 12:32:53
问题 I've been digging into some of the most used consensus algorithms in permissioned blockchains and I got stuck. I understood that BFT (Byzantine Fault Tolerance) is a property of some algorithms and pBFT is an algorithm itself. Is that right? This rule that 2/3 of the nodes in the network are enough to reach consensus, is it for all BFT algorithms or just pBFT? Also what is the difference between Byzantine Agreement and BFT? If you could provide a reliable source of information, I'd be

DRb method access

狂风中的少年 提交于 2020-01-05 07:34:28
问题 I am writing a simple distributed system in DRb. I have all the peers, and one server to do the bootstrapping. In that server, I have a few methods like "suggest_peer", and "start_service" and "stop_service". When a peer connects to the server, he is able to call all three methods. I want him to be able to call only the first one. Also, I have a file that initializes the server, and has a little cmd line so I can start the service, debug, log and all that. I want that cmd line to be able to

DRb method access

∥☆過路亽.° 提交于 2020-01-05 07:34:19
问题 I am writing a simple distributed system in DRb. I have all the peers, and one server to do the bootstrapping. In that server, I have a few methods like "suggest_peer", and "start_service" and "stop_service". When a peer connects to the server, he is able to call all three methods. I want him to be able to call only the first one. Also, I have a file that initializes the server, and has a little cmd line so I can start the service, debug, log and all that. I want that cmd line to be able to

When deploying Corda nodes across the network, which JARs have to be exactly the same?

家住魔仙堡 提交于 2020-01-03 06:27:02
问题 Several questions on Corda deployment: Upon deployment, do all the JAR files in all Corda nodes have to be exactly the same - same build, same version, same hash, etc.. ? Does it mean all parties have to agree on the same code base beforehand? How to implement your own node's logic variant? Is it possible to only share the JARs containing interface of the flow and have different JARs for implementation? Can we drop JAR into plugin directory as required without synchronizing with other nodes?

When deploying Corda nodes across the network, which JARs have to be exactly the same?

故事扮演 提交于 2020-01-03 06:26:06
问题 Several questions on Corda deployment: Upon deployment, do all the JAR files in all Corda nodes have to be exactly the same - same build, same version, same hash, etc.. ? Does it mean all parties have to agree on the same code base beforehand? How to implement your own node's logic variant? Is it possible to only share the JARs containing interface of the flow and have different JARs for implementation? Can we drop JAR into plugin directory as required without synchronizing with other nodes?