Designing for scalability with Erlang/OTP:
Gespeichert in:
Hauptverfasser: | , |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Beijing ; Boston ; Farnham ; Sebastopol ; Tokyo
O'Reilly
May 2016
|
Ausgabe: | First edition |
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | Auf dem Cover: "Designing for scalability with Erlang/OTP; implementing robust, fault-tolerant systems" |
Beschreibung: | xviii, 460 Seiten Illustrationen, Diagramme |
ISBN: | 9781449320737 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV043657195 | ||
003 | DE-604 | ||
005 | 20160711 | ||
007 | t | ||
008 | 160706s2016 a||| |||| 00||| eng d | ||
020 | |a 9781449320737 |c pbk. |9 978-1-4493-2073-7 | ||
035 | |a (OCoLC)953436290 | ||
035 | |a (DE-599)BVBBV043657195 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 0 | |a eng | |
049 | |a DE-11 | ||
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
100 | 1 | |a Cesarini, Francesco |d 1972- |e Verfasser |0 (DE-588)1106136713 |4 aut | |
245 | 1 | 0 | |a Designing for scalability with Erlang/OTP |c Francesco Cesarini and Steve Vinoski |
246 | 1 | 3 | |a Designing for scalability with Erlang/OTP implementing robust, fault-tolerant systems |
250 | |a First edition | ||
264 | 1 | |a Beijing ; Boston ; Farnham ; Sebastopol ; Tokyo |b O'Reilly |c May 2016 | |
300 | |a xviii, 460 Seiten |b Illustrationen, Diagramme | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
500 | |a Auf dem Cover: "Designing for scalability with Erlang/OTP; implementing robust, fault-tolerant systems" | ||
650 | 4 | |a ERLANG (Computer program language) | |
650 | 4 | |a Telecommunication systems / Design | |
650 | 4 | |a Wireless communication systems / Design and construction | |
700 | 1 | |a Vinoski, Steve |e Verfasser |0 (DE-588)1106137388 |4 aut | |
856 | 4 | 2 | |m HEBIS Datenaustausch |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029070648&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-029070648 |
Datensatz im Suchindex
_version_ | 1804176408902107136 |
---|---|
adam_text | Designing for Scalability
with Erlang/OTP
Francesco Cesarini and Steve Vinoski
Beijing
ULB Darmstadt
19504638
• Tokyo
O’REILLY
Table of Contents
Preface xlii
1 Introduction 1
Defining the Problem 2
OTP 4
Erlang 6
Tools and Libraries 7
System Design Principles 10
Erlang Nodes 11
Distribution, Infrastructure, and Multicore 12
Summing Up 13
What You’ll Learn in This Book 14
2 Introducing Erlang 21
Recursion and Pattern Matching 21
Functional Influence 25
Fun with Anonymous Functions 25
List Comprehensions: Generate and Test 27
Processes and Message Passing 29
Fail Safe! 33
Links and Monitors for Supervision 34
Links 35
Monitors 37
Records 38
Maps 41
Macros 42
Upgrading Modules 43
ETS: Erlang Term Storage 45
Distributed Erlang 48
Naming and Communication 48
Node Connections and Visibility 49
Summing Up 51
What’s Next? 51
3 Behaviors 53
Process Skeletons 53
Design Patterns 56
Callback Modules 57
Extracting Generic Behaviors 60
Starting the Server 62
The Client Functions 64
The Server Loop 66
Functions Internal to the Server 68
The Generic Server 69
Message Passing: Under the Hood 72
Summing Up 76
What’s Next? 76
4 Generic Servers 77
Generic Servers 77
Behavior Directives 78
Starting a Server 80
Message Passing 82
Synchronous Message Passing 82
Asynchronous Message Passing 84
Other Messages 85
Unhandled Messages 86
Synchronizing Clients 88
Termination 89
Call Timeouts 91
Deadlocks 94
Generic Server Timeouts 95
Hibernating Behaviors 97
Going Global 97
Linking Behaviors 99
Summing Up 99
What’s Next? 100
5 Controlling OTP Behaviors 101
The sys Module 101
vi | Table of Contents
Tracing and Logging 101
System Messages 103
Your Own Trace Functions 103
Statistics, Status, and State 105
The sys Module Recap 107
Spawn Options 108
Memory Management and Garbage Collection 109
Spawn Options to Avoid 113
Timeouts 114
Summing Up 114
What’s Next? 114
6 Finite State Machines 117
Finite State Machines the Erlang Way 118
Coffee FSM 119
The Hardware Stub 121
The Erlang Coffee Machine 122
Generic FSMs 125
A Behavior Example 127
Starting the FSM 127
Sending Events 131
Termination 139
Summing Up 141
Get Your Hands Dirty 141
The Phone Controllers 142
Let’s Test It 143
What’s Next? 145
7 Event Handlers 147
Events 147
Generic Event Managers and Handlers 149
Starting and Stopping Event Managers 149
Adding Event Handlers 150
Deleting an Event Handler 152
Sending Synchronous and Asynchronous Events 153
Retrieving Data 156
Handling Errors and Invalid Return Values 158
Swapping Event Handlers 160
Wrapping It All Up 162
The SASL Alarm Handler 165
Summing Up 166
What’s Next? 167
Table of Contents | vii
8 Supervisors 169
Supervision Trees 170
OTP Supervisors 174
The Supervisor Behavior 175
Starting the Supervisor 176
The Supervisor Specification 179
Dynamic Children 186
Non-OTP-Compliant Processes 194
Scalability and Short-Lived Processes 195
Synchronous Starts for Determinism 197
Testing Your Supervision Strategy 199
How Does This Compare? 200
Summing Up 201
What’s Next? 201
9 Applications 203
How Applications Run 204
The Application Structure 206
The Callback Module 209
Starting and Stopping Applications 210
Application Resource Files 213
The Base Station Controller Application File 215
Starting an Application 216
Environment Variables 219
Application Types and Termination Strategies 221
Distributed Applications 222
Start Phases 226
Included Applications 228
Start Phases in Included Applications 228
Combining Supervisors and Applications 230
The SASL Application 231
Progress Reports 236
Error Reports 236
Crash Reports 237
Supervisor Reports 238
Summing Up 239
What’s Next? 240
10 Special Processes and Your Own Behaviors 241
Special Processes 242
The Mutex 242
Starting Special Processes 244
viii | Table of Contents
Sää-VSäöo* fisJöM»
■ ; ■;: ■ ■
The Mutex States 247
Handling Exits 247
System Messages 249
Trace and Log Events 250
Putting It Together 251
Dynamic Modules and Hibernating 255
Your Own Behaviors 255
Rules for Creating Behaviors 256
An Example Handling TCP Streams 256
Summing Up 260
What’s Next? 261
System Principles and Release Handling 263
System Principles 264
Release Directory Structure 265
Release Resource Files 269
Creating a Release 273
Creating the Boot File 274
Creating a Release Package 283
Start Scripts and Configuring on the Target 287
Arguments and Flags 290
The init Module 302
Rebar3 303
Generating a Rebar3 Release Project 304
Creating a Release with Rebar3 308
Rebar3 Releases with Project Dependencies 310
Wrapping Up 312
What’s Next? 316
Release Upgrades 317
Software Upgrades 318
The First Version of the Coffee FSM 320
Adding a State 323
Creating a Release Upgrade 326
The Code to Upgrade 330
Application Upgrade Files 333
High-Level Instructions 337
Release Upgrade Files 339
Low-Level Instructions 342
Installing an Upgrade 343
The Release Handler 346
Upgrading Environment Variables 350
Table of Contents | ix
Upgrading Special Processes 350
Upgrading in Distributed Environments 351
Upgrading the Emulator and Core Applications 352
Upgrades with Rebar3 353
Summing Up 356
What’s Next? 358
13 Distributed Architectures 359
Node Types and Families 360
Networking 363
Distributed Erlang 366
Sockets and SSL 373
Service Orientation and Microservices 375
Peer to Peer 376
Interfaces 378
Summing Up 380
What’s Next? 381
14 Systems That Never Stop 383
Availability 383
Fault Tolerance 384
Resilience 385
Reliability 387
Sharing Data 392
Tradeoffs Between Consistency and Availability 400
Summing Up 401
What’s Next? 403
15 Scaling Out 405
Horizontal and Vertical Scaling 405
Capacity Planning 409
Capacity Testing 412
Balancing Your System 414
F inding Bottlenecks 416
System Blueprints 419
Load Regulation and Backpressure 419
Summing Up 422
What’s Next? 424
16 Monitoring and Preemptive Support 425
Monitoring 426
Logs 428
x | Table of Contents
Metrics 433
Alarms 436
Preemptive Support 439
Summing Up 441
What’s Next? 443
Index 445
|
any_adam_object | 1 |
author | Cesarini, Francesco 1972- Vinoski, Steve |
author_GND | (DE-588)1106136713 (DE-588)1106137388 |
author_facet | Cesarini, Francesco 1972- Vinoski, Steve |
author_role | aut aut |
author_sort | Cesarini, Francesco 1972- |
author_variant | f c fc s v sv |
building | Verbundindex |
bvnumber | BV043657195 |
classification_rvk | ST 250 |
ctrlnum | (OCoLC)953436290 (DE-599)BVBBV043657195 |
discipline | Informatik |
edition | First edition |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01617nam a2200361 c 4500</leader><controlfield tag="001">BV043657195</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20160711 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">160706s2016 a||| |||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9781449320737</subfield><subfield code="c">pbk.</subfield><subfield code="9">978-1-4493-2073-7</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)953436290</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV043657195</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-11</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Cesarini, Francesco</subfield><subfield code="d">1972-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1106136713</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Designing for scalability with Erlang/OTP</subfield><subfield code="c">Francesco Cesarini and Steve Vinoski</subfield></datafield><datafield tag="246" ind1="1" ind2="3"><subfield code="a">Designing for scalability with Erlang/OTP implementing robust, fault-tolerant systems</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">First edition</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Beijing ; Boston ; Farnham ; Sebastopol ; Tokyo</subfield><subfield code="b">O'Reilly</subfield><subfield code="c">May 2016</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">xviii, 460 Seiten</subfield><subfield code="b">Illustrationen, Diagramme</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="500" ind1=" " ind2=" "><subfield code="a">Auf dem Cover: "Designing for scalability with Erlang/OTP; implementing robust, fault-tolerant systems"</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">ERLANG (Computer program language)</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Telecommunication systems / Design</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Wireless communication systems / Design and construction</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Vinoski, Steve</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1106137388</subfield><subfield code="4">aut</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">HEBIS Datenaustausch</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029070648&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-029070648</subfield></datafield></record></collection> |
id | DE-604.BV043657195 |
illustrated | Illustrated |
indexdate | 2024-07-10T07:31:43Z |
institution | BVB |
isbn | 9781449320737 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-029070648 |
oclc_num | 953436290 |
open_access_boolean | |
owner | DE-11 |
owner_facet | DE-11 |
physical | xviii, 460 Seiten Illustrationen, Diagramme |
publishDate | 2016 |
publishDateSearch | 2016 |
publishDateSort | 2016 |
publisher | O'Reilly |
record_format | marc |
spelling | Cesarini, Francesco 1972- Verfasser (DE-588)1106136713 aut Designing for scalability with Erlang/OTP Francesco Cesarini and Steve Vinoski Designing for scalability with Erlang/OTP implementing robust, fault-tolerant systems First edition Beijing ; Boston ; Farnham ; Sebastopol ; Tokyo O'Reilly May 2016 xviii, 460 Seiten Illustrationen, Diagramme txt rdacontent n rdamedia nc rdacarrier Auf dem Cover: "Designing for scalability with Erlang/OTP; implementing robust, fault-tolerant systems" ERLANG (Computer program language) Telecommunication systems / Design Wireless communication systems / Design and construction Vinoski, Steve Verfasser (DE-588)1106137388 aut HEBIS Datenaustausch application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029070648&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Cesarini, Francesco 1972- Vinoski, Steve Designing for scalability with Erlang/OTP ERLANG (Computer program language) Telecommunication systems / Design Wireless communication systems / Design and construction |
title | Designing for scalability with Erlang/OTP |
title_alt | Designing for scalability with Erlang/OTP implementing robust, fault-tolerant systems |
title_auth | Designing for scalability with Erlang/OTP |
title_exact_search | Designing for scalability with Erlang/OTP |
title_full | Designing for scalability with Erlang/OTP Francesco Cesarini and Steve Vinoski |
title_fullStr | Designing for scalability with Erlang/OTP Francesco Cesarini and Steve Vinoski |
title_full_unstemmed | Designing for scalability with Erlang/OTP Francesco Cesarini and Steve Vinoski |
title_short | Designing for scalability with Erlang/OTP |
title_sort | designing for scalability with erlang otp |
topic | ERLANG (Computer program language) Telecommunication systems / Design Wireless communication systems / Design and construction |
topic_facet | ERLANG (Computer program language) Telecommunication systems / Design Wireless communication systems / Design and construction |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029070648&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT cesarinifrancesco designingforscalabilitywitherlangotp AT vinoskisteve designingforscalabilitywitherlangotp AT cesarinifrancesco designingforscalabilitywitherlangotpimplementingrobustfaulttolerantsystems AT vinoskisteve designingforscalabilitywitherlangotpimplementingrobustfaulttolerantsystems |