華為應用市場總架構師超神之作:用19個案例透解Netty

2021-01-07 Java鬥帝之路

前言

讀者評價:

實際上,本書更像是以 netty 作為參考,闡述了構建一個高性能通信框架的主要考量(當然,也講了 netty 的一些坑);

第一,是線程模型,兩方面:

Netty 採用了傳統的 reactor 模式,利用 boss event loop group(acceptor) & worker event loop group(io worker)還處理 連接建立和 io 處理,之所以分開,是因為 io 協議的解析往往較為耗時,二者分開不僅實現業務隔離,更方便調優;同時,減少鎖競爭;採用了 event loop 模式,單個線程,異步化地處理各種事件和動作(網絡事件、讀寫事件、業務動作等等);一來減少競爭(串行化設計),二來,控制線程數,來防止因為線程過多造成系統過早進入【零界點】;第二,是減少鎖競爭,也是兩個方面:

netty 通過 channelid 來實現 io event loop 和業務線程池的綁定,減少了隊列層面的鎖競爭;串行化一個 eventloop 處理所有相關事件和動作,減少跨線程同步的必要;第三,內存優化,還是兩個方面

netty 的核心,是池化技術,基於 jemalloc(二叉樹 + 鍊表)的方式,管理內存池;利用 byte[] 的復用,來減少 gc 的壓力;netty 還是用了動態統計內存字節數(上一次收取,作為下一次分配的 hint)來減少因為緩衝區分配不足導致的 copy;第四,功能豐富度:

包括了空閒連接監測(ping-ping & ping-pong 模式的支持)、流量塑形等等;

最後,是編程模型,三個要素:

EventLoop、ChannelPipeline、ChannelHandler、三者共同實現了 Netty 的異步化和基於回調的編程模型;

作者如是說:

在4年多裡,很多讀者及Netty學習者向我諮詢Netty相關的問題,這些問題加起來多達上千個,通過對問題做匯總和分析,可以歸納為如下幾類:

Netty初學者,想了解學習Netty需要儲備哪些技能,掌握哪些知識點,有什麼學習技巧可以更快地掌握Netty。《Netty 權威指南》的讀者,學習完理論知識後,想在實際項目中使用,但是真正跟具體項目結合在一起解決實際問題時,又感覺比較棘手,不知道自己使用的方式是否是最優的,希望能夠多學一些案例實踐方面的知識,以便更好地在業務中使用Netty。在實際項目中遇到了問題的工程師,由於對Netty底層細節掌握得不紮實,無法有效地定位並解決問題。Netty的一個特點就是入門相對容易,但是真正掌握並精通是非常困難的,原因有如下幾個:

涉及的知識面比較廣。Netty作為一個高性能的NIO通信框架,涉及的知識點包括網絡通信、多線程編程、序列化和反序列化、異步和同步、SSL/TLS安全、內存池、HTTP等各種協議棧,這些知識點在Java 語言中本身就是難點和重點,如果對這些基礎知識掌握不紮實,是很難真正掌握好Netty的。調試比較困難。因為大量使用異步編程接口,以及消息處理過程中的各種線程切換,相比傳統同步代碼,Netty 代碼調試難度比較大。類繼承層次比較深,有些代碼很晦澀(例如內存池)。對於初學者而言,通過閱讀代碼來掌握Netty的難度還是很大的。代碼規模龐大。目前,Netty 的代碼規模已經非常龐大,特別是協議棧部分,提供了對HTTP/2、MQTT. WebSocket等各種協議的支持,相關代碼非常多。如果學習方式不當,抓不住重點,則全量閱讀Netty源碼,既耗時又很難吃透,很容易半途而廢。資料零散,缺乏與實踐相關的案例。網上Netty的各種資料非常多,但是都以理論講解為主,Netty 在各行業中的應用、問題定位技巧及案例實踐方面的資料很少,缺乏系統性的實踐總結,是Netty學習的一大痛點。寫作初衷:

