注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網絡軟件與程序設計其他編程語言/工具Erlang/OTP并發(fā)編程實戰(zhàn)

Erlang/OTP并發(fā)編程實戰(zhàn)

Erlang/OTP并發(fā)編程實戰(zhàn)

定 價:¥79.00

作 者: (美) 洛根 (Logan,M.), (美) 梅里特 (Merritt,E.), (瑞典) 卡爾森(Carlsson,R.) 著
出版社: 人民郵電出版社
叢編項:
標 簽: 程序設計

ISBN: 9787115285591 出版時間: 2012-07-01 包裝: 平裝
開本: 16開 頁數: 333 字數:  

內容簡介

  通過提高CPU時鐘頻率來制造更快的單核芯片的技術已經到達了極限。多核、并發(fā)、分布式等概念和技術也隨之走出象牙塔,成為每個一線開發(fā)者的必備技能。由通信巨頭愛立信研發(fā)的Erlang/OTP大放異彩,二十多年來,在傳統(tǒng)電信領域高并發(fā)、高可靠、高容錯的嚴酷環(huán)境下,Erlang語言和OTP平臺被鍛煉得堅如磐石,濃郁的函數式特質更是恰到好處地彌補了傳統(tǒng)命令式語言在并發(fā)編程上的固有缺陷,大大降低了構筑并發(fā)、容錯、分布式應用的門檻。如果將Erlang語言看成才華橫溢的鋼琴家,那么OTP平臺就是一架能讓鋼琴家把才能發(fā)揮得淋漓盡致的鋼琴。本書除了全面介紹Erlang語言和OTP平臺的基礎知識外,還通過一系列實用案例引領你深入了解OTP的高級特性,一步步構建一個大型生產系統(tǒng),并加以優(yōu)化和完善。三位作者在Erlang領域擁有極其豐富的實戰(zhàn)經驗,細致入微地剖析了OTP開發(fā)與部署的全過程。要想真刀真槍地上戰(zhàn)場,本書才是你明智的選擇!

作者簡介

  Martin Logan, 從1999年開始活躍于Erlang社區(qū),后來全職從事Erlang研發(fā)。目前任職于全球最大的在線旅游公司Orbitz Worldwide,為基于大規(guī)模分布式服務的基礎設施開發(fā)解決方案。Erlware聯(lián)合創(chuàng)始人,核心開發(fā)人員,Erlang/OTP軟件包管理系統(tǒng)Faxien的主要開發(fā)者。 Eric Merritt,專注并發(fā)編程和分布式系統(tǒng)。曾任職于Amazon。com,現(xiàn)為eCD Market軟件工程師。Erlware聯(lián)合創(chuàng)始人,Erlang芝加哥用戶組核心成員。Erlware團隊開源產品核心開發(fā)人員,Erlang/OTP構建系統(tǒng)Sinan的主要開發(fā)者。 Richard Carlsson,瑞典烏普薩拉大學高性能Erlang計劃(HiPE)早期成員,研究Erlang技術達17年,曾為標準庫、Erlang編譯器、運行時系統(tǒng)和Erlang語言本身都作出過不少貢獻。此外,他還是Erlang文檔系統(tǒng)EDoc和單元測試框架EUnit的創(chuàng)建者。目前加入了Kreditor,致力于高可用性支付系統(tǒng)的Erlang開發(fā)。 連城,百度資深軟件工程師,《Erlang并發(fā)編程(第一部分)》社區(qū)翻譯項目組織者及主要譯者。對分布式存儲、分布式消息系統(tǒng)、程序語言設計實現(xiàn)抱有濃厚興趣。

