dc.contributor.advisor | Gill, Andy | |
dc.contributor.author | Dawson, Justin Troy | |
dc.date.accessioned | 2019-01-01T20:48:55Z | |
dc.date.available | 2019-01-01T20:48:55Z | |
dc.date.issued | 2018-05-31 | |
dc.date.submitted | 2018 | |
dc.identifier.other | http://dissertations.umi.com/ku:15965 | |
dc.identifier.uri | http://hdl.handle.net/1808/27588 | |
dc.description.abstract | Remote Procedure Calls are an integral part of the internet of things and cloud computing. However, remote procedures, by their very nature, have an expensive overhead cost of a network round trip. There have been many optimizations to amortize the network overhead cost, including asynchronous remote calls and batching requests together. In this dissertation, we present a principled way to batch procedure calls together, called the Remote Monad. The support for monadic structures in languages such as Haskell can be utilized to build a staging mechanism for chains of remote procedures. Our specific formulation of remote monads uses natural transformations to make modular and composable network stacks which can automatically bundle requests into packets by breaking up monadic actions into ideal packets. By observing the properties of these primitive operations, we can leverage a number of tactics to maximize the size of the packets. We have created a framework which has been successfully used to implement the industry standard JSON-RPC protocol, a graphical browser-based library, an efficient byte string implementation, a library to communicate with an Arduino board and database queries all of which have automatic bundling enabled. We demonstrate that the result of this investigation is that the cost of implementing bundling for remote monads can be amortized almost for free, when given a user-supplied packet transportation mechanism. | |
dc.format.extent | 172 pages | |
dc.language.iso | en | |
dc.publisher | University of Kansas | |
dc.rights | Copyright held by the author. | |
dc.subject | Computer science | |
dc.subject | applicative functor | |
dc.subject | batch request | |
dc.subject | Haskell | |
dc.subject | monad | |
dc.subject | natural transformations | |
dc.subject | remote procedure call | |
dc.title | The Remote Monad | |
dc.type | Dissertation | |
dc.contributor.cmtemember | Alexander, Perry | |
dc.contributor.cmtemember | Kulkarni, Prasad | |
dc.contributor.cmtemember | Luo, Bo | |
dc.contributor.cmtemember | Camarda, Kyle | |
dc.thesis.degreeDiscipline | Electrical Engineering & Computer Science | |
dc.thesis.degreeLevel | Ph.D. | |
dc.identifier.orcid | | |
dc.rights.accessrights | openAccess | |