• No results found

The Network as a Language Construct

N/A
N/A
Protected

Academic year: 2021

Share "The Network as a Language Construct"

Copied!
97
0
0

Loading.... (view fulltext now)

Full text

(1)

ESOP 2014, Grenoble, France; 20140410

The Network as a Language Construct

(2)

Actor Programming Languages

(3)

? ? ?

Actor Programming Languages

(4)

Routing

Events

Hierarchical

Layering

Publish/Subscribe for Actors

Actor Programming Languages

(5)

This Talk

Routing

Events

Hierarchical

Layering

Publish/Subscribe for Actors

Actor Programming Languages

Erlang/OTP, Scala/Akka, ...

See Paper

Network

Calculus

Actor

Calculus

(6)
(7)

Functional I/O

Scaling up big-bang from domain-specific to general functional I/O

(8)

Functional I/O

Scaling up big-bang from domain-specific to general functional I/O

Apps in a functional I/O style:

• echo server

• multi-user chat • DNS server

(9)

Functional I/O

Distributed Systems

Scaling up big-bang from domain-specific to general functional I/O

Implementing RabbitMQ

and using it to build distributed systems

Apps in a functional I/O style:

• echo server

• multi-user chat • DNS server

(10)

Functional I/O

Distributed Systems

Scaling up big-bang from domain-specific to general functional I/O

Implementing RabbitMQ

and using it to build distributed systems

Apps in a functional I/O style:

• echo server

• multi-user chat • DNS server

• SSH server

Investigated other paradigms:

• OO languages

• Network architecture • CORBA services

(11)

Ubiquitous Patterns and Problems

Event broadcasting

Naming service

Service discovery

Startup ordering

Crash/exit signalling

Conversation management

(12)

Ubiquitous Patterns and Problems

Event broadcasting

Naming service

Service discovery

Startup ordering

Crash/exit signalling

Conversation management

(13)

Recipe for Actor Languages

Base language actor

(14)
(15)
(16)
(17)
(18)
(19)
(20)

Logging: Requirements Scorecard

Route log entries from producers to consumers Consumers filter log messages Decouple producers from consumers Avoid shared-state explosion Discovery of logging service Only produce if someone's listening Alert when a producer crashes/exits Uniform treatment of I/O

(21)
(22)
(23)

Logging: Requirements Scorecard

Route log entries from producers to consumers

"Router" actor Consumers filter log messages

"Router" actor Decouple producers from consumers

"Router" actor Avoid shared-state explosion

"Router" actor

Discovery of logging service Only produce if someone's listening Alert when a producer crashes/exits Uniform treatment of I/O

(24)
(25)
(26)
(27)

Route by address

(28)

Route by address

Route by content

Messages

Patterns Interests

(29)

Route by address

Route by content

or or or

(30)

Logging: Requirements Scorecard

Route log entries from producers to consumers

pub/sub Consumers filter log messages

pub/sub Decouple producers from consumers

pub/sub Avoid shared-state explosion

pub/sub Discovery of logging service no need! Only produce if someone's listening

Alert when a producer crashes/exits

(31)
(32)

Logging: Requirements Scorecard

Route log entries from producers to consumers

Consumers filter log messages

Decouple producers from consumers

Avoid shared-state explosion

Discovery of logging service Only produce if someone's listening Alert when a producer crashes/exits

(33)
(34)
(35)
(36)
(37)

Shared Conversational Interest

(38)
(39)

What is a Routing Event?

(40)

What is a Routing Event?

(41)

What is a Routing Event?

causes

(42)
(43)
(44)
(45)
(46)
(47)
(48)
(49)
(50)
(51)
(52)
(53)
(54)
(55)
(56)
(57)
(58)
(59)
(60)
(61)

Routing Events for Crash Detection

(62)

Routing Events for Crash Detection

(63)

Routing Events for Crash Detection

(64)

Routing Events for Crash Detection

!

(65)

Routing Events for Crash Detection

!

(66)

Routing Events for Crash Detection

!

(67)

Routing Events for Crash Detection

!

pager

(68)

Logging: Requirements Scorecard

Route log entries from producers to consumers

pub/sub Consumers filter log messages

pub/sub Decouple producers from consumers

pub/sub Avoid shared-state explosion

pub/sub

Discovery of logging service

routing events Only produce if someone's listening

routing events Alert when a producer crashes/exits

routing events
(69)

Logging: Requirements Scorecard

Route log entries from producers to consumers

pub/sub Consumers filter log messages

pub/sub Decouple producers from consumers

pub/sub Avoid shared-state explosion

pub/sub

Discovery of logging service

routing events Only produce if someone's listening

routing events Alert when a producer crashes/exits

routing events
(70)
(71)

Logging: Requirements Scorecard

Route log entries from producers to consumers

Consumers filter log messages

Decouple producers from consumers

Avoid shared-state explosion

Discovery of logging service

Only produce if someone's listening

Alert when a producer crashes/exits

(72)

Layers make I/O Uniform

Logging

pager magic!

(73)

Layers make I/O Uniform

Logging pager magic! ordinary actions Logging pager Pager communication
(74)

Layers make I/O Uniform

Logging pager magic! ordinary actions Logging pager Pager communication
(75)
(76)
(77)
(78)

Layers Compose

(79)

Layers Compose

(80)

Layers Compose

(81)

One Layer = One Protocol

...

...

...

(82)

One Layer = One Protocol

... ... ... ... TCP header Encrypted payload SSH command App message
(83)

One Layer = One Protocol

...

...

UDP header DNS header

(84)

One Layer = One Protocol

Snoops via pub/sub to populate cache!

...

...

UDP header DNS header

(85)
(86)
(87)
(88)
(89)
(90)

Logging: Requirements Scorecard

Route log entries from producers to consumers

pub/sub Consumers filter log messages

pub/sub Decouple producers from consumers

pub/sub Avoid shared-state explosion

pub/sub

Discovery of logging service

routing events Only produce if someone's listening

routing events Alert when a producer crashes/exits

routing events
(91)

Logging: Requirements Scorecard

Route log entries from producers to consumers

pub/sub Consumers filter log messages

pub/sub Decouple producers from consumers

pub/sub Avoid shared-state explosion

pub/sub

Discovery of logging service

routing events Only produce if someone's listening

routing events Alert when a producer crashes/exits

routing events

Uniform treatment of I/O

layering + great additional benefits from layering

(92)
(93)

Marketplace

Minimart

JS-Marketplace

(94)

Marketplace

Minimart

JS-Marketplace

Typed Racket Racket Javascript DNS server (UDP) SSH server (TCP) Chat server Echo server Websocket driver Generic msg broker Websocket driver DOM driver jQuery driver Chat + roster GUI composition

(95)

Marketplace

Minimart

JS-Marketplace

Typed Racket Racket Javascript DNS server (UDP) SSH server (TCP) Chat server Echo server Websocket driver Generic msg broker Websocket driver DOM driver jQuery driver Chat + roster GUI composition Details and experience report in the paper!

(96)

Actor Programming Language

+ Publish/Subscribe

+ Routing Events

+ Hierarchical Layering

Network Calculus Actor Calculus (see paper) Experience reports (see paper)
(97)

Actor Programming Language

+ Publish/Subscribe

+ Routing Events

+ Hierarchical Layering

Thank you!

Network Calculus Actor Calculus (see paper) Experience reports (see paper) http://www.ccs.neu.edu/home/tonyg/marketplace/

References

Related documents