熱愛技術、樂於分享的技術人,目前主要從事資料庫相關技術的研究。
在前兩篇文章中,主要講了網路 io 的基礎知識,以及 dble 網路模組的原始碼分析,本篇作為 dble 網路模組原始碼解析的第三篇,也是最後一篇,主要對 dble 網路模組知識作個簡單概括及總結。
我們先來看下網路模組涉及到的主要類圖:
dble 網路模組涉及到的主要類圖如上圖所示,它們的主要功能總結如下:
nioacceptor
:負責接受客戶端連線請求;
nioreactorpool
:負責建立及獲取nioreactor
物件;
nioreactor
:主要通過內部類rw
來處理連線的讀寫事件,內部類rw
中使用selector
實現 io 多路復用,即能夠處理多個連線的讀寫事件;
frontendconnectionfactory
:負責建立前端連線;
frontendconnection
:前端連線類;
socketwr
:負責單個連線的讀寫操作。
簡單來講,就是nioacceptor
負責接收客戶端連線請求,然後建立前端連線frontendconnection
,nioreactor
則負責監聽前端連線的讀寫事件,如果有讀寫事件發生,則交給socketwr
進行實際網路 io 資料的讀取,讀取到資料後續自然就是進行處理了。整個網路 io 讀寫流程大概如此。
對於中介軟體來講,網路 io 處理既是關鍵點,同時也是難點,高效能網路 io 處理遠比想象中的難。
dble 的網路 io 模組是通過原生 jdk 純手寫的,拋開使用網路 io 框架,更能夠讓我們看到網路 io 處理的真實的、底層的過程。當然並不是說網路 io 框架不好,了解了網路 io 的底層原理,再看任何網路 io 框架,你都能知其所以然,這比你單純的會用框架,肯定是不一樣的。
本系列文章總共有三篇,一篇原理介紹,一篇原始碼解析,最後一篇概括總結,通過本系列文章,希望不光光幫助大家了解到 dble 的網路處理邏輯,更能夠幫助大家了解更一般的網路 io 知識,後者對大家的工作幫助肯定更大,最後希望大家能夠有所收穫。
redis分布式鎖原始碼
public class distributelockbyredis implements distributelock public int lock string key,string uniqueid,long expiretime,boolean isthreadblocking,long ...
分布式排程平台XXL JOB原始碼分析 排程中心
上圖是我們要進行原始碼分析的2.1版本的整體架構圖。其分為兩大塊,排程中心和執行器,本文先分析排程中心,也就是xxl job admin這個包的 配置類xxljobadminconfig,裡面維護了一些排程中心端的配置資料。xxljobscheduler這個元件實現了initializingbean...
分布式網路架構
mysql中介軟體 atlas是由 qihoo 360,web平台部基礎架構團隊開發維護的乙個基於mysql協議的資料中間層專案。它是在mysql proxy 0.8.2版本的基礎上,對其進行了優化,增加了一些新的功能特性。360內部使用atlas執行的mysql業務,每天承載的讀寫請求數達幾十億條...