Proceedings of the 2018 Workshop on Advanced Tools, Programming Languages, and PLatforms for Implementing and Evaluating Algorithms for Distributed systems最新文献
Gorums is a novel RPC framework aimed at simplifying development of fault tolerant distributed systems. In this paper, we want to assess whether Gorums can simplify the implementation of a practical fault tolerant service that supports reconfiguration. To this end, we implemented the Raft consensus algorithm using Gorums, and show that Gorums's abstractions are useful for simplifying reconfiguration and Raft's leader election protocol. We do however discover that Raft's log replication protocol is problematic to implement with Gorums's abstractions. We attribute this difficulty to Raft's highly monolithic design, due to bundling multiple protocol features into a single RPC, violating the separation of concerns design principle. We solve this issue by developing extensions to Raft and Gorums. Our performance evaluation shows that our Raft implementation with these extensions performs better or on par with two state-of-the-art implementations. We evaluate both latency and overall throughput during normal operation, as well as under a network partition scenario.
{"title":"An Analysis of Quorum-based Abstractions: A Case Study using Gorums to Implement Raft","authors":"S. Pedersen, H. Meling, Leander Jehl","doi":"10.1145/3231104.3231957","DOIUrl":"https://doi.org/10.1145/3231104.3231957","url":null,"abstract":"Gorums is a novel RPC framework aimed at simplifying development of fault tolerant distributed systems. In this paper, we want to assess whether Gorums can simplify the implementation of a practical fault tolerant service that supports reconfiguration. To this end, we implemented the Raft consensus algorithm using Gorums, and show that Gorums's abstractions are useful for simplifying reconfiguration and Raft's leader election protocol. We do however discover that Raft's log replication protocol is problematic to implement with Gorums's abstractions. We attribute this difficulty to Raft's highly monolithic design, due to bundling multiple protocol features into a single RPC, violating the separation of concerns design principle. We solve this issue by developing extensions to Raft and Gorums. Our performance evaluation shows that our Raft implementation with these extensions performs better or on par with two state-of-the-art implementations. We evaluate both latency and overall throughput during normal operation, as well as under a network partition scenario.","PeriodicalId":164914,"journal":{"name":"Proceedings of the 2018 Workshop on Advanced Tools, Programming Languages, and PLatforms for Implementing and Evaluating Algorithms for Distributed systems","volume":"24 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130840255","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Proceedings of the 2018 Workshop on Advanced Tools, Programming Languages, and PLatforms for Implementing and Evaluating Algorithms for Distributed systems