《Netty Zookeeper Redis 高併發實戰》 圖書簡介

《Netty Zookeeper Redis 高併發實戰》 圖書簡介

本書爲 高併發社羣 —— 瘋狂創客圈 傾力編著, 高度剖析底層原理,深度解讀面試難題
瘋狂創客圈 Java 高併發【 億級流量聊天室實戰】實戰系列 【博客園總入口html

## 重要的重複3遍: 本書 面試必備 + 面試必備 + 面試必備

書籍

購買連接 京東商城《Netty Zookeeper Redis 高併發實戰java


《Netty Zookeeper Redis 高併發實戰》 圖書簡介

機械工業出版社出版,尼恩編著的《Netty Zookeeper Redis 高併發實戰》一書, 從操做系統底層的IO原理入手,同時提供高性能開發的實戰案例,是一本高併發Java編程應用基礎圖書。react

本書共分爲12章。面試

第1~5章爲高併發基礎,淺顯易懂地剖析高併發IO的底層原理,細緻地講解Reactor高性能模式,圖文並茂地介紹Java異步回調模式。這些原理方面的基礎知識很是重要,會爲讀者打下堅實的基礎,也是平常開發Java後臺應用時解決實際問題的金鑰匙。redis

第6~9章爲Netty原理和實戰,是本書的重中之重,主要介紹高性能通訊框架Netty、Netty的重要組件、單體IM的實戰設計和模塊實現。算法

第10~12章對ZooKeeper、Curator API、Redis、Jedis API的使用進行詳盡的說明,以提高讀者設計和開發高併發、可擴展系統的能力。spring

本書兼具基礎知識和實戰案例,既可做爲對Java NIO、高性能IO、高併發編程感興趣的大專院校學生和初、中級Java工程師的學習參考書,也可做爲在生產項目中須要用到Netty、Redis、ZooKeeper三大框架的架構師或項目人員的使用參考書。編程

說明下: 本書,是攻城獅、高級工程師 進行 面試準備的 必讀書籍之一!!json

爲何 呢? 書中,對一些面試中常常遇到的基本通信原理、高併發的理論知識的作了很是具體、深刻的解析,這也是本書區別於其餘書籍的一大特點bootstrap

《Netty Zookeeper Redis 高併發實戰》 目錄

第1章 高併發時代的必備技能

1.1 Netty爲什麼這麼火 1
1.1.1 Netty火熱的程度 1
1.1.2 Netty是面試的必殺器 2
1.2 高併發利器Redis 2
1.2.1 什麼是Redis 2
1.2.2 Redis成爲緩存事實標準的緣由 3
1.3 分佈式利器ZooKeeper 3
1.3.1 什麼是ZooKeeper 3
1.3.2 ZooKeeper的優點 4
1.4 高併發IM的綜合實踐 4
1.4.1 高併發IM的學習價值 4
1.4.2 龐大的應用場景 5
1.5 Netty、Redis、ZooKeeper實踐計劃 5
1.5.1 第1天:Java NIO實踐 5
1.5.2 第2天:Reactor反應器模式實踐 6
1.5.3 第3天:異步回調模式實踐 7
1.5.4 第4天:Netty基礎實踐 8
1.5.5 第5天:解碼器(Decoder)與編碼器(Encoder)實踐 9
1.5.6 第6天:JSON和ProtoBuf序列化實踐 11
1.5.7 第7~10天:基於Netty的單聊實戰 12
1.5.8 第11天:ZooKeeper實踐計劃 14
1.5.9 第12天:Redis實踐計劃 14
1.6 本章小結 16

第2章 【面試必備】 高併發IO的底層原理

2.1 IO讀寫的基礎原理 17
2.1.1 內核緩衝區與進程緩衝區 18
2.1.2 詳解典型的系統調用流程 18
2.2 四種主要的IO模型 19
2.2.1 同步阻塞IO(Blocking IO) 20
2.2.2 同步非阻塞NIO(None Blocking IO) 21
2.2.3 IO多路複用模型(IO Multiplexing) 22
2.2.4 異步IO模型(Asynchronous IO) 23
2.3 經過合理配置來支持百萬級併發鏈接 24
2.4 本章小結 26

第3章 【面試必備】 Java NIO通訊基礎詳解

3.1 Java NIO簡介 27

