-
>
全國計算機等級考試最新真考題庫模擬考場及詳解·二級MSOffice高級應用
-
>
決戰行測5000題(言語理解與表達)
-
>
軟件性能測試.分析與調優實踐之路
-
>
第一行代碼Android
-
>
JAVA持續交付
-
>
EXCEL最強教科書(完全版)(全彩印刷)
-
>
深度學習
OPENRESTY完全開發指南:構建百萬級別并發的WEB應用 版權信息
- ISBN:9787121348969
- 條形碼:9787121348969 ; 978-7-121-34896-9
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
OPENRESTY完全開發指南:構建百萬級別并發的WEB應用 本書特色
適讀人群 :追求高性能的Web應用研發工程師 微服務、API網關、Web應用防火墻的研發工程師 通用的HTTP/TCP/UDP應用服務研發工程師 基于OpenResty/Nginx深度定制的研發工程師 工作在Linux系統上的的運維、測試工程師 計算機編程愛好者 本書由一線技術專家基于自己的工作經驗精心撰寫而成,主要包括OpenResty的組成、運行平臺、工作語言、內部運行機制、功能接口、各種服務的配置和開發方式。 本書作者技術功底強,寫作水平高,寫作的圖書不唯市場論,不唯風頭論,只寫自己一線工作經驗,對于自己的技術書籍出版也從來都是一絲不茍,一心只為大家奉獻優質、實用且實戰的優秀技術圖書!
OPENRESTY完全開發指南:構建百萬級別并發的WEB應用 內容簡介
OpenResty是一個基于Nginx的高性能Web平臺,能夠方便地搭建處理超高并發的動態Web應用、Web服務和動態網關。與現有的其他開發語言/環境相比,OpenResty有著高性能、高靈活性、易于學習和擴展等許多優點,近年來得到了越來越多開發者的關注,也有了很多成功的應用范例,如Adobe、Dropbox、GitHub等知名公司都基于OpenResty構建了自己的后端業務應用。OpenResty自帶完善的幫助文檔,開發社區也很活躍,但相關的學習資料――特別是中文資料較少。本書基于作者多年使用OpenResty的經驗,系統地闡述了OpenResty相關的各方面知識和要點,幫助讀者快速掌握這個高效易用的Web開發平臺,進而實現HTTP/HTTPS/TCP/UDP等多種網絡應用。本書結構嚴謹、詳略得當,具有較強的實用性,適合廣大軟件開發工程師、系統運維工程師、編程愛好者和計算機專業學生閱讀參考。
OPENRESTY完全開發指南:構建百萬級別并發的WEB應用 目錄
第0章 導讀 1
0.1 關于本書 1
0.2 讀者對象 1
0.3 讀者要求 3
0.4 運行環境 3
0.5 本書的結構 3
0.6 如何閱讀本書 5
0.7 本書的源碼 5
第1章 總論 7
1.1 簡介 7
1.2 歷史 8
1.3 組成 9
1.4 版本 11
1.5 安裝 12
1.5.1 直接安裝 12
1.5.2 源碼安裝 13
1.5.3 定制安裝 13
1.6 目錄結構 14
1.7 啟停服務 15
1.8 組件管理工具 15
1.9 命令行工具 16
1.10 參考手冊 18
1.11 性能對比 18
1.12 應用架構 21
1.13 總結 22
第2章 Nginx平臺 23
2.1 簡介 23
2.2 進程模型 24
2.3 配置文件 25
2.4 變量 26
2.5 HTTP服務 27
2.5.1 server配置 28
2.5.2 location配置 28
2.6 TCP/UDP服務 29
2.7 反向代理 29
2.7.1 上游集群 30
2.7.2 代理轉發 31
2.8 運行日志 31
2.8.1 訪問日志 32
2.8.2 錯誤日志 32
2.9 總結 32
第3章 Lua語言 35
3.1 簡介 35
3.2 注釋 36
3.3 數據類型 36
3.4 字符串 37
3.5 變量 38
3.6 運算 39
3.6.1 算術運算 39
3.6.2 關系運算 39
3.6.3 邏輯運算 40
3.6.4 字符串運算 40
3.6.5 注意事項 41
3.7 控制語句 41
3.7.1 語句塊 41
3.7.2 賦值語句 41
3.7.3 分支語句 42
3.7.4 循環語句 43
3.8 函數 44
3.8.1 定義函數 44
3.8.2 參數和返回值 45
3.9 表 46
3.9.1 定義表 46
3.9.2 操作表 46
3.9.3 范圍循環 47
3.9.4 作為函數的參數 48
3.10 模塊 48
3.11 面向對象 49
3.11.1 基本特性 49
3.11.2 原型模式 50
3.11.3 self參數 51
3.12 標準庫 51
3.12.1 base庫 52
3.12.2 package庫 52
3.12.3 string庫 53
3.12.4 table庫 54
3.12.5 math庫 55
3.12.6 io庫 56
3.12.7 os庫 57
3.12.8 debug庫 57
3.12.9 使用技巧 57
3.13 高級特性 58
3.13.1 閉包 58
3.13.2 保護調用 58
3.13.3 可變參數 59
3.14 總結 59
第4章 LuaJIT環境 61
4.1 簡介 61
4.2 goto語句 62
4.3 jit庫 62
4.4 table庫 63
4.5 bit庫 63
4.6 ffi庫 65
4.7 編譯為字節碼 67
4.8 編譯為機器碼 68
4.9 總結 68
第5章 開發概述 71
5.1 應用示例 71
5.1.1 編碼實現 71
5.1.2 測試驗證 73
5.2 運行命令 74
5.3 目錄結構 75
5.4 配置指令 76
5.5 運行機制 77
5.5.1 處理階段 77
5.5.2 執行程序 79
5.5.3 定時任務 81
5.5.4 流程圖 81
5.6 功能接口 83
5.7 核心庫 83
5.8 應用開發流程 84
5.9 總結 85
第6章 基礎功能 87
6.1 系統信息 87
6.2 運行日志 88
6.3 時間日期 89
6.3.1 當前時間 90
6.3.2 時間戳 90
6.3.3 格式化時間戳 90
6.3.4 更新時間 91
6.3.5 睡眠 91
6.4 數據編碼 92
6.4.1 Base64 92
6.4.2 JSON 92
6.4.3 MessagePack 94
6.5 正則表達式 95
6.5.1 配置指令 95
6.5.2 匹配選項 96
6.5.3 匹配 96
6.5.4 查找 98
6.5.5 替換 99
6.5.6 切分 100
6.6 高速緩存 101
6.6.1 創建緩存 101
6.6.2 使用緩存 102
6.7 總結 103
第7章 HTTP服務 105
7.1 簡介 105
7.2 配置指令 106
7.3 常量 107
7.3.1 狀態碼 107
7.3.2 請求方法 108
7.4 變量 108
7.4.1 讀變量 108
7.4.2 寫變量 109
7.5 基本信息 110
7.5.1 請求來源 110
7.5.2 起始時間 110
7.5.3 請求頭 110
7.5.4 暫存數據 111
7.6 請求行 111
7.6.1 版本 112
7.6.2 方法 112
7.6.3 地址 112
7.6.4 參數 113
7.7 請求頭 114
7.7.1 讀取數據 114
7.7.2 改寫數據 115
7.8 請求體 115
7.8.1 丟棄數據 115
7.8.2 讀取數據 115
7.8.3 改寫數據 116
7.9 響應頭 117
7.9.1 改寫數據 117
7.9.2 發送數據 118
7.9.3 過濾數據 118
7.10 響應體 118
7.10.1 發送數據 118
7.10.2 過濾數據 119
7.11 手動收發數據 120
7.12 流程控制 121
7.12.1 重定向請求 121
7.12.2 終止請求 121
7.13 檢測斷連 122
7.14 綜合示例 123
7.15 總結 126
第8章 訪問后端 127
8.1 簡介 127
8.2 子請求 128
8.2.1 接口說明 128
8.2.2 應用示例 129
8.2.3 使用建議 130
8.3 協程套接字 131
8.3.1 配置指令 131
8.3.2 創建對象 132
8.3.3 超時設置 133
8.3.4 建立連接 133
8.3.5 復用連接 134
8.3.6 關閉連接 134
8.3.7 發送數據 135
8.3.8 接收數據 135
8.3.9 應用示例 136
8.4 DNS客戶端 137
8.4.1 創建對象 138
8.4.2 查詢地址 138
8.4.3 緩存地址 139
8.5 HTTP客戶端 140
8.5.1 創建對象 140
8.5.2 發送請求 140
8.6 WebSocket客戶端 142
8.6.1 創建對象 142
8.6.2 建立連接 143
8.6.3 關閉連接 143
8.6.4 復用連接 143
8.6.5 發送數據 144
8.6.6 接收數據 144
8.7 Redis客戶端 145
8.7.1 創建對象 145
8.7.2 建立連接 145
8.7.3 關閉連接 146
8.7.4 復用連接 146
8.7.5 執行命令 146
8.7.6 管道 147
8.7.7 腳本 148
8.8 MySQL客戶端 148
8.8.1 創建對象 149
8.8.2 建立連接 149
8.8.3 服務器版本號 150
8.8.4 關閉連接 150
8.8.5 復用連接 150
8.8.6 簡單查詢 150
8.8.7 高級查詢 152
8.8.8 防止SQL注入 152
8.9 總結 153
第9章 反向代理 155
9.1 簡介 155
9.2 上游集群 156
9.2.1 靜態服務器信息 157
9.2.2 動態服務器信息 158
9.2.3 服務器下線 159
9.2.4 當前上游集群 159
9.3 負載均衡 160
9.3.1 使用方式 160
9.3.2 功能接口 161
9.4 總結 162
第10章 高級功能 163
10.1 共享內存 163
10.1.1 配置指令 163
10.1.2 寫操作 164
10.1.3 讀操作 165
10.1.4 刪除操作 166
10.1.5 計數操作 166
10.1.6 隊列操作 166
10.1.7 過期操作 167
10.1.8 其他操作 168
10.2 定時器 168
10.2.1 配置指令 168
10.2.2 單次任務 169
10.2.3 周期任務 170
10.3 進程管理 171
10.3.1 進程類型 171
10.3.2 工作進程 172
10.3.3 監控進程 173
10.3.4 特權進程 173
10.4 輕量級線程 174
10.4.1 啟動線程 175
10.4.2 等待線程 175
10.4.3 掛起線程 176
10.4.4 停止線程 177
10.4.5 信號量 178
10.5 總結 179
第11章 HTTPS服務 181
11.1 簡介 181
11.1.1 密碼學 181
11.1.2 網絡協議 182
11.2 服務配置 184
11.3 應用開發 185
11.4 基本信息 185
11.4.1 協議版本號 185
11.4.2 主機名 186
11.4.3 地址 186
11.5 加載證書 187
11.5.1 清除證書 187
11.5.2 設置證書 187
11.5.3 設置私鑰 188
11.5.4 測試驗證 189
11.6 查驗證書 189
11.6.1 發送查詢 189
11.6.2 通知客戶端 191
11.7 會話復用 191
11.7.1 Session ID 191
11.7.2 Session Tickets 193
11.8 總結 193
第12章 HTTP2服務 195
12.1 簡介 195
12.2 服務配置 196
12.3 應用開發 197
12.4 測試驗證 197
12.5 總結 198
第13章 Websocket服務 199
13.1 簡介 199
13.2 服務配置 200
13.3 應用開發 200
13.4 總結 202
第14章 TCP/UDP服務 203
14.1 簡介 203
14.2 配置指令 204
14.3 運行機制 205
14.3.1 處理階段 205
14.3.2 執行程序 206
14.3.3 流程圖 206
14.4 功能接口 208
14.5 應用示例 208
14.6 總結 210
第15章 結束語 211
附錄A 推薦書目 215
附錄B 定制OpenResty 217
OPENRESTY完全開發指南:構建百萬級別并發的WEB應用 節選
開發概述 由于Nginx的模塊化架構具有良好的擴展性,OpenResty實現了ngx_lua和stream_ lua等模塊,把Lua/LuaJIT完美地整合進了Nginx,從而讓我們能夠在Nginx內部的多個關鍵節點里嵌入Lua腳本,用Lua這種便捷的語言來實現復雜的HTTP/TCP/UDP業務邏輯,同時依然保持著高度的并發服務能力。 本章將先從一個簡單的應用服務例子開始,從宏觀的層次介紹開發OpenResty應用的基本流程、配置指令、運行機制等重要知識。 5.1 應用示例 在第3章和第4章我們學習了OpenResty里使用的Lua語言,也編寫了一些Lua程序,但它們都是使用resty-cli命令行工具運行的,并不能對外提供服務。 本節將使用OpenResty開發出一個簡單的Web服務:“Hello World”。 5.1.1 編碼實現 與其他的編程語言不同,使用OpenResty開發服務應用首先要做的并不是編寫程序代碼,而是要編寫配置文件。這是因為OpenResty使用了Nginx作為運行平臺,Nginx本身需要使用配置文件來定義Web服務。這里我們將配置文件命名為“hello.conf”。 基本配置 作為Web服務,我們應該依據實際情況決定應用的服務能力,例如開多少個worker進程、可能的*大并發數量等。 “Hello World”應用的功能很簡單,所以我們只開啟一個worker進程,并發連接*多512個,其他的都使用默認配置。 在配置文件hello.conf里要使用的指令是“worker_processes”和“worker_ connections”,如下:[ 其實worker_processes和worker_connections都可以不寫,默認值就是1個worker進程和*多512個連接,但配置塊events{}不能省略。] worker_processes 1; #設置worker進程的數量為1 events { #設置并發連接需要在events塊里 worker_connections 512; #單個worker的*大并發連接數 } 服務配置 接下來需要決定Web服務的協議和端口號,我們使用*常用的HTTP協議,端口80,域名任意。 配置HTTP服務需要編寫http{}配置塊,并在里面使用指令server、listen、server_ name依次定義端口號和域名: http { #定義HTTP服務 server { #server塊,定義Web服務 listen 80; #服務使用的是80端口 server_name *.*; #HTTP服務對應任意域名 } #server塊結束 } #http塊結束 處理請求 有了Web服務,我們還要有處理請求時的URI入口。因為“Hello World”應用總是返回唯一的結果,所以應當使用“location /”來匹配所有的URI: http { #定義HTTP服務 server { #server塊,定義Web服務 listen 80; #服務使用的是80端口 server_name *.*; #HTTP服務對應任意域名 location / {} #location塊,匹配任意URI } #server塊結束 } #http塊結束 應用程序 經過前面的三個步驟,現在Web服務的基本框架已經建立起來了,缺的只是服務的內容,這是要真正編寫Lua代碼的地方。 OpenResty提供一個專用指令“content_by_lua_block”,可以在配置文件里書寫Lua代碼,產生響應內容: content_by_lua_block { -- 我們的**個OpenResty應用 ngx.print("hello, world") -- 打印經典的“hello, world” } #Lua代碼結束 指令里調用了OpenResty的功能接口ngx.print,向客戶端輸出了“hello, world”字符串。 完整代碼 這樣,我們的**個OpenResty應用就完成了,完整的代碼如下: worker_processes 1; #設置worker進程的數量為1 events { #設置并發連接需要在events塊里 worker_connections 512; #單個worker的*大連接數 } http { #定義HTTP服務 server { #server塊,定義Web服務 listen 80; #服務使用的是80端口 server_name *.*; #HTTP服務對應任意域名 location / { #location塊,匹配任意URI content_by_lua_block { -- 我們的**個OpenResty應用 ngx.print("hello, world") -- 打印經典的“hello, world” } #Lua代碼結束 } #location塊結束 } #server塊結束 } #http塊結束 5.1.2 測試驗證 OpenResty應用開發完成之后不需要編譯,可以部署后直接運行對外提供Web服務。但注意不能簡單地執行“bin/openresty”,那將會使用OpenResty默認的配置文件而不是我們剛編寫的配置文件。 啟動應用需要使用“-c”參數,讓OpenResty以指定的配置文件運行: /usr/local/openresty/bin/openresty -c "`pwd`/hello.conf" 現在就可以使用curl來驗證“Hello World”應用的運行情況了: curl -v 127.0.0.1 #curl命令發送HTTP請求 curl -v 127.0.0.1/hello #總會得到“hello, world” 停止應用時同樣需要加上“-c”參數: /usr/local/openresty/bin/openresty -c "`pwd`/hello.conf" -s stop ……
OPENRESTY完全開發指南:構建百萬級別并發的WEB應用 作者簡介
羅劍鋒(網名Chrono),96年就讀于東北財經大學 1997年開始接觸C/C++ 1998年參加計算機軟件專業技術資格和水平考試,獲高級程序員資質 2003年畢業于北京理工大學,獲計算機專業碩士學位主要研究方向為C/C++、設計模式、高性能網絡服務器開發業余愛好是閱讀、旅游、欣賞音樂和電影。
- >
龍榆生:詞曲概論/大家小書
- >
姑媽的寶刀
- >
朝聞道
- >
伊索寓言-世界文學名著典藏-全譯本
- >
有舍有得是人生
- >
羅庸西南聯大授課錄
- >
山海經
- >
莉莉和章魚