Netty的基礎架構模型
Netty是高效能的非同步非阻塞NIO框架!
下面先來理解一下兩組關鍵的概念。
同步和非同步
拿方法呼叫來說,同步是指呼叫一個方法能夠在方法結束時立即得到方法的結果,非同步就是方法呼叫時沒有返回結果,由另外的執行緒去做方法中的事情,當前執行緒可以去做其他的事情。非同步呼叫的結果會通過中間狀態改變或者回撥函式等來通知。
拿一個生活的例子來說,同步就好比你去小區附近的一個4S點修車,老闆在幫你修車,你一直在旁邊等老闆修好位置,可能是等1個小時,也有可能是等2天;而非同步就好比你去修車,老闆說修好了給你打電話來取車,你會可以回家等了,老闆通過電話的形式來通知到你。
阻塞和非阻塞
用一個佇列來說,當你需要從佇列中獲取一個元素,如果當前佇列為空,那麼執行緒會一直在當前方法處於等待,執行緒會掛起。非阻塞則不會掛起!側重點在於執行緒是否會掛起。
基礎架構模型
在這個基礎架構模型中,建立了兩個執行緒池,這兩個執行緒池分別是boss執行緒池和worker執行緒池。在網路中,我們知道,一個連線過來,先要建立連線,然後再傳送和接收資訊。伺服器開啟時,boss執行緒池負責註冊ServerSocketChannel到當前selector,事件為OP_ACCEPT連線事件,專門負責客戶端請求的接收連線工作。boss執行緒池對於連線進來的SocketChannel,會交給worker執行緒池處理,worker執行緒池會將這個註冊SocketChannel到selector,事件為OP_READ事件,專門處理訊息的讀取工作。
一般情況下,boss執行緒池中執行緒數量較少,worker執行緒池中執行緒數量較多。
我們可以把這樣一個基礎框架模型比喻成飯店吃飯,一般來說,客戶去飯店吃飯,飯店有門口處的服務員接待客戶到飯桌上,把點餐、倒水、上菜等工作交給大廳服務員。門口服務員接待了客戶到飯桌上,就繼續回到門口接待下一個要來吃飯的客戶。而大廳服務員不可能是每一桌分配一個服務員,因為這樣比較浪費,而且並不是時時刻刻每一桌都會有事情叫服務員幫忙,所以一個大廳服務員可以服務多個飯桌的客戶,只要客戶叫到,服務員就來幫忙。這裡類似於selector的作用。
相關文章
- 一文理解Netty模型架構Netty模型架構
- 微服務架構設計基礎之立方體模型微服務架構模型
- MySQL基礎架構MySql架構
- Oracle基礎構架Oracle
- MySQL 基礎架構MySql架構
- IT架構的基礎實施架構
- 架構設計之一——基礎架構架構
- redis哨兵架構基礎Redis架構
- MySQL基礎架構分析MySql架構
- 探索ABP基礎架構架構
- MySQL之基礎架構MySql架構
- 搭建基礎架構-Page架構
- Oracle架構的基礎知識Oracle架構
- 基於sanic的微服務基礎架構微服務架構
- netty系列之:netty架構概述Netty架構
- Spring Cloud雲架構-Restful 基礎架構SpringCloud架構REST
- 《架構基礎 從需求到架構》讀書架構
- 《大前端 基礎元件》系列 CSS基礎架構前端元件CSS架構
- mysql資料庫的基礎架構MySql資料庫架構
- oracle架構的基礎知識(轉)Oracle架構
- 基礎架構遷雲(一)架構
- 基礎架構遷雲二()架構
- 基礎架構遷雲(三)架構
- 探索ABP基礎架構-下架構
- HotDB 基礎架構詳解架構
- RESTful 架構 基礎講解REST架構
- Mysql實戰:基礎架構MySql架構
- 搭建基礎架構-ResultMsg架構
- ES 架構及基礎 - 1架構
- Angular基礎筆記(架構)Angular筆記架構
- 集團資訊基礎架構架構
- 銀行IT架構變遷史(金融IT基礎架構)架構
- 朱曄的網際網路架構實踐心得S2E7:漫談平臺架構的工作(基礎架構、基礎服務、基礎平臺、基礎中介軟體等等)架構
- 深入Netty邏輯架構,從Reactor執行緒模型開始Netty架構React執行緒模型
- 架構師的Netty 筆記整理架構Netty筆記
- Netty整體架構解析Netty架構
- 基礎架構之百變魔方架構
- MySQL基礎架構和事務MySql架構