3.1.1 NIO和OIO的對比 28
3.1.2 通道(Channel) 28
3.1.3 Selector 選擇器 28
3.1.4 緩衝區(Buffer) 29

3.2 詳解NIO Buffer類及其屬性 29

3.2.1 Buffer類 29
3.2.2 Buffer類的重要屬性 29
3.2.3 4個屬性的小結 31

3.3 詳解NIO Buffer類的重要方法 31

3.3.1 allocate()建立緩衝區 31
3.3.2 put()寫入到緩衝區 32
3.3.3 flip()翻轉 33
3.3.4 get()從緩衝區讀取 34
3.3.5 rewind()倒帶 35
3.3.6 mark( )和reset( ) 37
3.3.7 clear( )清空緩衝區 38
3.3.8 使用Buffer類的基本步驟 38

3.4 詳解NIO Channel(通道)類 38

3.4.1 Channel(通道)的主要類型 39
3.4.2 FileChannel文件通道 39
3.4.3 使用FileChannel完成文件複製的實踐案例 41
3.4.4 SocketChannel套接字通道 42
3.4.5 使用SocketChannel發送文件的實踐案例 44
3.4.6 DatagramChannel數據報通道 46
3.4.7 使用DatagramChannel數據包通道發送數據的實踐案例 47

3.5 詳解NIO Selector選擇器 49

3.5.1 選擇器以及註冊 49
3.5.2 SelectableChannel可選擇通道 50
3.5.3 SelectionKey選擇鍵 50
3.5.4 選擇器使用流程 50
3.5.5 使用NIO實現Discard服務器的實踐案例 52
3.5.6 使用SocketChannel在服務器端接收文件的實踐案例 54
3.6 本章小結 57

第4章 【面試必備】 鼎鼎大名的Reactor反應器模式 59

4.1 Reactor反應器模式爲什麼如此重要 59

4.1.1 爲何首先學習Reactor反應器模式 59
4.1.2 Reactor反應器模式簡介 60
4.1.3 多線程OIO的致命缺陷 60

4.2 單線程Reactor反應器模式 62

4.2.1 什麼是單線程Reactor反應器 62
4.2.2 單線程Reactor反應器的參考代碼 63
4.2.3 一個Reactor反應器版本的EchoServer實踐案例 65
4.2.4 單線程Reactor反應器模式的缺點 67

4.3 多線程的Reactor反應器模式 68

4.3.1 多線程池Reactor反應器演進 68
4.3.2 多線程Reactor 反應器的實踐案例 68
4.3.3 多線程Handler處理器的實踐案例 70
4.4 Reactor反應器模式小結 72
4.5 本章小結 73

第5章 【面試必備】高併發:Future異步回調模式

5.1 從泡茶的案例提及 74
5.2 join異步阻塞 75
5.2.1 線程的join合併流程 75
5.2.2 使用join實現異步泡茶喝的實踐案例 75
5.2.3 詳解join合併方法 77
5.3 FutureTask異步回調之重武器 77
5.3.1 Callable接口 77
5.3.2 初探FutureTask類 78
5.3.3 Future接口 79
5.3.4 再探FutureTask類 79
5.3.5 使用FutureTask類實現異步泡茶喝的實踐案例 80
5.4 Guava的異步回調 82
5.4.1 詳解FutureCallback 82
5.4.2 詳解ListenableFuture 83
5.4.3 ListenableFuture異步任務 84
5.4.4 使用Guava實現泡茶喝的實踐案例 84
5.5 Netty的異步回調模式 87
5.5.1 詳解GenericFutureListener接口 87
5.5.2 詳解Netty的Future接口 88
5.5.3 ChannelFuture的使用 88
5.5.4 Netty的出站和入站異步回調 89
5.6 本章小結 90

第6章 Netty原理與基礎

6.1 第一個Netty的實踐案例DiscardServer 91
6.1.1 建立第一個Netty項目 91
6.1.2 第一個Netty服務器端程序 92
6.1.3 業務處理器NettyDiscardHandler 93
6.1.4 運行NettyDiscardServer 94

6.2 【面試必備】解密Netty中的Reactor反應器模式

6.2.1 回顧Reactor反應器模式中IO事件的處理流程 95
6.2.2 Netty中的Channel通道組件 96
6.2.3 Netty中的Reactor 反應器 96
6.2.4 Netty中的Handler處理器 97
6.2.5 Netty的流水線(Pipeline) 98