在過去的幾年中,我利用業餘時間儘量幫大家答疑解惑,但實際上一個人很難回答所有讀者的問題,有些問題需要業務描述、故障場景、日誌,甚至要看源碼,而且需要反覆多次溝通來弄清楚問題,對於個人而言,時間和精力都很難得到保證。

於是我對手頭大家諮詢的問題做了歸類分析,結合我們自己的業務和平臺多年來在Netty實踐中積累的經驗,寫作了本書。本書以問題案例做牽引,通過對案例進行剖析,講解問題背後的原理,並結合Netty源碼分析,讓讀者能夠真正掌握Netty,在實際工作中少犯錯。在案例的分析過程中,還穿插講解了Netty 的問題定位思路、方法、技巧,以及解決問題使用的相關工具,「授人以魚不如授人以漁」,只有掌握了這些才能在項目中更放心地使用Netty。

內容特點:

書中的案例涵蓋了Netty 絕大多數常用的功能,以及容易犯錯的地方,具有通用性和普遍性。學習這些案例,對於在實際業務工作中用好Netty具有很大的幫助和啟發作用。另外,在講解Netty 框架本身的同時,也會穿插一些背景知識介紹,例如Java信號量和優雅停機機制、Java的NIO類庫、HTTP協議棧等。知識都是相互關聯的,很難在基礎知識不紮實的情況下掌握更高階的知識。

書籍目錄:

需要完整PDF版的朋友關注小編後私信「666」免費獲取

這份完整PDF版小編已經整理好了,需要的的朋友關注小編後私信「666」免費獲取

