From d21d6479dc3ee9229b26abe213b66cc465f864de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonatan=20P=C3=A5lsson?= Date: Fri, 6 May 2011 14:59:02 +0200 Subject: [PATCH 1/4] UUID & 'Protocol design' moved out one level --- report.lyx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/report.lyx b/report.lyx index 7c7ad6f..a0ea855 100644 --- a/report.lyx +++ b/report.lyx @@ -6622,7 +6622,7 @@ textbf{SpiderMonkey}}{JavaScript engine developed by Mozilla} \end_layout -\begin_layout Subsection +\begin_layout Section UUID \end_layout @@ -6646,7 +6646,7 @@ This problem is not new, and a common solution is to use a Universally Unique e generator. \end_layout -\begin_layout Subsection +\begin_layout Section Protocol design \end_layout From e086bfc25825a50468bc0c023ef009fab481430c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonatan=20P=C3=A5lsson?= Date: Fri, 6 May 2011 15:36:08 +0200 Subject: [PATCH 2/4] Added references to Thrift and BSON. Added text in problems about protocols --- bibliography.bib | 29 +++++++++++++++++++ report.lyx | 73 ++++++++++++++++++++++++++++++------------------ 2 files changed, 75 insertions(+), 27 deletions(-) diff --git a/bibliography.bib b/bibliography.bib index 8ddd134..963a6c9 100644 --- a/bibliography.bib +++ b/bibliography.bib @@ -270,3 +270,32 @@ YEAR = {2011}, URL = "http://dev.w3.org/html5/webstorage/" } + + +@MISC{bson:website, + AUTHOR = "BSON", + TITLE = "BSON - Binary JSON", + MONTH = "May", + YEAR = {2011}, + URL = "http://bsonspec.org" +} + + +@techreport{Slee2007, + author = {Aditya Agarwal and Mark Slee and Marc Kwiatkowski}, + institution = {Facebook}, + interhash = {105e59dd8576a9d92bb7db1ecc7e4980}, + intrahash = {2593c1a9666cfc633d674051d887c8e3}, + title = {Thrift: Scalable Cross-Language Services Implementation}, + url = {http://incubator.apache.org/thrift/static/thrift-20070401.pdf}, + year = 2007, + timestamp = {2009-11-02T17:24:36.000+0100}, + keywords = {Thrift datamodeling language specification}, + added-at = {2009-11-02T17:24:36.000+0100}, + biburl = {http://www.bibsonomy.org/bibtex/22593c1a9666cfc633d674051d887c8e3/voj}, + month = {April}, + abstract = {Thrift is a software library and set of code-generation tools developed at Facebook to expedite development and implementation of efficient and scalable backend services. Its primary goal is to enable efficient and reliable communication across programming languages by abstracting the portions of each language that tend to require the most customization into a common library that is implemented in each language. Specifically, Thrift allows developers to define datatypes and service interfaces in a single language-neutral file and generate all the necessary code to build RPC clients and servers. + +This paper details the motivations and design choices we made in Thrift, as well as some of the more interesting implementation details. It is not intended to be taken as research, but rather it is an exposition on what we did and why. +} +} diff --git a/report.lyx b/report.lyx index a0ea855..b0ed2bf 100644 --- a/report.lyx +++ b/report.lyx @@ -6651,21 +6651,57 @@ Protocol design \end_layout \begin_layout Standard -\begin_inset Note Note -status open - -\begin_layout Plain Layout -Discuss how the early GGS protocol were going to use both UDP and binary - plists to be as fast as possible. - Then discuss how complex these solutions were going to be to implement - in the prototype. - Mention that the modular structure of the GGS allows these features to - be implemented later on, but are not currently implemented. +Initially the GGS protocol was designed to use the UDP protocol for transport. + Due to the lack of error checking in the UDP protocol, the UDP protocol + is faster than the TCP protocol, this was a main reason to use UDP. + The GGS does however need error checking to be as reliable as possible, + therefore an error checking layer would have to be placed on top of UDP. \end_layout +\begin_layout Standard +The development of an error checking layer was weighed against the implementatio +n of TCP instead of UDP, thus losing some speed. + Even though speed was lost, TCP was chosen due to the relative ease of + implementation compared to UDP. + Due to the modularity of the GGS, a UDP extension is possible by replacing + the network parts of the GGS. +\end_layout + +\begin_layout Standard +Furthermore, in a move to increase the speed of the GGS prototcol the binary + BSON protocol +\begin_inset CommandInset citation +LatexCommand citet +key "bson:website" + \end_inset + was initially considered. + BSON is a protocol which can be used for vert fast traversal of data. + The BSON protocol is however rather difficult to read in its plain format, + and no implementation has been bade for the GGS. +\end_layout +\begin_layout Standard +The Apache Thrift +\begin_inset CommandInset citation +LatexCommand citep +key "Slee2007" + +\end_inset + + was also an alternative. + Using Thrift would mean the GGS would feature a standard protocol for network + communication. + Before finding out about Thrift, an implementation of the GGS protocol + had already been made, moving to Thrift would mean too much work. +\end_layout + +\begin_layout Standard +The use of Thrift, BSON, or other protocols can be supported quite easily + by develpping protocol modules for each protocol. + No protocol modules for these protocols have however been developed during + the writing of this thesis \end_layout \begin_layout Section @@ -6772,23 +6808,6 @@ Coordinator club up in the exact state it was prior to the fire. \end_layout -\begin_layout Section -Usability -\end_layout - -\begin_layout Standard -\begin_inset Note Note -status open - -\begin_layout Plain Layout -Discuss how the GGS can be difficult to use for people not versed with Erlang -\end_layout - -\end_inset - - -\end_layout - \begin_layout Chapter Results and discussion \begin_inset CommandInset label From aad3e2118caa39d6e4c366eb35f08136e0a5eeda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonatan=20P=C3=A5lsson?= Date: Fri, 6 May 2011 15:43:20 +0200 Subject: [PATCH 3/4] Typo in figure 3.3 text --- report.lyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/report.lyx b/report.lyx index b0ed2bf..19e5270 100644 --- a/report.lyx +++ b/report.lyx @@ -6077,7 +6077,7 @@ name "fig:redundancy" \end_inset To the left normal execution is pictured; the server state is backed up. - To the left; the exceptional excution, where the state is retrieved from + To the right; the exceptional excution, where the state is retrieved from the backup to repopulate the server. \end_layout From 38369d71d525c31d8da4b895636fc89e5eed7590 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonatan=20P=C3=A5lsson?= Date: Fri, 6 May 2011 15:46:16 +0200 Subject: [PATCH 4/4] Fixed an old bad merge --- report.lyx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/report.lyx b/report.lyx index 19e5270..bdc12ed 100644 --- a/report.lyx +++ b/report.lyx @@ -1406,12 +1406,10 @@ The first prototype of the GGS consisted of simple modules, however, due \begin_layout Standard Once the basic structure of the GGS had been established, the first prototype was removed, remaining was the structure of the modules and the internal - flow of the application.<<<<<<< HEAD This could be seen as an iterative - workflow, with the first prototype being the first iteration. - The second iteration later became the result of the GGS + flow of the application. \end_layout -\begin_layout Subsection +\begin_layout Standard Design This could be seen as an interative workflow, with the first prototype being the first iteration. The second iteration later became the final result of the GGS.