6.3 詳解Bootstrap啓動器類 100

6.3.1 父子通道 100
6.3.2 EventLoopGroup線程組 101
6.3.3 Bootstrap的啓動流程 101
6.3.4 ChannelOption通道選項 104

6.4 詳解Channel通道 105

6.4.1 Channel通道的主要成員和方法 105
6.4.2 EmbeddedChannel嵌入式通道 107

6.5 詳解Handler業務處理器 108

6.5.1 ChannelInboundHandler通道入站處理器 109
6.5.2 ChannelOutboundHandler通道出站處理器 110
6.5.3 ChannelInitializer通道初始化處理器 111
6.5.4 ChannelInboundHandler的生命週期的實踐案例 112

6.6 詳解Pipeline流水線 115

6.6.1 Pipeline入站處理流程 115
6.6.2 Pipeline出站處理流程 116
6.6.3 ChannelHandlerContext上下文 118
6.6.4 截斷流水線的處理 118
6.6.5 Handler業務處理器的熱拔插 120

6.7 詳解ByteBuf緩衝區 122

6.7.1 ByteBuf的優點 122
6.7.2 ByteBuf的邏輯部分 123
6.7.3 ByteBuf的重要屬性 123
6.7.4 ByteBuf的三組方法 124
6.7.5 ByteBuf基本使用的實踐案例 125
6.7.6 ByteBuf的引用計數 127
6.7.7 ByteBuf的Allocator分配器 128
6.7.8 ByteBuf緩衝區的類型 130
6.7.9 三類ByteBuf使用的實踐案例 131
6.7.10 ByteBuf的自動釋放 133

6.8 ByteBuf淺層複製的高級使用方式 136

6.8.1 slice切片淺層複製 136
6.8.2 duplicate總體淺層複製 137
6.8.3 淺層複製的問題 138
6.9 EchoServer回顯服務器的實踐案例 138
6.9.1 NettyEchoServer回顯服務器的服務器端 138
6.9.2 共享NettyEchoServerHandler處理器 139
6.9.3 NettyEchoClient客戶端代碼 140
6.9.4 NettyEchoClientHandler處理器 142
6.10 本章小結 143

第7章 Decoder與Encoder重要組件 144

7.1 Decoder原理與實踐 144
7.1.1 ByteToMessageDecoder解碼器 145
7.1.2 自定義Byte2IntegerDecoder整數解碼器的實踐案例 146
7.1.3 ReplayingDecoder解碼器 148
7.1.4 整數的分包解碼器的實踐案例 149
7.1.5 字符串的分包解碼器的實踐案例 152
7.1.6 MessageToMessageDecoder解碼器 156
7.2 開箱即用的Netty內置Decoder 157
7.2.1 LineBasedFrameDecoder解碼器 157
7.2.2 DelimiterBasedFrameDecoder解碼器 158
7.2.3 LengthFieldBasedFrameDecoder解碼器 159
7.2.4 多字段Head-Content協議數據幀解析的實踐案例 162
7.3 Encoder原理與實踐 164
7.3.1 MessageToByteEncoder編碼器 165
7.3.2 MessageToMessageEncoder編碼器 166
7.4 解碼器和編碼器的結合 167
7.4.1 ByteToMessageCodec編解碼器 168
7.4.2 CombinedChannelDuplexHandler組合器 169
7.5 本章小結 169

第8章 JSON和ProtoBuf序列化

8.1 詳解粘包和拆包 172
8.1.1 半包問題的實踐案例 172
8.1.2 什麼是半包問題 174
8.1.3 半包現象的原理 174
8.2 JSON協議通訊 175
8.2.1 JSON序列化的通用類 175
8.2.2 JSON序列化與反序列化的實踐案例 176
8.2.3 JSON傳輸的編碼器和解碼器之原理 178
8.2.4 JSON傳輸之服務器端的實踐案例 179
8.2.5 JSON傳輸之客戶端的實踐案例 180
8.3 Protobuf協議通訊 182
8.3.1 一個簡單的proto文件的實踐案例 182
8.3.2 控制檯命令生成POJO和Builder 183
8.3.3 Maven插件生成POJO和Builder 183
8.3.4 消息POJO和Builder的使用之實踐案例 184
8.4 Protobuf編解碼的實踐案例 187
8.4.1 Protobuf編碼器和解碼器的原理 187
8.4.2 Protobuf傳輸之服務器端的實踐案例 188
8.4.3 Protobuf傳輸之客戶端的實踐案例 189
8.5 詳解Protobuf協議語法 191
8.5.1 proto的頭部聲明 191
8.5.2 消息結構體與消息字段 192
8.5.3 字段的數據類型 193
8.5.4 其餘的語法規範 194
8.6 本章小結 195