相關焦點

  • 20 年架構老兵:進階架構師要搞懂的 12 個實戰案例
    在這裡,我要給你推薦一位高手,前 1 號店的首席架構師王慶友。他將自己在實際項目的總結成了幾十講的內容,不僅會將理論系統性地講透徹,同時還提供大量接地氣的案例讓你有機會實戰,能夠知行合一地學習架構。這些內容濃縮在「架構實戰案例解析」專欄中,讓你能夠透過現象看本質,對架構的認知快速到位,而不是架構知識的搬運工。
  • 論架構師的自我修養
    或者說,在一個團隊中,實際的最終決策者,就是事實上的架構師。無論他被賦予什麼樣的頭銜。在一個團隊中,我們總能找到這樣的角色(無論他做得是不是稱職),而一個優秀的架構師,就是通常能夠做出「較多」正確決策的人。架構師的工作是什麼?
  • 華為雲@ArchSummit2019:新計算架構,雲原生時代IoT 架構設計與Dev...
    華為雲作為領先的雲服務提供商受邀參加,華為雲十多位技術大咖站臺,通過1個主Keynote演講,1個解決方案專場,3個Session演講,以及展區的精彩互動,為千餘名技術管理者、CTO、架構師帶來華為雲最先進的技術架構分享和最具價值的應用實踐。
  • 6年拉力經驗,學了P8架構師的7+1+1落地項目,跳槽阿里年薪40W+
    阿里P8級架構師核心理論落地篇再造淘寶,貫穿全系,阿里團隊代碼落地,詳細每個版本迭代,拒絕2-3個月PPT架構師再造淘寶之咚寶-技術支撐-完整搭建DevOps再造淘寶之咚寶-統一規則-代碼規範落地解析>解讀Nginx解讀Nginx原生版本網際網路高級應用二次開發阿里P8級架構師第七篇:幹億流量高並發高可用分布式系統之核心服務設計篇分布式架構之網關層設計與落地詳解
  • 架構師的工作都幹些什麼?!想做架構師必看!
    先給本文中架構師做個定義:第一,能力上達到(似乎是廢話),第二,公司肯承認,不僅能給架構師的頭銜,更能按架構師的標準發工資。對於程式設計師來說,架構師是職業發展的一道坎,如果跨過去了,後面就前途無量了,否則可能一直得做著代碼coding的事情。本文將從「如何升級」和「平時工作內容」兩方面,說下我對架構師的認識。
  • AS全球架構師帶你迎接科技拐點,「架構」新時代
    2019年7月12日,千萬IT人期待已久的「ArchSummit全球架構師峰會(深圳站)2019」火熱開啟。一直以來,InfoQ享有全球較高的技術領域影響力,此次Archsummit全球架構師峰會也正是由極客邦科技infoQ中國舉辦。
  • 華為助推,廣西欽州市首批基於鯤鵬架構的應用系統上線
    欽州華為鯤鵬雲、全國首個華為鯤鵬警務雲,以及自貿區企業財政扶持兌現智慧服務平臺、欽州市區塊鏈物電同源電子印章服務平臺、雲谷商旅線上雲平臺、企業開辦一網通辦綜合業務平臺、欽州市數據中臺等欽州市首批基於鯤鵬架構的應用系統上線。據了解,為加快數字廣西和中國—東協信息港建設,廣西壯族自治區人民政府與華為攜手打造鯤鵬產業生態圈。
  • 七個獲獎案例,揭曉華為的智慧城市方法論|案例分析
    用國內時髦的話說,就是讓人民有幸福感、認同感、獲得感。在這種思路的深遠影響下,全球智慧城市峰會逐漸演變為智慧城市領域的標杆,於巴塞隆納舉辦的第九屆全球智慧城市博覽會上,華為的多個客戶案例獲得大獎和入圍獎,合乎新型智慧城市的發展邏輯。七個獲獎城市案例理想的智慧城市長什麼樣?
  • HDC | 技術論壇:華為應用市場快應用2.0來了,助力開發者應用全場景...
    華為應用市場平臺產品負責人提出願景:「隨著5G的全面部署,AI技術的發展,更多的設備將連接到網絡中,由此衍生出的大量細分場景和市場機遇,亟待我們與開發者、合作夥伴、消費者共同去豐富和想像,讓物理世界更便捷、讓數字世界更智能。華為應用市場AppGallery Connect希望與廣大開發者共同打造全場景智慧化生態,為用戶帶來更多的創新產品。成就創新,編寫未來,共贏新時代。」
  • 華為正式發布了Datacom-Carrier V1.0認證架構
    > 11月27日 北京HCIE之夜技術論壇   在剛剛結束的首屆運營商領域 HCIE之夜技術論壇上 我們正式發布了 Datacom-Carrier V1.0認證架構
  • 案例系列 | 基於華為應用市場AppGallery Connect服務的實戰解析
    導語:近年來,隨著小程序、快應用的崛起,移動應用的增長成為熱點話題。移動網際網路的下半場已經不能依靠簡單粗暴的紅利,更需要生態、技術和服務。本文結合真實案例,解析華為應用市場AppGallery Connect服務如何助力移動應用的開發和運營。
  • 要做年薪100萬的架構師,必會哪些知識點,看這篇就行了
    分布式、高並發等架構設計領域是否有自己的獨到見解等。網際網路技術日新月異,對於很多最新的搜索技術、消息隊列、分布式集群等方面又有什麼樣的特點。都要有一個清晰的把握度。自己讀過多少源碼。netty粘包分包現象全解析之如何避免socket攻擊,並發編程,線程池源碼分析,大型系統經驗,大型網站數據瓶頸之資料庫分庫分表實戰經驗,電商秒殺系統,高並發如何避免超賣,高性能mysql讀寫分離架構設計能力,網際網路企業級別監控系統之sql語句監控,高性能bio和nio區別這些你是否真正精通?
  • 從質量的視角思考架構師的工作
    請教猛哥,他告訴我,就把你對質量的知識遷移到質量運營就好了,當時不得其解。後來一次和周老師討論這個問題,他說你就別管架構師這高深的名詞,就從你擅長的角度思考這個問題,作為一個質量負責人,你需要關注產品的那些方面?我很快的告訴了他以下六個詞。
  • 架構師如何借鑑他人經驗快速成長? 2018GIAC上海站日程上線!
    《JVM性能案例假笨說》寒泉子(你假笨) PerfMa CEO《2018-Go語言將要走向何方》柴樹杉 青雲QingCloud 應用平臺研發工程師《C#在區塊鏈與IoT的應用》施懿民 上海知平信息技術有限公司 創始人區塊鏈 專題《區塊鏈上穩定幣模式概覽》潘超 MakerDAO 經濟研究員《用了密碼的區塊鏈就一定安全麼
  • 什麼是架構師?有何作用,成為一名架構師需要具備怎樣的能力?
    在比爾· 蓋茨的眾多稱謂中,據說他更偏愛「首席軟體架構師」。同樣,在網易創始人丁磊名字前,也有「首席架構師」這樣的稱謂。由此可見,對於企業來說,架構師就是靈魂的創造者。所以架構師的影響真的是不一般的,而且不僅僅如此。
  • 在首席架構師眼裡,架構的本質是…… - OSCHINA - 中文開源技術...
    舉個例子,在 Web 1.0 時代,一個 ASP 或 JSP 頁面裡,HTML 和腳本代碼混在一起,此時腳本代碼越多,系統越混亂(即熵增加),最終連開發者自己都無法理解。此時就需要對系統重新架構,辦法是引入 view helper 模式,分離 HTML 和腳本,HTML 成為 view,腳本成為幫助類。然後再簡單整合在一起。
  • 2017年系統架構師案例分析的試題解析,及精心總結應試技巧
    案例分析題考試,是系統架構師考試的必做題,一般是11月第一周的周六下午的第一場考試,滿分75分,是三場考試中最好複習,最好拿分的一場考試!(可測試)在對系統需求,質量屬性描述和架構特性進行分析的基礎上,系統的架構師給出了三個候選的架構設計方案,公司目前正在組織系統開發的相關人員對系統架構進行評估。【問題1】 (12 分)在架構評估過程中,質量屬性效用樹 (utility tree) 是對系統質量屬性進行識別和優先級排序的重要工具。
  • 低調入局,華為的區塊鏈不止BCS丨區塊鏈企業案例研究
    區塊鏈服務BCS產品架構包括基礎設施層、區塊鏈平臺、業務應用層和安全管理四個方面。基礎設施層是創建區塊鏈網絡需要使用的底層資源,包括節點計算資源、存儲資源等,用於網絡中數據計算及存儲。安全管理由華為雲平臺安全體系、Hyperledger Fabric框架安全及創新的加密算法組成,為區塊鏈節點、帳本、智能合約以及上層應用提供安全保障。對於區塊鏈的具體應用場景,華為主要關注數據場景應用以及IOT、電信、金融等三個行業應用。
  • 軟體架構設計:軟體質量屬性、架構風格的案例
    【案例描述】某軟體公司為某品牌手機廠商開發一套手機應用程式集成開發環境,以提高開發手機應用程式的質量和效率。在項目之初,公司的系統分析師對該集成開發環境的需求進行了調研和分析,具體描述如下:a.需要同時支持該廠商自行定義的應用程式語言的編輯、界面可視化設計、編譯、調試等模塊,這些模塊產生的模型或數據格式差異較大,集成環境應提供數據集成能力。集成開發環境還要支持以適配方式集成公司現有的應用模擬器工具。
  • TUP第19期綜述:從12306看海量並發網站架構(含PPT下載)
    [CSDN.NET 付江/文] 2月18日CSDN和《程式設計師》雜誌舉辦了CSDN TUP技術沙龍第19期:大數據系列研討會之「從12306談起」。本次活動邀請到了以下嘉賓,請他們分享對大數據處理和高並發網際網路架構設計的理解。