官术网_书友最值得收藏!

前言

Netty是一款基于NIO(非阻塞I/O)開發的網絡框架,與傳統BIO相比,它的并發性能得到了很大的提高,而且更加節省資源。Netty不僅封裝了NIO操作的很多細節;在設計上還基于靈活、可擴展的事件驅動模型與高度可定制的線程模型,讓Netty的應用更加靈活。作為一個被廣泛使用的Java網絡編程框架,Netty在互聯網領域、大數據分布式計算領域、游戲行業、物聯網行業等都得到了廣泛的應用。很多流行的大數據框架的核心通信模塊也都使用的是Netty,如Elasticsearch、HBase、Flink等。

為什么編寫本書

如今,大數據已是互聯網應用的大趨勢,很多Java程序員都想轉向大數據方向,而Netty不僅是大數據框架的核心,還是Java高并發中最火的框架之一。因此,學好Netty更有利于深入了解大數據框架底層源碼。學習Netty,不僅要學會如何運用它,還要對其底層原理、底層代碼的編程技巧有深度的了解。目前,國內Netty方面的圖書較少,尤其是既有深度,又比較簡潔,并有企業級通用案例的圖書更是鳳毛麟角,這加大了很多Java程序員向大數據方向轉變的難度,本書試圖彌補這一空白。

本書主要基于Netty的穩定版本Netty v4.1.38.Final(對以后的新版本也具有普適性)編寫。本書的主要目的是幫助軟件工程師讀懂Netty v4.1.38.Final版本源碼,并能開發一款類似Dubbo的分布式RPC(Remote Procedure Call,遠程過程調用),以及Netty的特性在Flink分布式流式計算框架中的實際應用。在本書中,作者對平常在編程中遇到的重點、難點進行了分析,并給予了充分的論述。對于一名軟件工程師來說,本書可以使他們少走彎路,并更快地掌握Netty v4.1.38.Final版本源碼及編程技巧。

關于本書作者

作者從2012年到2017年一直從事Java后臺服務開發工作,在此期間曾創辦大象在線分享網,網名夜行俠老師,錄制Netty源碼剖析教學視頻,同時在多家互聯網公司擔任系統架構師,有豐富的Java工作實戰經驗。2018年轉型從事大數據研發工作,對Flink、HBase、Kafka、Elasticsearch等大數據組件進行了深入的研究。

本書主要內容

本書以實戰為導向,深入解讀Netty底層核心源碼及架構設計。通過閱讀本書,讀者可以靈活運用Netty的特性、加深多線程實戰應用、熟悉Netty的底層核心源碼。全書共包含2個高級應用項目,分別為分布式RPC與10億級任務調度和監控引擎。讀者可以在實戰過程中找到學習Netty的成就感,在學完Netty內存管理及Netty核心組件的源碼剖析后,能夠比較徹底地掌握Netty。

如何閱讀本書

在閱讀本書前,讀者應學過Java語言、網絡通信等課程,并具備并發編程的能力。本書的章節安排是依據讀者循序漸進地學習Netty的順序設立的,建議初學者從前至后閱讀。由于Netty源碼復雜難懂,建議讀者分以下幾部分閱讀本書。

? 第一部分:以實戰為主,學會Netty客戶端與服務端的長連接通信,靈活運用Netty的Future機制,同時對照第3章,嘗試編寫一套完整的分布式RPC。

? 第二部分:仔細、反復地閱讀Netty核心源碼解讀知識,主要包括NioEventLoop線程處理邏輯、Netty的Channel功能設計、ByteBuf緩沖區內存、內存泄漏檢測機制。熟練掌握這部分內容有利于理解框架的整體實現原理。

? 第三部分:內存管理源碼解讀。這部分是Netty源碼中最難掌握的,需要有一定的耐心。先了解jemalloc內存分配思想,再從底層PoolChunk的內存分配到上層的PoolArena對內存的整體管理。在深入學習具體的分配算法時,可把部分代碼單獨拿出來進行單元測試,以加深理解。

? 第四部分:Netty的高級應用、線上問題分析和性能調優。這部分主要是作者的一些實戰經驗。通過前面對Netty的運用和源碼解讀,讀者對Netty有了一定的了解,但還缺乏線上部署經驗,以及高并發大數據的實際應用經驗。這部分內容采用Netty時間輪實時監控10億級任務,運用Jmeter長連接壓測分布式RPC,讓讀者在實際項目中更加全面和自信地使用Netty。

源碼閱讀非常需要耐心,通過閱讀Netty源碼,讀者會明顯感覺到自身編程能力及源碼閱讀能力的提升,尤其是多線程編程能力。建議讀者反復閱讀至少3遍以上,直至對Netty的Channel、Handler、NioEventLoop、ByteBuf的各個方法都了如指掌。

致謝

我首先要特別感謝我的妻子譚小蘭,寫書需要大量的時間,我起初只是以視頻在線教學的方式來總結自己的經驗和收獲,并分享給部分學員。是她在背后默默地支持我,我才能全身心投入書稿的寫作去,從而與更多想深入學習Netty的讀者分享本書。

同時感謝電子工業出版社博文視點宋亞東先生對本書的重視和他們為本書所做的一切。由于水平有限,書中難免存在不足及疏漏,敬請專家和讀者批評指正。

劉耀林
2020年11月

讀者服務

微信掃碼回復:39853

? 獲取作者提供的各種共享文檔、線上直播、技術分享等免費資源。

? 加入本書讀者交流群,與作者互動。

? 獲取博文視點學院在線課程、電子書20元代金券。

? 獲取本書配套的源代碼。

輕松訪問http://www.broadview.com.cn/39853,并注冊成為博文視點社區用戶,可以在“下載資源”處下載本書源代碼。您對書中內容的修改意見可在本書頁面的“提交勘誤”處提交,若被采納,將獲贈博文視點社區積分。在您購買電子書時,積分可用來抵扣相應金額。

主站蜘蛛池模板: 织金县| 孝昌县| 九龙坡区| 宜都市| 河北区| 淮阳县| 玛沁县| 阳曲县| 蓬莱市| 乡城县| 海淀区| 双辽市| 松原市| 南和县| 辛集市| 诸暨市| 永新县| 宁明县| 苏州市| 法库县| 大庆市| 阿鲁科尔沁旗| 灵川县| 锦屏县| 无棣县| 平潭县| 黔南| 陇西县| 常德市| 沙田区| 英山县| 内丘县| 武平县| 定远县| 读书| 沂水县| 乌兰浩特市| 大竹县| 塔河县| 淅川县| 苗栗县|