第9章 基於Netty的單體IM系統的開發實踐 196

9.1 自定義ProtoBuf編解碼器 196
9.1.1 自定義Protobuf編碼器 197
9.1.2 自定義Protobuf解碼器 198
9.1.3 IM系統中Protobuf消息格式的設計 199
9.2 概述IM的登陸流程 202
9.2.1 圖解登陸/響應流程的9個環節 203
9.2.2 客戶端涉及的主要模塊 203
9.2.3 服務器端涉及的主要模塊 204
9.3 客戶端的登陸處理的實踐案例 204
9.3.1 LoginConsoleCommand和User POJO 205
9.3.2 LoginSender發送器 207
9.3.3 ClientSession客戶端會話 209
9.3.4 LoginResponceHandler登陸響應處理器 211
9.3.5 客戶端流水線的裝配 212
9.4 服務器端的登陸響應的實踐案例 213
9.4.1 服務器流水線的裝配 214
9.4.2 LoginRequestHandler登陸請求處理器 215
9.4.3 LoginProcesser用戶驗證邏輯 216
9.4.4 EventLoop線程和業務線程相互隔離 217
9.5 詳解ServerSession服務器會話 218
9.5.1 通道的容器屬性 219
9.5.2 ServerSession服務器端會話類 220
9.5.3 SessionMap會話管理器 222
9.6 點對點單聊的實踐案例 223
9.6.1 簡述單聊的端到端流程 223
9.6.2 客戶端的ChatConsoleCommand收集聊天內容 224
9.6.3 客戶端的CommandController發送POJO 224
9.6.4 服務器端的ChatRedirectHandler消息轉發 225
9.6.5 服務器端的ChatRedirectProcesser異步處理 226
9.6.6 客戶端的ChatMsgHandler接收POJO 227

9.7 【面試必備】詳解心跳檢測

9.7.1 網絡鏈接的假死現象 228
9.7.2 服務器端的空閒檢測 229
9.7.3 客戶端的心跳報文 230
9.8 本章小結 232

第10章 ZooKeeper分佈式協調 233

10.1 ZooKeeper僞集羣安裝和配置 233
10.1.1 建立數據目錄和日誌目錄: 234
10.1.2 建立myid文件 234
10.1.3 建立和修改配置文件 235
10.1.4 配置文件示例 237
10.1.5 啓動ZooKeeper僞集羣 238
10.2 使用ZooKeeper進行分佈式存儲 239
10.2.1 詳解ZooKeeper存儲模型 239
10.2.2 zkCli客戶端命令清單 240
10.3 ZooKeeper應用開發的實踐 241
10.3.1 ZkClient開源客戶端介紹 242
10.3.2 Curator開源客戶端介紹 242
10.3.3 Curator開發的環境準備 243
10.3.4 Curator客戶端實例的建立 244
10.3.5 經過Curator建立ZNode節點 245
10.3.6 在Curator中讀取節點 247
10.3.7 在Curator中更新節點 248
10.3.8 在Curator中刪除節點 249

10.4 分佈式命名服務的實踐 251

10.4.1 ID生成器 252
10.4.2 ZooKeeper分佈式ID生成器的實踐案例 253
10.4.3 集羣節點的命名服務之實踐案例 254
10.4.4 使用ZK實現SnowFlakeID算法的實踐案例 256
10.5 分佈式事件監聽的重點 261
10.5.1 Watcher標準的事件處理器 261
10.5.2 NodeCache節點緩存的監聽 265
10.5.3 PathChildrenCache子節點監聽 267
10.5.4 Tree Cache節點樹緩存 272

10.6 【面試必備】分佈式鎖的原理與實踐

10.6.1 公平鎖和可重入鎖的原理 276
10.6.2 ZooKeeper分佈式鎖的原理 277
10.6.3 分佈式鎖的基本流程 279
10.6.4 加鎖的實現 280
10.6.5 釋放鎖的實現 285
10.6.6 分佈式鎖的使用 287
10.6.7 Curator的InterProcessMutex可重入鎖 288
10.7 本章小結 289

