Erlang a platform for developing distributed software systems
|
|
|
- Raymond Hodge
- 9 years ago
- Views:
Transcription
1 Erlang a platform for developing distributed software systems Lars-Åke Fredlund 1 / 55
2 Problems of distributed systems Distributed programming is hard Challenges for concurrency: process coordination and communication 2 / 55
3 Problems of distributed systems Distributed programming is hard Challenges for concurrency: process coordination and communication And challenges for distributed software: heterogeneous systems security, reliability (lack of control) performance 2 / 55
4 Distributed Programming Today Todays contrasts: Vision easy programming of distributed systems The nightmare/reality Web services, XML, Apache, SOAP, WSDL,... Why are Web services a nightmare? Too many standards, too many tools, too many layers, too complex! Erlang is an Industrially proven solution for developing and maintaining demanding distributed applications Good qualities of Erlang as a distributed systems platform: Complexity encapsulated in a programming language, good performance, efficient data formats, debuggable, not complex 3 / 55
5 Erlang as a component platform: a summary Processes are the components 4 / 55
6 Erlang as a component platform: a summary Processes are the components Components (processes) communicate by binary asynchronous message passing 4 / 55
7 Erlang as a component platform: a summary Processes are the components Components (processes) communicate by binary asynchronous message passing Component communication does not depend on whether components are located in the same node, or physically remote (distribution is seamless) 4 / 55
8 Erlang as a component platform: a summary Processes are the components Components (processes) communicate by binary asynchronous message passing Component communication does not depend on whether components are located in the same node, or physically remote (distribution is seamless) Component programming is facilitated by using design patterns (client/server patterns, patterns for fault tolerant systems, etc) and larger components (web server, database) 4 / 55
9 Erlang as a component platform: a summary Processes are the components Components (processes) communicate by binary asynchronous message passing Component communication does not depend on whether components are located in the same node, or physically remote (distribution is seamless) Component programming is facilitated by using design patterns (client/server patterns, patterns for fault tolerant systems, etc) and larger components (web server, database) Component maintenance, and fault tolerance is facilitated by language features and design patterns 4 / 55
10 Erlang as a component platform: a summary Processes are the components Components (processes) communicate by binary asynchronous message passing Component communication does not depend on whether components are located in the same node, or physically remote (distribution is seamless) Component programming is facilitated by using design patterns (client/server patterns, patterns for fault tolerant systems, etc) and larger components (web server, database) Component maintenance, and fault tolerance is facilitated by language features and design patterns But the devil is in the details: let s see them! 4 / 55
11 Erlang/OTP Basis: a general purpose functional programming language Automatic Garbage Collection With lightweight processes (in terms of speed and memory requirements) Typical software can make use of many thousands of processes; smp supported on standard platforms Implemented using virtual machine technology and compilation to native code (Intel x86, Sparc, Power PC) Available on many OS:es (Windows, Linux, Solaris,... ) Supported by extensive libraries: OTP open telecom platform provides tools such as components, distributed database, web server, etc 5 / 55
12 Erlang/OTP History Erlang language born in 1983 Used inside and outside Ericsson for telecommunication applications, for soft real-time systems,... Industrial users: Ericsson, Swedish Telecom, T-Mobile (UK), and many smaller start-up companies (LambdaStream in A Coruña) Application example: High-speed ATM switch developed in Erlang (2 million lines of Erlang code), C code ( lines of code), and lines of Java code Other examples: parts of Facebook chat written in Erlang (70 million users), CouchDB (integrated in Ubuntu 9.10), users at Amazon, Yahoo,... Open-source; install from 6 / 55
13 Erlang is becoming popular C and C++ job offers over the last 5 years: Erlang job offers the last 5 years: 7 / 55
14 Erlang as a source of inspiration Concurrency and communication model from Erlang are also influencing other programming languages and libraries like Scala, Node.js, Clojure,... So lets see the main features... 8 / 55
15 Erlang basis A simple functional programming language: Simple data constructors: integers (2), floats (2.3), atoms (hola), tuples ({2,hola}) and lists ([2,hola],[2 X]), records (#process{label=hola}), bit strings (<<1:1,0:1>>) Call-by-value Variables can be assigned once only (Prolog heritage) No static type system! That is, expect runtime errors and exceptions Similar to a scripting language (python, perl) why popular? 9 / 55
16 Erlang basis, II Example: fac(n) -> if N == 0 -> 1; true -> N*fac(N-1) end. Variables begin with a capital (N) Atoms (symbols) begin with a lowercase letter (fac,true) 10 / 55
17 Erlang basis, II Example: fac(n) -> if N == 0 -> 1; true -> N*fac(N-1) end. Variables begin with a capital (N) Atoms (symbols) begin with a lowercase letter (fac,true) But this also compiles without warning: fac(n) -> if N == 0 -> 1; true -> "upm"*fac(n-1) end. 10 / 55
18 Erlang basis, II Example: fac(n) -> if N == 0 -> 1; true -> N*fac(N-1) end. Variables begin with a capital (N) Atoms (symbols) begin with a lowercase letter (fac,true) But this also compiles without warning: fac(n) -> if N == 0 -> 1; true -> "upm"*fac(n-1) end. And this call is permitted (what happens?): fac(0.5) 10 / 55
19 Concurrency and Communication Concurrency and Communication model inspired by the Actor model (and earlier Ericsson software/hardware products) Processes execute Erlang functions No implicit sharing of data (shared variables) between proceses Two interprocess communication mechanisms exists: processes can send asynchronous messages to each other (message passing) processes get notified when a related process dies (failure detectors) 11 / 55
20 Erlang Processes M2 M1 Pid f(arg1,...,argn) Processes execute Erlang functions (f(arg1,..., Argn)) A process has a unique name, a process identifier (Pid) Messages sent to a process is stored in a mailbox (M2,M1) 12 / 55
21 Erlang Communication and Concurrency Primitives Sending a message to a process: Pid!{request, self(), a} Retrieving messages from the process mailbox (queue): receive {request, RequestPid, Resource} -> lock(resource), RequestPid!ok end Creating a new process: spawn(fun () -> locker!{request,b} end) A name server assigns symbolic names to processes: locker!{request,a} 13 / 55
22 Communication Primitives, receiving Retrieving a message from the process mailbox: receive pat 1 when g 1 -> expr 1 ;... ; pat n when g n -> expr n after time -> expr end pat 1 is matched against the oldest message, and checked against the guardg 1. If a match, it is removed from the mailbox and expr 1 is executed If there is no match, pattern pat 2 is tried, and so on... If no pattern matches the first message, it is kept in the mailbox and the second oldest message is checked, etc after provides a timeout if no message matches any pattern 14 / 55
23 Receive Examples Given a receive statement: receive {inc,x} -> X+1; Other -> error end and the queue isa {inc,5} what happens? 15 / 55
24 Receive Examples Given a receive statement: receive {inc,x} -> X+1; Other -> error end and the queue isa {inc,5} what happens? Suppose the queue is a {inc, 5} b what happens? 15 / 55
25 Receive Examples Given a receive statement: receive {inc,x} -> X+1; Other -> error end and the queue isa {inc,5} what happens? Suppose the queue is a {inc, 5} b what happens? Suppose the receive statement is receive {inc,x} -> X+1 end and the queue is a {inc, 5} b what happens? 15 / 55
26 Receive Examples Given a receive statement: receive {inc,x} -> X+1; Other -> error end and the queue isa {inc,5} what happens? Suppose the queue is a {inc, 5} b what happens? Suppose the receive statement is receive {inc,x} -> X+1 end and the queue is a {inc, 5} b what happens? And if the queue isa b? 15 / 55
27 Communication Guarantees Messages sent from any process P to any process Q is delivered in order (or P or Q crashes) P M2 M1 Q P M2 M1 Q 16 / 55
28 Communication Guarantees Part II But the following situation is possible: Process P sends a message M1 to process Q and P then a message M2 to process R R forwards the message M2 to Q Process Q may receive M2 from R before M1 from Q Mimics TCP/IP communication guarantees 17 / 55
29 A Simple Concurrent Program facserver() -> receive {request, N, Pid} when is_integer(n), N>0, pid(pid) -> spawn(fun () -> Pid!(fac:fac(N)) end), facserver() end. 18 / 55
30 A Simple Concurrent Program facserver() -> receive {request, N, Pid} when is_integer(n), N>0, pid(pid) -> spawn(fun () -> Pid!(fac:fac(N)) end), facserver() end. 1> spawn(server,facserver,[]). <0.33.0> 18 / 55
31 A Simple Concurrent Program facserver() -> receive {request, N, Pid} when is_integer(n), N>0, pid(pid) -> spawn(fun () -> Pid!(fac:fac(N)) end), facserver() end. 1> spawn(server,facserver,[]). <0.33.0> 2> X = spawn(server,facserver,[]). <0.35.0> 18 / 55
32 A Simple Concurrent Program facserver() -> receive {request, N, Pid} when is_integer(n), N>0, pid(pid) -> spawn(fun () -> Pid!(fac:fac(N)) end), facserver() end. 1> spawn(server,facserver,[]). <0.33.0> 2> X = spawn(server,facserver,[]). <0.35.0> 3> X!{request,2,self()}. {request,2,<0.31.0>} 18 / 55
33 A Simple Concurrent Program facserver() -> receive {request, N, Pid} when is_integer(n), N>0, pid(pid) -> spawn(fun () -> Pid!(fac:fac(N)) end), facserver() end. 1> spawn(server,facserver,[]). <0.33.0> 2> X = spawn(server,facserver,[]). <0.35.0> 3> X!{request,2,self()}. {request,2,<0.31.0>} 4> X!{request,4,self()}, receive Y -> Y end / 55
34 Erlang and Errors Unavoidably errors happen in distributed systems 19 / 55
35 Erlang and Errors Unavoidably errors happen in distributed systems hardware (computers) fail 19 / 55
36 Erlang and Errors Unavoidably errors happen in distributed systems hardware (computers) fail network links fail 19 / 55
37 Erlang and Errors Unavoidably errors happen in distributed systems hardware (computers) fail network links fail local resources (memory) runs out 19 / 55
38 Erlang and Errors Unavoidably errors happen in distributed systems hardware (computers) fail network links fail local resources (memory) runs out Errors happen, good fault-tolerant systems cope with them 19 / 55
39 Erlang and Errors Unavoidably errors happen in distributed systems hardware (computers) fail network links fail local resources (memory) runs out Errors happen, good fault-tolerant systems cope with them Many Erlang products have high availability goals: 24/7, % of the time for the Ericsson AXD 301 switch (31 ms downtime per year!) 19 / 55
40 Erlang and Errors Unavoidably errors happen in distributed systems hardware (computers) fail network links fail local resources (memory) runs out Errors happen, good fault-tolerant systems cope with them Many Erlang products have high availability goals: 24/7, % of the time for the Ericsson AXD 301 switch (31 ms downtime per year!) The Erlang philosophy is to do error detection and recovery, but not everywhere in the code, only in certain places 19 / 55
41 Erlang and Errors Unavoidably errors happen in distributed systems hardware (computers) fail network links fail local resources (memory) runs out Errors happen, good fault-tolerant systems cope with them Many Erlang products have high availability goals: 24/7, % of the time for the Ericsson AXD 301 switch (31 ms downtime per year!) The Erlang philosophy is to do error detection and recovery, but not everywhere in the code, only in certain places Higher-level Erlang components offer convenient handling of errors 19 / 55
42 Erlang and Errors, part II Error handling example: g(y) -> X = f(y), case X of {ok, Result} -> Result; reallybaderror -> 0 % May crash because of... end. 20 / 55
43 Erlang and Errors, part II Error handling example: g(y) -> X = f(y), case X of {ok, Result} -> Result; reallybaderror -> 0 % May crash because of... end. instead one usually writes g(y) -> {ok, Result} = f(y), Result. 20 / 55
44 Erlang and Errors, part II Error handling example: g(y) -> X = f(y), case X of {ok, Result} -> Result; reallybaderror -> 0 % May crash because of... end. instead one usually writes g(y) -> {ok, Result} = f(y), Result. The local process will crash; another process is responsible from recovering (restaring the crashed process) 20 / 55
45 Erlang and Errors, part II Error handling example: g(y) -> X = f(y), case X of {ok, Result} -> Result; reallybaderror -> 0 % May crash because of... end. instead one usually writes g(y) -> {ok, Result} = f(y), Result. The local process will crash; another process is responsible from recovering (restaring the crashed process) Error detection and recovery is localised to special processes, to special parts of the code (aspect oriented programming) 20 / 55
46 Error Detection and Recovery: local level Exceptions are generated at runtime due to: type mismatches (10 "upm") failed pattern matches, processes crashing,... Exceptions caused by an expressionemay be recovered inside a process using the construct try e catch m end Example: try g(y) catch Error -> 0 end 21 / 55
47 Error Detection and Recovery: process level Within a set of processes, via bidirectional process links set up using the link(pid) function call Example: 22 / 55
48 Error Detection and Recovery: process level Within a set of processes, via bidirectional process links set up using the link(pid) function call Example: Initially we have a system of 3 independent processes: P 2 P 1 P 3 22 / 55
49 Error Detection and Recovery: process level Within a set of processes, via bidirectional process links set up using the link(pid) function call Example: Result of executing link(p1) in P2: P 2 P 1 P 3 22 / 55
50 Error Detection and Recovery: process level Within a set of processes, via bidirectional process links set up using the link(pid) function call Example: Result of executing link(p1) and link(p3) in P2: P 2 P 1 P 3 22 / 55
51 Error Detection and Recovery: process level Within a set of processes, via bidirectional process links set up using the link(pid) function call Example: Result of executing link(p1) and link(p3) in P2: P 2 P 1 P 3 IfP 2 dies abnormally thenp 1 andp 3 can choose to die IfP 1 dies abnormally thenp 2 can choose to die as well 22 / 55
52 Error Detection and Recovery: process level Within a set of processes, via bidirectional process links set up using the link(pid) function call Example: Result of executing link(p1) and link(p3) in P2: P 2 P 1 P 3 IfP 2 dies abnormally thenp 1 andp 3 can choose to die IfP 1 dies abnormally thenp 2 can choose to die as well Alternatively whenp 2 dies bothp 1 andp 3 receives a message concerning the termination 22 / 55
53 What is Erlang suitable for? Generally intended for long-running programs Processes with state, that perform concurrent (and maybe distributed) activities Typical is to have a continously running system (24/7) Programs need to be fault-tolerant (because hardware and software invariably fail) So hardware is typically replicated as well and thus we have a need for distributed programming (addressing physically isolated processors) 23 / 55
54 Distributed Erlang Processes run on nodes (computers) in a network Process communication between nodes in different process Node 1 Node 2 Distribution is (mostly) transparent No syntactic difference between inter-node or intra-node process communication Communication link failure or node failures are interpreted as process failures (detected using linking) 24 / 55
55 Distributed Erlang Processes run on nodes (computers) in a network Process communication between nodes in different process Node 1 Node 2 Distribution is (mostly) transparent No syntactic difference between inter-node or intra-node process communication Communication link failure or node failures are interpreted as process failures (detected using linking) Compare with Java: no references to objects which are difficult to communicate in messages (copy?) The only references are process identifiers which have the same meaning at both sending and receiving process 24 / 55
56 Erlang Programming Styles Using only the basic communication primitives (send/receive) makes for messy code everybody invents their own style and repeats lots of code for every program We need at least a standard way to: ask processes about their status a standard way to handle process start, termination and restarts to handle code upgrading and maybe more structured communication patterns: who communicates with whom, in what role? / 55
57 Erlang Software Architecture We need to structure the code according to some more design principles, to obtain more regular code For Erlang one generally uses the components and the framework of the OTP library Open Telecom Platform as an infrastructure Today we are going to illustrate a number of these design principles, and how they are used in practise 26 / 55
58 OTP an Erlang library of components A library of components for typical programming patterns (e.g., client server, managing processes,... ) In contrast to many component frameworks OTP is not concerned with how to link components together but with: operation and management of components fault-handling for components 27 / 55
59 OTP an Erlang library of components A library of components for typical programming patterns (e.g., client server, managing processes,... ) In contrast to many component frameworks OTP is not concerned with how to link components together but with: operation and management of components fault-handling for components OTP components uses similar behaviour wrt management concerns such as Starting a component Terminating a component Dynamic code update (change code at runtime) Inspecting components Handling errors 27 / 55
60 Component/Behaviour Style Declarative specifications are preferred Callback style Component descriptions are composed of two parts: A generic part containg the generic component code A concrete one where the default behaviour is specialised to the concrete application by supplying function definitions As a result: a weak object-orientation style (very weak type checking of component specialisation) Except it is based on processes, a pretty powerful concept 28 / 55
61 OTP components Example OTP components: Application provides bigger building blocks like a database (Mnesia) Supervisor used to start and bring down a set of processes, and to manage processes when errors occur Generic Server provides a client server communication facility Event Handling for reporting system events to interested processes Finite State Machine provides a component facilitating the programming of finite state machines in Erlang 29 / 55
62 Event Handling: Processes An implementation of a publish-and-subscribe behaviour An Event manager controls the publishing of events Event handlers register interest to receive events from a particular event manager by sending a message to the event manager Some process generates an event, which is sent to all the interested event handlers (Event generator) 30 / 55
63 Event Handling: Behaviour (1): The event handlers registers themselves: P Event Handler Event Generator A register Event Handler(P) Mgr register Event Handler(Q) Q Event Handler Event Manager Event Generator B register Event Handler(R) R Event Handler 31 / 55
64 Event Handling: Behaviour (2): Some process generates an event: P Event Handler Event Generator A genevent(ev) Mgr Event Manager Q Event Handler Event Generator B R Event Handler 31 / 55
65 Event Handling: Behaviour (3): The event is handled by the event handlers: P Event Handler Event Generator A gotevent(ev) Mgr gotevent(ev) Q Event Handler Event Manager Event Generator B gotevent(ev) R Event Handler 31 / 55
66 Event Handling: Behaviour part II Events can be delivered synchronously or asynchronously. The synchronous case means returning a reply to the event generator: 32 / 55
67 Event Handling: Behaviour part II Events can be delivered synchronously or asynchronously. The synchronous case means returning a reply to the event generator: (4): All event handlers return their status to the event handler when they have finished: P Event Handler Event Generator A handledevent(ev) Mgr handledevent(ev) Q Event Handler Event Manager Event Generator B handledevent(ev) R Event Handler 32 / 55
68 Event Handling: Behaviour part II Events can be delivered synchronously or asynchronously. The synchronous case means returning a reply to the event generator: (5): And the event handler tells the event generator when it has finished its execution P Event Handler Event Generator A allhandlersreadywith(ev) Mgr Q Event Handler Event Manager Event Generator B R Event Handler 32 / 55
69 Event Handling, behaviour overview Works distributedly, like all other components (behaviours) Includes managerial aspects: Error handling: what happens if an event handler crashes? Permits changing event handlers Permits shutting down event handlers Includes code upgrade facility 33 / 55
70 The Supervisor Component Applications are often structured as supervision trees, consisting of supervisors and workers Supervisor process Worker process A supervisor starts child processes, monitors them, handles termination and stops them on request The actions of the supervisor are described in a declarative fashion (as a text description) A child process may itself be a supervisor 34 / 55
71 Supervision Dynamics S Supervisor process S2 S3 Worker process C1 C2 C3 When a child process C1 dies (due to an error condition), its supervisor S3 is notified and can elect to: do nothing itself die (in turn notifying its supervisor S) restart the child process (and maybe its siblings) kill all the sibling processes (C2,C3) of the dead process 35 / 55
72 Supervision Dynamics S Supervisor process S2 S3 Worker process C1 C2 C3 When a child process C1 dies (due to an error condition), its supervisor S3 is notified and can elect to: do nothing itself die (in turn notifying its supervisor S) restart the child process (and maybe its siblings) kill all the sibling processes (C2,C3) of the dead process One can control the frequency of restarts, and the maximum number of restarts to attempt it is no good having a process continuing to restart and crash 35 / 55
73 Supervision Examples A file streaming application: If the sender crashes, its supervisor restarts it (and vice versa for the receiver) 36 / 55
74 Supervision Examples A file streaming application: If the sender crashes, its supervisor restarts it (and vice versa for the receiver) A file transfer application (with acknowledgment handling): If the sender crashes, both it and the receiver is restarted 36 / 55
75 The Generic Server Component gen server is the most used component in Erlang systems Provides a standard way to implement a server process, and interface code for clients to access the server The client server model has a central server, and an arbitrary number of clients: Client A request reply Server Client B Client C 37 / 55
76 The Generic Server Component Client A request reply Server Client B Client C Clients makes requests to the server, who optionally replies A server has a state, which is preserved between requests A generic server is implemented by providing a callback module specifying the concrete actions of the server (server state handling, and response to messages) 38 / 55
77 Generic Server Interaction (1): A client sends a request: Client P Client request R State0 Server Process Client Q 39 / 55
78 Generic Server Interaction (2): The server does some internal processing to answer, resulting in a new server state State1: Client P Internal processing Client R State1 Server Process Client Q 39 / 55
79 Generic Server Interaction (3a): And eventually sends the reply to the client: Client P Client reply R State1 Server Process Client Q 39 / 55
80 Generic Server Interaction (3b): Or it doesn t send a reply, but may do so in the future, and in the meanwhile accepts a new request: Client P Client R request State1 Server Process Client Q 39 / 55
81 Generic Server: client interface Client interface: Res = gen_server:call(servername, Message) A call to ServerName (a pid) with a return value gen_server:cast(servername, Message) When no return value is expected 40 / 55
82 Generic Server: server interface Server interface: init(args) at startup, returns the initial state of the server handle_call(message, ClientId, ServerState) called when a gen_server:call is made, ServerState is the current state of the server. Should return a new server state handle_cast(message, ServerState) called when a gen_server:cast is made. Should return a new server state 41 / 55
83 Generic Server: server returns Server return values: {reply, Value, NewState} server replies with Value, and new server state is NewState {noreply, NewState} server send no reply (yet), but may do so in the future, the new server state is NewState {stop, Value} server stops but first returns Value to the current request 42 / 55
84 A simple generic server example We want to implement a simple server locker that grants access to a resource for only a single client at a time Clients request access to the server using a message request Once a client has finished with the resource it is released by sending the message release A client function that requests the resource, applies a function F on the resource, and then releases: client(f) -> {ok, Resource} = gen_server:call(locker, request), %% We have resource, call F NewResource = apply(f,[resource]), gen_server:call(locker, {release, NewResource}). 43 / 55
85 Server side: server state example The state of the server is a tuple of two components: the current value of the resource, and a list where the first element is the client currently accessing the resource, and the rest of the list is the queue of clients wanting to access it The initial state is {Res, []} no clients accessing An example state: {Res, [Pid1,Pid2,Pid3]} Pid1 is accessing the resource, Pid2,Pid3 are awaiting their turn 44 / 55
86 Server side: callback module example init(res) -> {ok, {Res, []}}. %% No clients queued handle_call(request, Client, {Res,Queue}) -> if Queue==[] -> {reply, {ok,res}, {Res, [Client]}}; Queue=/=[] -> {noreply, {Res, Queue++[Client]}} end; handle_call({release,res}, Client, {_, Queue}) -> case Queue of [Client] -> {reply, done, {Res,[]}}; [Client,FirstWaiter RestQueue] -> gen_server:reply(firstwaiter, {ok,res}), {reply, done, {Res, [FirstWaiter RestQueue]}} end. 45 / 55
87 example: handling errors But what happens if the client crashes while it has access to the resource 46 / 55
88 example: handling errors But what happens if the client crashes while it has access to the resource... well the server will stay locked for ever 46 / 55
89 example: handling errors But what happens if the client crashes while it has access to the resource... well the server will stay locked for ever We had better handle this case; the callback function handle_info will be called whenever a linked process terminates 46 / 55
90 Handling Errors in the example Modifying handle call to link to the client requesting access: handle_call(request, Client, {Res,Queue}) -> link(client), if Queue==[] -> {reply, {ok,res}, {Res, [Client]}}; Queue=/=[] -> {noreply, {Res, Queue++[Client]}} end; 47 / 55
91 Handling Errors in the example Adding the function which handles errors: handle_info({ EXIT,Client,_},{Res,Queue}) -> case Queue of [Client,FirstWaiter RestQueue] -> gen_server:reply(firstwaiter, {ok, Res}), {noreply, {Res,[FirstWaiter RestQueue]}}; _ -> {noreply, {Res,remove(Client,Queue)}} end. 48 / 55
92 Error Handling in the Generic Server component Note some nice properties of error handling in generic servers: only handling errors in one (1) place in the code only handling errors at very controlled points in time (when not processing a request) We control error handling we do not letting error handling control us! Such separation of concerns (between error handling and normal processing) is the real key to the power of the OTP components! 49 / 55
93 Generic Server Actions Not shown: handling timeouts Generic behaviours handled mostly automatically by the component: How to trace and log the actions of the server How to terminate and restart a server 50 / 55
94 Generic Server Code Upgrades Since components are alive for a long time, it may be necessary to update the code of a component (its implementation) during its lifetime The generic server behaviour, like other Erlang behaviours, offers a standard method to do this Upgrades are handled through the code_change(info1,oldstate,info2) callback function which is called when a code change has taken place OldState is the state of the server running the old version of the code The callback should return a tuple {ok,newstate} 51 / 55
95 Code Update in the example server Suppose that we want to add a field NumOfRequest to the server state for counting the number of a requests made to the resource Recall that the state is {Res, WaitingClients} To do a code upgrade we provide in the new server implementation the function: code_change(_, {Res,WaitingClients}, _) -> {ok, {Res, WaitingClients, length(waitingclients)}}. 52 / 55
96 Server Component messages handling philosophy The generic server component processes messages in strict sequential (oldest first) order Good: makes for good performance (no searching of mailbox), bounded queues (no messages left in queue) Bad: can make for complex processing logic (e.g., how to cleanly implement a one-bit buffer with two messages: push and pop) Normally leads to a more complex server state (having queues inside the server state) Other more stateful components are possible, accepting different messages at different times But how is low-level performance impacted, and how are unexpected messages handled (growing queues)? A central problem in the design of Erlang processes! 53 / 55
97 Erlang/OTP Tools Mnesia database relational/object data model, soft-real time properties, transactions, language integration, persistence, monitoring... Yaws web server for serving dynamic content produced by Erlang code (good performance, elegant everything written in Erlang; no need for Perl) Interfaces to other applications and systems: SQL databases, libraries for communicating with Java, XML parsers... languages: port concept databases And SASL (release upgrade, alarm handling), SNMP, / 55
98 Validating Erlang Programs Dialyzer type checking by static analysis (necessary because of dynamic run-time typing) As usual, testing: QuickCheck ( - a testing tool both for the sequential and the concurrent part of Erlang Trace log inspection (ad-hoc) Model checking my tool McErlang ( fred/mcerlang) 55 / 55
Microservices and Erlang/OTP. Christoph Iserlohn
Microservices and Erlang/OTP Christoph Iserlohn About me Senior Consultant @ innoq MacPorts Team member Agenda > Microservices > Erlang / OTP > How they fit together Microservices Attempt of definition
Middleware Lou Somers
Middleware Lou Somers April 18, 2002 1 Contents Overview Definition, goals, requirements Four categories of middleware Transactional, message oriented, procedural, object Middleware examples XML-RPC, SOAP,
Erlang in Production. I wish I'd known that when I started Or This is nothing like the brochure :-(
Erlang in Production I wish I'd known that when I started Or This is nothing like the brochure :-( Who the Hell are you? ShoreTel Sky http://shoretelsky.com Enterprise Grade VoIP Elevator Pitch Our Systems
Building highly available systems in Erlang. Joe Armstrong
Building highly available systems in Erlang Joe Armstrong How can we get 10 nines reliability? Why Erlang? Erlang was designed to program fault-tolerant systems Overview n Types of HA systems n Architecture/Algorithms
Replication on Virtual Machines
Replication on Virtual Machines Siggi Cherem CS 717 November 23rd, 2004 Outline 1 Introduction The Java Virtual Machine 2 Napper, Alvisi, Vin - DSN 2003 Introduction JVM as state machine Addressing non-determinism
Typeset in L A TEX from SGML source using the DocBuilder-0.9.8 Document System.
OS Mon version 2.1 Typeset in L A TEX from SGML source using the DocBuilder-0.9.8 Document System. Contents 1 OS Mon Reference Manual 1 1.1 os mon............................................ 4 1.2 cpu
Operating System Monitor Application (OS MON)
Operating System Monitor Application (OS MON) version 1.3 Joe Armstrong 1997-05-02 Typeset in L A TEX from SGML source using the DOCBUILDER 3.0 Document System. Contents 1 OS MON Reference Manual 1 1.1
Distributed File Systems
Distributed File Systems Paul Krzyzanowski Rutgers University October 28, 2012 1 Introduction The classic network file systems we examined, NFS, CIFS, AFS, Coda, were designed as client-server applications.
A programming model in Cloud: MapReduce
A programming model in Cloud: MapReduce Programming model and implementation developed by Google for processing large data sets Users specify a map function to generate a set of intermediate key/value
General Introduction
Managed Runtime Technology: General Introduction Xiao-Feng Li ([email protected]) 2012-10-10 Agenda Virtual machines Managed runtime systems EE and MM (JIT and GC) Summary 10/10/2012 Managed Runtime
Erlang in E-Commerce and Banking
Erlang in E-Commerce and Banking or Painless Payment Processing by Erik Stenman CTO, Kreditor Europe AB Creative Payment Solutions The business model: Kreditor Bring trust to Internet shopping. Bring old
FioranoMQ 9. High Availability Guide
FioranoMQ 9 High Availability Guide Copyright (c) 1999-2008, Fiorano Software Technologies Pvt. Ltd., Copyright (c) 2008-2009, Fiorano Software Pty. Ltd. All rights reserved. This software is the confidential
The EMSX Platform. A Modular, Scalable, Efficient, Adaptable Platform to Manage Multi-technology Networks. A White Paper.
The EMSX Platform A Modular, Scalable, Efficient, Adaptable Platform to Manage Multi-technology Networks A White Paper November 2002 Abstract: The EMSX Platform is a set of components that together provide
Scala Actors Library. Robert Hilbrich
Scala Actors Library Robert Hilbrich Foreword and Disclaimer I am not going to teach you Scala. However, I want to: Introduce a library Explain what I use it for My Goal is to: Give you a basic idea about
Real-time Data Replication
Real-time Data Replication from Oracle to other databases using DataCurrents WHITEPAPER Contents Data Replication Concepts... 2 Real time Data Replication... 3 Heterogeneous Data Replication... 4 Different
Using Linux Clusters as VoD Servers
HAC LUCE Using Linux Clusters as VoD Servers Víctor M. Guĺıas Fernández [email protected] Computer Science Department University of A Corunha funded by: Outline Background: The Borg Cluster Video on Demand.
Outline. Failure Types
Outline Database Management and Tuning Johann Gamper Free University of Bozen-Bolzano Faculty of Computer Science IDSE Unit 11 1 2 Conclusion Acknowledgements: The slides are provided by Nikolaus Augsten
Chapter 6, The Operating System Machine Level
Chapter 6, The Operating System Machine Level 6.1 Virtual Memory 6.2 Virtual I/O Instructions 6.3 Virtual Instructions For Parallel Processing 6.4 Example Operating Systems 6.5 Summary Virtual Memory General
Real Time Programming: Concepts
Real Time Programming: Concepts Radek Pelánek Plan at first we will study basic concepts related to real time programming then we will have a look at specific programming languages and study how they realize
Configuring Apache Derby for Performance and Durability Olav Sandstå
Configuring Apache Derby for Performance and Durability Olav Sandstå Database Technology Group Sun Microsystems Trondheim, Norway Overview Background > Transactions, Failure Classes, Derby Architecture
The Service Availability Forum Specification for High Availability Middleware
The Availability Forum Specification for High Availability Middleware Timo Jokiaho, Fred Herrmann, Dave Penkler, Manfred Reitenspiess, Louise Moser Availability Forum [email protected], [email protected],
Big Data Storage, Management and challenges. Ahmed Ali-Eldin
Big Data Storage, Management and challenges Ahmed Ali-Eldin (Ambitious) Plan What is Big Data? And Why talk about Big Data? How to store Big Data? BigTables (Google) Dynamo (Amazon) How to process Big
THE WINDOWS AZURE PROGRAMMING MODEL
THE WINDOWS AZURE PROGRAMMING MODEL DAVID CHAPPELL OCTOBER 2010 SPONSORED BY MICROSOFT CORPORATION CONTENTS Why Create a New Programming Model?... 3 The Three Rules of the Windows Azure Programming Model...
ANDROID PROGRAMMING - INTRODUCTION. Roberto Beraldi
ANDROID PROGRAMMING - INTRODUCTION Roberto Beraldi Introduction Android is built on top of more than 100 open projects, including linux kernel To increase security, each application runs with a distinct
PATROL Internet Server Manager Technical Brief
PATROL Internet Server Manager Technical Brief Contents Why Manage Web Applications?...1 What Is PATROL?...1 The PATROL Agent...2 PATROL Knowledge Modules...2 The PATROL Console...2 PATROL Internet Server
EWeb: Highly Scalable Client Transparent Fault Tolerant System for Cloud based Web Applications
ECE6102 Dependable Distribute Systems, Fall2010 EWeb: Highly Scalable Client Transparent Fault Tolerant System for Cloud based Web Applications Deepal Jayasinghe, Hyojun Kim, Mohammad M. Hossain, Ali Payani
Distributed Systems Lecture 1 1
Distributed Systems Lecture 1 1 Distributed Systems Lecturer: Therese Berg [email protected]. Recommended text book: Distributed Systems Concepts and Design, Coulouris, Dollimore and Kindberg. Addison
High Availability Solutions for the MariaDB and MySQL Database
High Availability Solutions for the MariaDB and MySQL Database 1 Introduction This paper introduces recommendations and some of the solutions used to create an availability or high availability environment
Availability Digest. Stratus Avance Brings Availability to the Edge February 2009
the Availability Digest Stratus Avance Brings Availability to the Edge February 2009 Business continuity has not yet been extended to the Edge. What is the Edge? It is everything outside of the corporate
OpenScape Voice V8 Application Developers Manual. Programming Guide A31003-H8080-R100-2-7620
OpenScape Voice V8 Application Developers Manual Programming Guide A31003-H8080-R100-2-7620 Our Quality and Environmental Management Systems are implemented according to the requirements of the ISO9001
ZooKeeper. Table of contents
by Table of contents 1 ZooKeeper: A Distributed Coordination Service for Distributed Applications... 2 1.1 Design Goals...2 1.2 Data model and the hierarchical namespace...3 1.3 Nodes and ephemeral nodes...
The ConTract Model. Helmut Wächter, Andreas Reuter. November 9, 1999
The ConTract Model Helmut Wächter, Andreas Reuter November 9, 1999 Overview In Ahmed K. Elmagarmid: Database Transaction Models for Advanced Applications First in Andreas Reuter: ConTracts: A Means for
Highly Available Mobile Services Infrastructure Using Oracle Berkeley DB
Highly Available Mobile Services Infrastructure Using Oracle Berkeley DB Executive Summary Oracle Berkeley DB is used in a wide variety of carrier-grade mobile infrastructure systems. Berkeley DB provides
This paper defines as "Classical"
Principles of Transactional Approach in the Classical Web-based Systems and the Cloud Computing Systems - Comparative Analysis Vanya Lazarova * Summary: This article presents a comparative analysis of
Tushar Joshi Turtle Networks Ltd
MySQL Database for High Availability Web Applications Tushar Joshi Turtle Networks Ltd www.turtle.net Overview What is High Availability? Web/Network Architecture Applications MySQL Replication MySQL Clustering
TIBCO Spotfire Statistics Services Installation and Administration Guide. Software Release 5.0 November 2012
TIBCO Spotfire Statistics Services Installation and Administration Guide Software Release 5.0 November 2012 Important Information SOME TIBCO SOFTWARE EMBEDS OR BUNDLES OTHER TIBCO SOFTWARE. USE OF SUCH
What is a database? COSC 304 Introduction to Database Systems. Database Introduction. Example Problem. Databases in the Real-World
COSC 304 Introduction to Systems Introduction Dr. Ramon Lawrence University of British Columbia Okanagan [email protected] What is a database? A database is a collection of logically related data for
Erlang The Driver behind WhatsApp s Success. Torben Hoffmann CTO, Erlang Solutions [email protected] @LeHoff
Erlang The Driver behind WhatsApp s Success Torben Hoffmann CTO, Erlang Solutions [email protected] @LeHoff Background Background Erlanger since 2006 Background Erlanger since 2006 Happyness
Java DB Performance. Olav Sandstå Sun Microsystems, Trondheim, Norway Submission ID: 860
Java DB Performance Olav Sandstå Sun Microsystems, Trondheim, Norway Submission ID: 860 AGENDA > Java DB introduction > Configuring Java DB for performance > Programming tips > Understanding Java DB performance
Messaging with Erlang and Jabber
Messaging with Erlang and Jabber Erlang User Conference '04 21st. October 2004 Mickaël Rémond www.erlang-projects.org What are XMPP and Jabber? XMPP stands for extensible
Component Based Rapid OPC Application Development Platform
Component Based Rapid OPC Application Development Platform Jouni Aro Prosys PMS Ltd, Tekniikantie 21 C, FIN-02150 Espoo, Finland Tel: +358 (0)9 2517 5401, Fax: +358 (0) 9 2517 5402, E-mail: [email protected],
OpenSAF A Standardized HA Solution
OpenSAF A Standardized HA Solution LinuxCON Edinburgh, UK 2013-10-21 Anders Widell Ericsson AB Outline What are OpenSAF and SA Forum? What is Service Availability? Simple Use Case: Web server The OpenSAF
Cloud Computing. Up until now
Cloud Computing Lecture 11 Virtualization 2011-2012 Up until now Introduction. Definition of Cloud Computing Grid Computing Content Distribution Networks Map Reduce Cycle-Sharing 1 Process Virtual Machines
How To Understand The Concept Of A Distributed System
Distributed Operating Systems Introduction Ewa Niewiadomska-Szynkiewicz and Adam Kozakiewicz [email protected], [email protected] Institute of Control and Computation Engineering Warsaw University of
Application Monitor Application (APPMON)
Application Monitor Application (APPMON) version 1.0 Magnus Fröberg 1997-05-02 Typeset in L A TEX from SGML source using the DOCBUILDER 3.0 Document System. Contents 1 APPMON Reference Manual 1 1.1 appmon
An Oracle White Paper May 2011. Oracle Tuxedo: An Enterprise Platform for Dynamic Languages
An Oracle White Paper May 2011 Oracle Tuxedo: An Enterprise Platform for Dynamic Languages Introduction Dynamic languages, also sometimes known as scripting languages, have been in existence for a long
Efficient database auditing
Topicus Fincare Efficient database auditing And entity reversion Dennis Windhouwer Supervised by: Pim van den Broek, Jasper Laagland and Johan te Winkel 9 April 2014 SUMMARY Topicus wants their current
The Integration Between EAI and SOA - Part I
by Jose Luiz Berg, Project Manager and Systems Architect at Enterprise Application Integration (EAI) SERVICE TECHNOLOGY MAGAZINE Issue XLIX April 2011 Introduction This article is intended to present the
Building Heavy Load Messaging System
CASE STUDY Building Heavy Load Messaging System About IntelliSMS Intelli Messaging simplifies mobile communication methods so you can cost effectively build mobile communication into your business processes;
Ergon Workflow Tool White Paper
Ergon Informatik AG Kleinstrasse 15 CH-8008 Zürich Phone +41 1 268 89 00 Fax +41 1 261 27 50 www.ergon.ch Ergon Workflow Tool White Paper Version 1.1, August 14, 2002 Andreas Fleischmann Copyright 2004,
E-mail Listeners. E-mail Formats. Free Form. Formatted
E-mail Listeners 6 E-mail Formats You use the E-mail Listeners application to receive and process Service Requests and other types of tickets through e-mail in the form of e-mail messages. Using E- mail
WINDOWS AZURE EXECUTION MODELS
WINDOWS AZURE EXECUTION MODELS Windows Azure provides three different execution models for running applications: Virtual Machines, Web Sites, and Cloud Services. Each one provides a different set of services,
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections
Quality Cruising. Making Java Work for Erlang. Erik (Happi) Stenman
Quality Cruising Making Java Work for Erlang Erik (Happi) Stenman 2 Introduction Introduction I will talk about automated testing, and how to make Java do that work for you. 2 Introduction I will talk
Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture
Last Class: OS and Computer Architecture System bus Network card CPU, memory, I/O devices, network card, system bus Lecture 3, page 1 Last Class: OS and Computer Architecture OS Service Protection Interrupts
Networking in the Hadoop Cluster
Hadoop and other distributed systems are increasingly the solution of choice for next generation data volumes. A high capacity, any to any, easily manageable networking layer is critical for peak Hadoop
VERITAS Cluster Server v2.0 Technical Overview
VERITAS Cluster Server v2.0 Technical Overview V E R I T A S W H I T E P A P E R Table of Contents Executive Overview............................................................................1 Why VERITAS
A Comparative Study on Vega-HTTP & Popular Open-source Web-servers
A Comparative Study on Vega-HTTP & Popular Open-source Web-servers Happiest People. Happiest Customers Contents Abstract... 3 Introduction... 3 Performance Comparison... 4 Architecture... 5 Diagram...
Lessons learned How we use Erlang to analyze millions of messages per day
Erlang Factory Lite Paris Lessons learned How we use Erlang to analyze millions of messages per day A few words about us What we do with Erlang A few words about us Semiocast processes social media conversations
Protocols and Architecture. Protocol Architecture.
Protocols and Architecture Protocol Architecture. Layered structure of hardware and software to support exchange of data between systems/distributed applications Set of rules for transmission of data between
Network Licensing. White Paper 0-15Apr014ks(WP02_Network) Network Licensing with the CRYPTO-BOX. White Paper
WP2 Subject: with the CRYPTO-BOX Version: Smarx OS PPK 5.90 and higher 0-15Apr014ks(WP02_Network).odt Last Update: 28 April 2014 Target Operating Systems: Windows 8/7/Vista (32 & 64 bit), XP, Linux, OS
Network Attached Storage. Jinfeng Yang Oct/19/2015
Network Attached Storage Jinfeng Yang Oct/19/2015 Outline Part A 1. What is the Network Attached Storage (NAS)? 2. What are the applications of NAS? 3. The benefits of NAS. 4. NAS s performance (Reliability
How To Write A Windows Operating System (Windows) (For Linux) (Windows 2) (Programming) (Operating System) (Permanent) (Powerbook) (Unix) (Amd64) (Win2) (X
(Advanced Topics in) Operating Systems Winter Term 2009 / 2010 Jun.-Prof. Dr.-Ing. André Brinkmann [email protected] Universität Paderborn PC 1 Overview Overview of chapter 3: Case Studies 3.1 Windows Architecture.....3
Tools Page 1 of 13 ON PROGRAM TRANSLATION. A priori, we have two translation mechanisms available:
Tools Page 1 of 13 ON PROGRAM TRANSLATION A priori, we have two translation mechanisms available: Interpretation Compilation On interpretation: Statements are translated one at a time and executed immediately.
16.1 MAPREDUCE. For personal use only, not for distribution. 333
For personal use only, not for distribution. 333 16.1 MAPREDUCE Initially designed by the Google labs and used internally by Google, the MAPREDUCE distributed programming model is now promoted by several
Monitoring Hadoop with Akka. Clint Combs Senior Software Engineer at Collective
Monitoring Hadoop with Akka Clint Combs Senior Software Engineer at Collective Collective - The Audience Engine Ad Technology Company Heavy Investment in Hadoop and Other Scalable Infrastructure Need to
Objectives. Distributed Databases and Client/Server Architecture. Distributed Database. Data Fragmentation
Objectives Distributed Databases and Client/Server Architecture IT354 @ Peter Lo 2005 1 Understand the advantages and disadvantages of distributed databases Know the design issues involved in distributed
Chapter 1 - Web Server Management and Cluster Topology
Objectives At the end of this chapter, participants will be able to understand: Web server management options provided by Network Deployment Clustered Application Servers Cluster creation and management
Planning the Installation and Installing SQL Server
Chapter 2 Planning the Installation and Installing SQL Server In This Chapter c SQL Server Editions c Planning Phase c Installing SQL Server 22 Microsoft SQL Server 2012: A Beginner s Guide This chapter
Inside the Erlang VM
Rev A Inside the Erlang VM with focus on SMP Prepared by Kenneth Lundin, Ericsson AB Presentation held at Erlang User Conference, Stockholm, November 13, 2008 1 Introduction The history of support for
Highly Available AMPS Client Programming
Highly Available AMPS Client Programming 60East Technologies Copyright 2013 All rights reserved. 60East, AMPS, and Advanced Message Processing System are trademarks of 60East Technologies, Inc. All other
Distributed File Systems
Distributed File Systems Mauro Fruet University of Trento - Italy 2011/12/19 Mauro Fruet (UniTN) Distributed File Systems 2011/12/19 1 / 39 Outline 1 Distributed File Systems 2 The Google File System (GFS)
Open source software framework designed for storage and processing of large scale data on clusters of commodity hardware
Open source software framework designed for storage and processing of large scale data on clusters of commodity hardware Created by Doug Cutting and Mike Carafella in 2005. Cutting named the program after
Data Management in the Cloud
Data Management in the Cloud Ryan Stern [email protected] : Advanced Topics in Distributed Systems Department of Computer Science Colorado State University Outline Today Microsoft Cloud SQL Server
Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces
Software Engineering, Lecture 4 Decomposition into suitable parts Cross cutting concerns Design patterns I will also give an example scenario that you are supposed to analyse and make synthesis from The
Refactoring Erlang Programs
Erlang programs 1 Zoltán Horváth, László Lövei, Zoltán Csörnyei, Tamás Kozsik, Anikó Víg, Tamás Nagy, Roland Király, Melinda Tóth, Róbert Kitlei Dept. Programming Languages and Compilers Eötvös Loránd
Open EMS Suite. O&M Agent. Functional Overview Version 1.2. Nokia Siemens Networks 1 (18)
Open EMS Suite O&M Agent Functional Overview Version 1.2 Nokia Siemens Networks 1 (18) O&M Agent The information in this document is subject to change without notice and describes only the product defined
Mesos: A Platform for Fine- Grained Resource Sharing in Data Centers (II)
UC BERKELEY Mesos: A Platform for Fine- Grained Resource Sharing in Data Centers (II) Anthony D. Joseph LASER Summer School September 2013 My Talks at LASER 2013 1. AMP Lab introduction 2. The Datacenter
Microsoft File and Print Service Failover Using Microsoft Cluster Server
Microsoft File and Print Service Failover Using Microsoft Cluster Server TechNote First Edition (March 1998) Part Number 309826-001 Compaq Computer Corporation Notice The information in this publication
3.5. cmsg Developer s Guide. Data Acquisition Group JEFFERSON LAB. Version
Version 3.5 JEFFERSON LAB Data Acquisition Group cmsg Developer s Guide J E F F E R S O N L A B D A T A A C Q U I S I T I O N G R O U P cmsg Developer s Guide Elliott Wolin [email protected] Carl Timmer [email protected]
Modular Communication Infrastructure Design with Quality of Service
Modular Communication Infrastructure Design with Quality of Service Pawel Wojciechowski and Péter Urbán Distributed Systems Laboratory School of Computer and Communication Sciences Swiss Federal Institute
A Sample OFBiz application implementing remote access via RMI and SOAP Table of contents
A Sample OFBiz application implementing remote access via RMI and SOAP Table of contents 1 About this document... 2 2 Introduction... 2 3 Defining the data model... 2 4 Populating the database tables with
BigData. An Overview of Several Approaches. David Mera 16/12/2013. Masaryk University Brno, Czech Republic
BigData An Overview of Several Approaches David Mera Masaryk University Brno, Czech Republic 16/12/2013 Table of Contents 1 Introduction 2 Terminology 3 Approaches focused on batch data processing MapReduce-Hadoop
RAMCloud and the Low- Latency Datacenter. John Ousterhout Stanford University
RAMCloud and the Low- Latency Datacenter John Ousterhout Stanford University Most important driver for innovation in computer systems: Rise of the datacenter Phase 1: large scale Phase 2: low latency Introduction
Software Development Kit
Open EMS Suite by Nokia Software Development Kit Functional Overview Version 1.3 Nokia Siemens Networks 1 (21) Software Development Kit The information in this document is subject to change without notice
MAPREDUCE Programming Model
CS 2510 COMPUTER OPERATING SYSTEMS Cloud Computing MAPREDUCE Dr. Taieb Znati Computer Science Department University of Pittsburgh MAPREDUCE Programming Model Scaling Data Intensive Application MapReduce
Design and Implementation of Client Server Network Management System for Ethernet LAN
Design and Implementation of Client Server Network Management System for Ethernet LAN Ms. MAY PAING PAING ZAW and Ms. SU MYAT MARLAR SOE Abstract Network Management Systems have played a great important
ODBC Driver User s Guide. Objectivity/SQL++ ODBC Driver User s Guide. Release 10.2
ODBC Driver User s Guide Objectivity/SQL++ ODBC Driver User s Guide Release 10.2 Objectivity/SQL++ ODBC Driver User s Guide Part Number: 10.2-ODBC-0 Release 10.2, October 13, 2011 The information in this
A distributed system is defined as
A distributed system is defined as A collection of independent computers that appears to its users as a single coherent system CS550: Advanced Operating Systems 2 Resource sharing Openness Concurrency
SCALABILITY AND AVAILABILITY
SCALABILITY AND AVAILABILITY Real Systems must be Scalable fast enough to handle the expected load and grow easily when the load grows Available available enough of the time Scalable Scale-up increase
Example of Standard API
16 Example of Standard API System Call Implementation Typically, a number associated with each system call System call interface maintains a table indexed according to these numbers The system call interface
Lesson 4 Web Service Interface Definition (Part I)
Lesson 4 Web Service Interface Definition (Part I) Service Oriented Architectures Module 1 - Basic technologies Unit 3 WSDL Ernesto Damiani Università di Milano Interface Definition Languages (1) IDLs
Virtualization is set to become a key requirement
Xen, the virtual machine monitor The art of virtualization Moshe Bar Virtualization is set to become a key requirement for every server in the data center. This trend is a direct consequence of an industrywide
Availability Digest. MySQL Clusters Go Active/Active. December 2006
the Availability Digest MySQL Clusters Go Active/Active December 2006 Introduction MySQL (www.mysql.com) is without a doubt the most popular open source database in use today. Developed by MySQL AB of
Virtual Machines. www.viplavkambli.com
1 Virtual Machines A virtual machine (VM) is a "completely isolated guest operating system installation within a normal host operating system". Modern virtual machines are implemented with either software
irods and Metadata survey Version 0.1 Date March Abhijeet Kodgire [email protected] 25th
irods and Metadata survey Version 0.1 Date 25th March Purpose Survey of Status Complete Author Abhijeet Kodgire [email protected] Table of Contents 1 Abstract... 3 2 Categories and Subject Descriptors...
