Giter VIP home page Giter VIP logo

dist-prog-book's Introduction

Programming Models for Distributed Computation

Source repo for the book that I and my students in my course at Northeastern University, CS7680 Special Topics in Computing Systems: Programming Models for Distributed Computing, are writing on the topic of programming models for distributed systems.

This is a book about the programming constructs we use to build distributed systems. These range from the small, RPC, futures, actors, to the large; systems built up of these components like MapReduce and Spark. We explore issues and concerns central to distributed systems like consistency, availability, and fault tolerance, from the lens of the programming models and frameworks that the programmer uses to build these systems.

Please note that this is a work in progress, the book contents are in this repo, but we have not yet polished everything and published the final book online. Expected release: end of December

Note: the chapters can be viewed by manually going to http://dist-prog-book.com/chapter/x/article-name.html, e.g., http://dist-prog-book.com/chapter/2/futures.html. One we finish off the chapters that need the most work, we will "release" the book by putting a proper index page in place.

Note: we are currently in talks with a major publisher to publish this book as open-access textbook! Keep your fingers crossed!🀞

Chapters

  1. RPC
  2. Futures & Promises
  3. Message-passing
  4. Distributed Programming Languages
  5. Languages Extended for Distribution
  6. CAP, Consistency, & CRDTs
  7. Programming Languages & Consistency
  8. Large-scale Parallel Batch Processing
  9. Large-scale Streaming

Editing this book

Workflow

  1. Fork/clone
  2. Edit on your local branch
  3. Make a pull request to the master branch with your changes. Do not commit directly to the repository
  4. After merge, visit the live site http://dist-prog-book.com/chapter/x/your-article.html

Note: We have CI that builds the book for each commit. Pull requests that don't build will not be merged.

Note: when PRs are merged, the site is built and redeployed automatically.

Structure

Chapters are located in the chapter folder of the root directory.

Dependencies

This site uses a Jekyll, a Ruby framework. You'll need Ruby and Bundler installed.

If you have Ruby already installed, to install Bundler, just do sudo gem install bundler

Building & Viewing

Please build and view your site locally before submitting a PR!

cd into the directory where you cloned this repository, then install the required gems with bundle install. This will automatically put the gems into ./vendor/bundle.

Start the server in the context of the bundle:

bundle exec jekyll serve

The generated site is available at http://localhost:4000

Note, this will bring you to the index page. If you'd like to see your chapter, make sure to navigate there explicitly, e.g., http://localhost:4000/chapter/1/rpc.html.

Adding/editing pages

Articles are in Markdown with straightforward YAML frontmatter.

You can include code, math (LaTeX syntax), figures, blockquotes, side notes, etc. You can also use regular BibTeX to make a bibliography. To see everything you can do, I've prepared an example article.

If you would like to add BibTeX entries to the bibliography for your chapter, check the _bibliography directory for a .bib file named after your chapter.

dist-prog-book's People

Contributors

aprasadh avatar aviralg avatar cmeiklejohn avatar cnnrznn avatar fangfanli avatar heathermiller avatar howell avatar kisalaya avatar msabhi avatar muzammilar avatar natdempk avatar pgrosu avatar quentusrex avatar semaj avatar sethtisue avatar tiagocoutinho avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dist-prog-book's Issues

Consider #BigML #DeepLearning #algoritms in scope

We can think of distributed computation as being applied quite differently in typical enterprise applications vs in distributed data analytics and machine learning.

In the former, the boundary is decided by architects and the decision is (arguably) quite removed from the business logic itself.

In the latter, the "business logic" is the algorithm itself and together with the nature and size of big data are (arguably) the main drivers for the distribution decisions.

Given the two are quite distinct and given that traditionally when talking "distributed computing" people think mostly "actors" and "microservices", I suggest we include the latter in the scope of this book.

Small typos

Chapter 1:
"able to communication information successfully"
"the complexity of the of this remote procedure has no upper bound."
"Aggregating multiple Filters is alos possible in Finagle."
"is a modified implementation to of the RPC paradigm"
"it’s become very difficult differentiate"

Is the RPC example in Python3, supposed to fail? It's being called without arguments.

Gitbook?

What about using https://www.gitbook.com/ ?

The tool to build the book itself is free and open source ( https://github.com/GitbookIO/gitbook ), you can preserve the Markdown syntax, you can integrate it through Travis CI and finally you have a very nice output you can already use as WIP meanwhile you work on it ( by pushing it on gh-pages )

Missing license

Great project, I am really looking for the results!

Have you considered a license to use this as open educational resources (or under a Creative Commons license) yet?

Perhaps outline the relationships between guardians and monitors in chapter 4

I've attended the strangeloop talk and read the text in this repo, and I find it sad that O'Hare's work on CSP and Milner's pi-calculus are barely mentioned.

Maybe you can choose to keep them out of scope, but I think it would still be important to remind the reader in chapter 4 that Argus' "guardians" are just a custom name for the concept of monitor, invented by O'Hare in 1974, widely used by that time already, and subsequently used with that name in Java and most other concurrent and distributed languages/frameworks afterwards.

Book renders poorly at half screen width

The content should probably come close to filling the viewport at this width without so much whitespace on the sides. Also something odd is going on with the menu, title, etc.

screen shot 2017-10-20 at 8 41 05 pm

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.