圖書目錄

 
第一部分  Erlang起步:OTP基礎
第1章  Erlang/OTP平臺  2
1.1  基于進程的并發(fā)編程  3
1.1.1  理解并發(fā)  3
1.1.2  Erlang的進程模型  4
1.1.3  4種進程通信范式  5
1.1.4  用Erlang進程編程  8
1.2  Erlang的容錯架構  10
1.2.1  進程鏈接如何工作  10
1.2.2  監(jiān)督與退出信號捕捉  10
1.2.3  進程的分層容錯  12
1.3  分布式Erlang  13
1.4  Erlang運行時系統(tǒng)和虛擬機  13
1.4.1  調度器  14
1.4.2  I/O與調度  15
1.4.3  進程隔離與垃圾回收器  15
1.5  函數式編程:Erlang的處世之道  16
1.6  小結  16
第2章  Erlang語言精要  18
2.1  Erlang shell  19
2.1.1  啟動shell  19
2.1.2  輸入表達式  20
2.1.3  shell函數  21
2.1.4  退出shell  21
2.1.5  任務控制基礎  22
2.2  Erlang的數據類型  23
2.2.1  數值與算術運算  24
2.2.2  二進制串與位串  25
2.2.3  原子  26
2.2.4  元組  27
2.2.5  列表  27
2.2.6  字符串  28
2.2.7  pid、端口和引用  29
2.2.8  將函數視作數據:fun函數  30
2.2.9  項式的比較  30
2.2.10  解讀列表  31
2.3  模塊和函數  33
2.3.1  調用其他模塊中的函數(遠程調用)  33
2.3.2  不同元數的函數  34
2.3.3  內置函數和標準庫模塊  34
2.3.4  創(chuàng)建模塊  35
2.3.5  模塊的編譯和加載  36
2.3.6  獨立編譯器erlc  37
2.3.7  已編譯模塊與在shell中求值  37
2.4  變量與模式匹配  38
2.4.1  變量的語法  39
2.4.2  單次賦值  39
2.4.3  模式匹配:加強版的賦值  41
2.4.4  解讀模式  42
2.5  函數與子句  44
2.5.1  帶副作用的函數:文本打印  44
2.5.2  用模式匹配在多個子句中進行選擇  45
2.5.3  保護式  46
2.5.4  模式、子句和變量作用域  47
2.6  Case和if表達式  48
2.6.1  Erlang的布爾型if-then-else分支選擇  48
2.6.2  If表達式  49
2.7  fun函數  49
2.7.1  作為現(xiàn)有函數別名的fun函數  49
2.7.2  匿名fun函數  50
2.8  異常與try/catch  52
2.8.1  拋出(觸發(fā))異?! ?2
2.8.2  運用try...catch  53
2.8.3  try...of...catch  53
2.8.4  after  54
2.8.5  獲取棧軌跡  54
2.8.6  重拋異常  55
2.8.7  傳統(tǒng)的catch  55
2.9  列表速構  56
2.9.1  列表速構記法  56
2.9.2  映射、過濾和模式匹配  56
2.10  比特位語法與位串速構  57
2.10.1  構造位串  57
2.10.2  比特位語法中的模式匹配  58
2.10.3  位串速構  59
2.11  記錄語法  59
2.11.1  記錄聲明  60
2.11.2  創(chuàng)建記錄  60
2.11.3  記錄的字段以及模式匹配  60
2.11.4  更新記錄字段  60
2.11.5  記錄聲明應該放在哪兒  61
2.12  預處理與文件包含  61
2.12.1  宏的定義和使用  61
2.12.2  文件包含  62
2.12.3  條件編譯  63
2.13  進程  64
2.13.1  操縱進程  64
2.13.2  消息接收與選擇性接收  65
2.13.3  注冊進程  66
2.13.4  消息投遞與信號  67
2.13.5  進程字典  67
2.14  ETS表  68
2.14.1  為何ETS表被設計成這樣  68
2.14.2  ETS表的基本用法  68
2.15  以遞歸代替循環(huán)  69
2.15.1  從迭代到遞歸  69
2.15.2  理解尾遞歸  71
2.15.3  累加器參數  72
2.15.4  談談效率  72
2.15.5  編寫遞歸函數的竅門  73
2.16  Erlang編程資源  78
2.16.1  圖書  78
2.16.2  在線資料  79
2.17  小結  79
第3章  開發(fā)基于TCP的RPC服務  80
3.1  你所創(chuàng)建的是什么  81
3.1.1  基礎知識提醒  82
3.1.2  行為模式基礎  82
3.2  實現(xiàn)RPC服務器  85
3.2.1  行為模式實現(xiàn)模塊的典型布局  85
3.2.2  模塊首部  85
3.2.3  API段  88
3.2.4  回調函數段  92
3.3  運行RPC服務器  98
3.4  淺談測試  99
3.5  小結  100
第4章  OTP應用與監(jiān)督機制  101
4.1  OTP應用  101
4.1.1  OTP應用的組織形式  102
4.1.2  為應用添加元數據  103
4.1.3  應用行為模式  104
4.1.4  應用結構小結  105
4.2  用監(jiān)督者實現(xiàn)容錯  105
4.2.1  實現(xiàn)監(jiān)督者  106
4.2.2  監(jiān)督者重啟策略  107
4.2.3  編寫子進程規(guī)范  108
4.3  啟動應用  109
4.4  生成EDoc文檔  110
4.5  小結  110
第5章  主要圖形化監(jiān)測工具的使用  112
5.1  Appmon  112
5.1.1  Appmon GUI  112
5.1.2  WebTool版Appmon  115
5.2  Pman  116
5.3  調試器  118
5.4  表查看器TV  121
5.5  工具欄  123
5.6  小結  123
第二部分  構建生產系統(tǒng)
第6章  打造一套緩存系統(tǒng)  126
6.1  故事背景  126
6.2  緩存的設計  127
6.3  創(chuàng)建OTP應用的基本骨架  130
6.3.1  應用目錄結構的布局  130
6.3.2  創(chuàng)建應用元數據  130
6.3.3  實現(xiàn)應用行為模式  131
6.3.4  實現(xiàn)監(jiān)督者  131
6.4  從應用骨架到五臟俱全的緩存  133
6.4.1  編寫sc_element進程  134
6.4.2  實現(xiàn)sc_store模塊  138
6.4.3  打造應用層API模塊  142
6.5  小結  144
第7章  Erlang/OTP中的日志與事件處理  145
7.1  Erlang/OTP中的日志  146
7.1.1  日志概述  146
7.1.2  Erlang/OTP內置的日志設施  147
7.1.3  標準日志函數  147
7.1.4  SASL與崩潰報告  149
7.2  用gen_event編寫自定義事件處理器  153
7.2.1  gen_event行為模式簡介  153
7.2.2  事件處理器示例  154
7.2.3  處理錯誤事件  155
7.3  為Simple Cache添加自定義事件流  157
7.3.1  事件流API  157
7.3.2  將處理器整合進Simple Cache  159
7.3.3  訂閱自定義事件流  161
7.4  小結  162
第8章  分布式Erlang/OTP簡介  163
8.1  Erlang分布式基礎  163
8.1.1  復制式進程間通信  164
8.1.2  位置透明性  165
8.2  節(jié)點與集群  166
8.2.1  節(jié)點的啟動  166
8.2.2  節(jié)點的互聯(lián)  167
8.2.3  Erlang節(jié)點如何定位其他節(jié)點并與之建立通信  169
8.2.4  magic cookie安全系統(tǒng)  170
8.2.5  互聯(lián)節(jié)點間的消息傳遞  171
8.2.6  使用遠程shell  173
8.3  資源探測攻略  175
8.3.1  術語  175
8.3.2  算法  176
8.3.3  實現(xiàn)資源探測應用  177
8.4  小結  182
第9章  用Mnesia為cache增加分布式支持  183
9.1  分布式緩存  184
9.1.1  選取通信策略  184
9.1.2  同步緩存和異步緩存  186
9.1.3  分布式表  188
9.2  用Mnesia實現(xiàn)分布式數據存儲  189
9.2.1  建立項目數據庫  189
9.2.2  初始化數據庫  191
9.2.3  建表  192
9.2.4  向表中錄入數據  195
9.2.5  執(zhí)行基本查詢  197
9.3  基于Mnesia的分布式緩存  199
9.3.1  用Mnesia取代ETS  199
9.3.2  讓緩存識別出其他節(jié)點  202
9.3.3  用資源探測定位其他緩存實例  205
9.3.4  動態(tài)復制Mnesia表  206
9.4  小結  209
第10章  打包、服務和部署  210
10.1  從系統(tǒng)的角度看應用  210
10.1.1  結構  211
10.1.2  元數據  211
10.1.3  系統(tǒng)如何管理運行中的應用  212
10.2  制作發(fā)布鏡像  213
10.2.1  發(fā)布鏡像  213
10.2.2  準備發(fā)布代碼  214
10.2.3  發(fā)布鏡像的元數據文件  214
10.2.4  腳本與啟動文件  216
10.2.5  系統(tǒng)配置  217
10.2.6  啟動目標系統(tǒng)  218
10.3  發(fā)布鏡像打包  219
10.3.1  創(chuàng)建發(fā)布鏡像包  219
10.3.2  發(fā)布鏡像包的內容  220
10.3.3  定制發(fā)布鏡像包  222
10.4  安裝發(fā)布鏡像  223
10.5  小結  223
第三部分  集成與完善
第11章  為緩存添加HTTP接口  226
11.1  實現(xiàn)TCP服務器  226
11.1.1  高效TCP服務器的設計模式  227
11.1.2  搭建tcp_interface應用的骨架  228
11.1.3  填充TCP服務器的實現(xiàn)邏輯  228
11.1.4  簡單文本協(xié)議  231
11.1.5  文本接口實現(xiàn)  232
11.2  打造一套全新的Web接口  234
11.2.1  HTTP簡介  234
11.2.2  實現(xiàn)一套通用的Web服務器行為模式  237
11.2.3  初識REST  248
11.2.4  用gen_web_server實現(xiàn)REST式協(xié)議  249
11.3  小結  252
第12章  用端口和NIF集成外圍代碼  253
12.1  端口和NIF  254
12.1.1  普通端口  255
12.1.2  鏈入式端口驅動  256
12.1.3  原生函數(NIF)  257
12.2  用端口來集成解析器  257
12.2.1  Erlang方面的端口  257
12.2.2  C方面的端口  260
12.2.3  編譯運行  271
12.3  開發(fā)鏈入式驅動  272
12.3.1  初識鏈入式驅動  273
12.3.2  驅動的C語言部分  274
12.3.3  編譯驅動代碼  278
12.3.4  驅動的Erlang部分  279
12.4  將解析器實現(xiàn)為NIF  280
12.4.1  NIF的Erlang部分  280
12.4.2  NIF的C代碼部分  281
12.4.3  編譯與運行代碼  287
12.5  小結  288
第13章  用Jinterface實現(xiàn)Erlang和Java間的通信  289
13.1  利用Jinterface在Erlang中集成
Java  290
13.1.1  OtpNode類  290
13.1.2  OtpMbox類  291
13.1.3  Erlang數據結構的Java映射  291
13.1.4  示例:Java中的消息處理  292
13.1.5  在Erlang中與Java節(jié)點通信  294
13.2  安裝和配置HBase  296
13.2.1  下載和安裝  296
13.2.2  配置HBase  296
13.3  為Simple Cache和HBase牽線搭橋  297
13.3.1  Erlang方面:sc_hbase.erl  298
13.3.2  HBaseConnector類  299
13.3.3  Java中的消息處理  301
13.3.4  HBaseTask類  304
13.4  在Simple Cache中整合HBase  306
13.4.1  查詢  306
13.4.2  插入  307
13.4.3  刪除  307
13.5  運行集成系統(tǒng)  308
13.6  小結  310
第14章  優(yōu)化與性能  311
14.1  如何進行性能調優(yōu)  312
14.1.1  設定性能目標  312
14.1.2  設定基線  313
14.1.3  系統(tǒng)性能分析  313
14.1.4  確定需要解決的問題  313
14.1.5  測定優(yōu)化成果  313
14.2  Erlang代碼性能分析  314
14.2.1  用cprof計算調用次數  314
14.2.2  用fprof測定執(zhí)行時間  316
14.3  Erlang編程語言的缺陷  320
14.3.1  基本數據類型的性能特點  321
14.3.2  內置函數和運算符的性能  324
14.3.3  函數  325
14.3.4  進程  327
14.4  小結  329
附錄A  安裝Erlang  330
附錄B  列表與引用透明性  332
  

本目錄推薦

掃描二維碼
Copyright ? 讀書網 ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號