内容简介
如果你需要构建一个具有高可用性需求的可扩展容错系统,请了解为什么Erlang/OTP平台因其功能的广度、深度和一致性而脱颖而出。《ErlangOTP可扩展性设计指南(影印版英文版)》演示如何使用Erlang编程语言及其OTP框架的可重用库、工具和设计原则来开发复杂的根本不会失败的商业级系统。
在《ErlangOTP可扩展性设计指南(影印版英文版)》的第一部分中,你将学习如何使用Erlang/OTP设计和实现进程行为与监督树,并将它们捆绑到独立节点中。第二部分涉及整体系统设计中的可靠性、可扩展性和高可用性。如果你熟悉Erlang,《ErlangOTP可扩展性设计指南(影印版英文版)》将帮助你了解系统持续运行所需的设计选择和权衡。目录
Preface
1.Introduction
DefiningtheProblem
OTP
Edang
ToolsandLibraries
SystemDesignPrinciples
EdangNodes
Distribution,Infrastructure,andMulticore
SummingUp
WhatYou'llLearninThisBook
2.IntroducingErlang
RecursionandPatternMatching
FunctionalInfluence
FunwithAnonymousFunctions
ListComprehensions:GenerateandTest
ProcessesandMessagePassing
FailSafe!
LinksandMonitorsforSupervision
Links
Monitors
Records
Maps
Macros
UpgradingModules
ETS:ErlangTermStorage
DistributedErlang
NamingandCommunication
NodeConnectionsandVisibility
SummingUp
What'sNext?
3.Behaviors
ProcessSkeletons
DesignPatterns
CallbackModules
ExtractingGenericBehaviors
StartingtheServer
TheClientFunctions
TheServerLoop
FunctionsInternaltotheServer
TheGenericServer
MessagePassing:UndertheHood
SummingUp
What'sNext?
4.GeneticServers
GenericServers
BehaviorDirectives
StartingaServer
MessagePassing
SynchronousMessagePassing
AsynchronousMessagePassing
OtherMessages
UnhandledMessages
SynchronizingClients
Termination
CallTimeouts
Deadlocks
GenericServerTimeouts
HibernatingBehaviors
GoingGlobal
LinkingBehaviors
SummingUp
What'sNext?
5.Controlling0TPBehaviors
ThesysModule
6.FiniteStateMachines
7.EventHandlers.
8.Supervisors
9.Applications
10.SpecialProcessesandYourOwnBehaviors
11.SystemPrinciplesandReleaseHandling
12.ReleaseUpgrades
13.DistributedArchitectures
14.SystemsThatNeverStop
15.ScalingOut
16.MonitoringandPreemptiveSupport
Index精彩书摘
《Erlang\OTP可扩展性设计指南(影印版英文版)》:
It'simportanttounderstandthesynchronousnatureofstart_linkanditsimportancetoarepeatablestartupsequence.Theabilitytodeterministicallyreproduceanerrorisimportantwhentrou—bleshootingissuesthatoccuratstartup.Youcouldasynchronouslystartalloftheprocesses,checkingeachafterwardtomakesuretheyallstartedcorrectly.Butasaresultofchangingschedulerimplementationsandconfigurationvaluesrunningonmulti—corearchitectures,deployingtodifferenthardwareoroperatingsystems,oreventhestateofthenetworkconnectivity,theprocesseswouldnotnecessarilyalwaysinitializetheirstateandcompletethestartupsequenceinthesameorder.Ifallgoeswell,youwon'thaveanissuewiththevariabilityinherentinanasynchronousstartupapproach,butifraceconditionsmanifestthemselves,tryingtofigureoutwhatwentwrongandwhen,especiallyinproductionenvironments,isnotforthefaintofheart.Thesynchronousstartupapproachimplementedinstartlinkclearlyensuresthroughitssimplicitythateachprocesshasstartedcorrectlybeforemovingontothenextone,providingdeterminismandreproduciblestartuperrorsonasinglenode.
……