Programming Distributed Systems 12 Programming Models for - - PowerPoint PPT Presentation

programming distributed systems
SMART_READER_LITE
LIVE PREVIEW

Programming Distributed Systems 12 Programming Models for - - PowerPoint PPT Presentation

Programming Distributed Systems 12 Programming Models for Distributed Systems Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Summer Term 2018 Annette Bieniusa Programming Distributed Systems Summer Term 2018 1/ 18 What is a


slide-1
SLIDE 1

Programming Distributed Systems

12 Programming Models for Distributed Systems Annette Bieniusa

AG Softech FB Informatik TU Kaiserslautern

Summer Term 2018

Annette Bieniusa Programming Distributed Systems Summer Term 2018 1/ 18

slide-2
SLIDE 2

What is a Programming Model?[3]

A programming model is some form of abstract machine

Provides operations to the level above Requires implementations for these operations on the level(s) below

Simplification through abstraction Standard interface that remains stable even if underlying architecture changes Provide different levels of abstraction Often starting point for language development ⇒ Separation of concern between software developers and framework implementors (runtime system, compiler, etc.)

Annette Bieniusa Programming Distributed Systems Summer Term 2018 2/ 18

slide-3
SLIDE 3

Properties of good programming models

Meaningful abstractions System-architecture independent Efficiently implementable Easy to understand

Annette Bieniusa Programming Distributed Systems Summer Term 2018 3/ 18

slide-4
SLIDE 4

What kind of abstractions should a programming model for distributed systems provide?

Annette Bieniusa Programming Distributed Systems Summer Term 2018 4/ 18

slide-5
SLIDE 5

Remote Procedure Call

Annette Bieniusa Programming Distributed Systems Summer Term 2018 5/ 18

slide-6
SLIDE 6

Remote Procedure Call (RPC)

Rather broad classifying term with changing meaning over time

From client-server design to interconnected services

Two entities (caller/callee) with different address spaces communicate over some channel in a request-response mechanism Examples: CORBA (Common Object Request Broker Architecture), Java RMI (Remote Method Invocation), SOAP (Simple Object Access Protocol), gRPC, Finagle . . .

Annette Bieniusa Programming Distributed Systems Summer Term 2018 6/ 18

slide-7
SLIDE 7

Annette Bieniusa Programming Distributed Systems Summer Term 2018 7/ 18

slide-8
SLIDE 8

Aspects of modern RPC

Language-agnostic Serialization (aka marshalling or pickling)

JSON, XML, Protocol Buffers, . . .

Load-balancing

Microservice architectures!

Asynchronous ⇒ RPC as term gets more and more diffuse

Annette Bieniusa Programming Distributed Systems Summer Term 2018 8/ 18

slide-9
SLIDE 9

Futures and Promises

“Asynchronous RPC” A future is a value that will eventually become available Two states:

completed: value is available incomplete: computation for value is not yet complete

Strategies: Eager vs. lazy evaluation Typical application: Web development and user interfaces

Annette Bieniusa Programming Distributed Systems Summer Term 2018 9/ 18

slide-10
SLIDE 10

Actors and Message Passing

Annette Bieniusa Programming Distributed Systems Summer Term 2018 10/ 18

slide-11
SLIDE 11

Characteristics of Actor Model[2]

Actors are isolated units of computation+state that can send messages asynchronously to each other Messages are queued in mailbox and processed sequentially when they match against some pattern/rule No assumptions on message delivery guarantees (Potential) State+behavior changes upon message processing[1] Very close to Alan Kay’s definition of Object-Oriented Programming

Annette Bieniusa Programming Distributed Systems Summer Term 2018 11/ 18

slide-12
SLIDE 12

Actors in the Wild

Erlang

Process-based Pure message passing

monitor and link for notification of process failure/shutdown

OTP (Open Telecom Platform) for generic reusable patterns

Akka

Actor model for the JVM Purges non-matching messages Enforces parental supervision Included in Scala standard library

Orleans

Cloud computing Scalability by replication Fine-grain reconciliation of state with transactions

Annette Bieniusa Programming Distributed Systems Summer Term 2018 12/ 18

slide-13
SLIDE 13

And more programming models

“Big data” Batch-processing

Static data sets allow to distribute computation Typically large latencies

Stream-processing

(Infinite) Sequence of data being pushed to processors Producers vs. Consumers Notion of windows and time Example: Kafka

Annette Bieniusa Programming Distributed Systems Summer Term 2018 13/ 18

slide-14
SLIDE 14

The Future: Distributed Programming Languages

Annette Bieniusa Programming Distributed Systems Summer Term 2018 14/ 18

slide-15
SLIDE 15

From Model to Language

Challenges: Partial failure, concurrency and consistency, latency, . . .

  • 1. Distributed Shared Memory

Runtime maps virtual addresses to physical ones “Single-system” illusion

  • 2. Actors

Explicit communication Location of processes is transparent

  • 3. Dataflow

Data transformations expressed as DAG Processes are transparent Example: MapReduce (Google), Dryad (Microsoft), Spark

Annette Bieniusa Programming Distributed Systems Summer Term 2018 15/ 18

slide-16
SLIDE 16

Example: WordCount in MapReduce

Annette Bieniusa Programming Distributed Systems Summer Term 2018 16/ 18

slide-17
SLIDE 17

Further reading

Material collection by Northeastern University, CS7680 Special Topics in Computing Systems: Programming Models for Distributed Computing

Annette Bieniusa Programming Distributed Systems Summer Term 2018 17/ 18

slide-18
SLIDE 18

[1] Gul Agha. “Concurrent Object-Oriented Programming”. In:

  • Commun. ACM 33.9 (1990), S. 125–141. doi:

10.1145/83880.84528. url: http://doi.acm.org/10.1145/83880.84528. [2] Carl Hewitt, Peter Boehler Bishop und Richard Steiger. “A Universal Modular ACTOR Formalism for Artificial Intelligence”. In: Proceedings of the 3rd International Joint Conference on Artificial Intelligence. Standford, CA, USA, August 20-23, 1973.

  • Hrsg. von Nils J. Nilsson. William Kaufmann, 1973, S. 235–245.

url: http://ijcai.org/Proceedings/73/Papers/027B.pdf. [3] David B. Skillicorn und Domenico Talia. “Models and Languages for Parallel Computation”. In: ACM Comput. Surv. 30.2 (1998),

  • S. 123–169. doi: 10.1145/280277.280278. url:

http://doi.acm.org/10.1145/280277.280278.

Annette Bieniusa Programming Distributed Systems Summer Term 2018 18/ 18