第11章 分佈式緩存Redis 290

11.1 Redis入門 290
11.1.1 Redis安裝和配置 290
11.1.2 Redis客戶端命令 292
11.1.3 Redis Key的命名規範 294

11.2 【面試必備】Redis數據類型 295

11.2.1 String字符串 295
11.2.2 List列表 296
11.2.3 Hash哈希表 297
11.2.4 Set集合 298
11.2.5 Zset有序集合 299
11.3 Jedis基礎編程的實踐案例 300
11.3.1 Jedis操做String字符串 301
11.3.2 Jedis操做List列表 303
11.3.3 Jedis操做Hash哈希表 304
11.3.4 Jedis操做Set集合 305
11.3.5 Jedis操做Zset有序集合 306
11.4 JedisPool鏈接池的實踐案例 308
11.4.1 JedisPool的配置 308
11.4.2 JedisPool建立和預熱 310
11.4.3 JedisPool的使用 312
11.5 使用spring-data-redis完成 CRUD的實踐案例 313
11.5.1 CRUD中應用緩存的場景 313
11.5.2 配置spring-redis.xml 315
11.5.3 使用RedisTemplate模板API 316
11.5.4 使用RedisTemplate模板API完成CRUD的實踐案例 321
11.5.5 使用RedisCallback回調完成CRUD的實踐案例 323
11.6 Spring的Redis緩存註解 325
11.6.1 使用Spring緩存註解完成CRUD的實踐案例 325
11.6.2 spring-redis.xml中配置的調整 327
11.6.3 詳解@CachePut和 @Cacheable註解 328
11.6.4 詳解@CacheEvict註解 329
11.6.5 詳解@Caching組合註解 330
11.7 詳解SpringEL(SpEL) 331
11.7.1 SpEL運算符 332
11.7.2 緩存註解中的SpringEL表達式 334
11.8 本章小結 336

第12章 億級高併發IM架構的開發實踐 337

12.1 【面試必備】如何支撐億級流量的高併發IM架構的理論基礎

12.1.1 億級流量的系統架構的開發實踐 338
12.1.2 高併發架構的技術選型 338
12.1.3 詳解IM消息的序列化協議選型 339
12.1.4 詳解長鏈接和短鏈接 339
12.2 分佈式IM的命名服務的實踐案例 340
12.2.1 IM節點的POJO類 341
12.2.2 IM節點的ImWorker類 342
12.3 Worker集羣的負載均衡之實踐案例 345
12.3.1 ImLoadBalance負載均衡器 346
12.3.2 與WebGate的整合 348
12.4 即時通訊消息的路由和轉發的實踐案例 349
12.4.1 IM路由器WorkerRouter 349
12.4.2 IM轉發器WorkerReSender 352
12.5 Feign短鏈接RESTful調用 354
12.5.1 短鏈接API的接口準備 355
12.5.2 聲明遠程接口的本地代理 355
12.5.3 遠程API的本地調用 356
12.6 分佈式的在線用戶統計的實踐案例 358
12.6.1 Curator的分佈式計數器 358
12.6.2 用戶上線和下線的統計 360
12.7 本章小結 361


瘋狂創客圈 實戰計劃
  • Netty 億級流量 高併發 IM後臺 開源項目實戰
  • Netty 源碼、原理、JAVA NIO 原理
  • Java 面試題 一網打盡
  • 瘋狂創客圈 【 博客園 總入口 】

er 349
12.4.2 IM轉發器WorkerReSender 352
12.5 Feign短鏈接RESTful調用 354
12.5.1 短鏈接API的接口準備 355
12.5.2 聲明遠程接口的本地代理 355
12.5.3 遠程API的本地調用 356
12.6 分佈式的在線用戶統計的實踐案例 358
12.6.1 Curator的分佈式計數器 358
12.6.2 用戶上線和下線的統計 360
12.7 本章小結 361


瘋狂創客圈 實戰計劃
  • Netty 億級流量 高併發 IM後臺 開源項目實戰
  • Netty 源碼、原理、JAVA NIO 原理
  • Java 面試題 一網打盡
  • 瘋狂創客圈 【 博客園 總入口 】
相關文章
相關標籤/搜索