分布式 DBLE 網路模組原始碼解析(三)

2021-10-19 21:15:06 字數 1221 閱讀 9208

熱愛技術、樂於分享的技術人,目前主要從事資料庫相關技術的研究。

在前兩篇文章中,主要講了網路 io 的基礎知識,以及 dble 網路模組的原始碼分析,本篇作為 dble 網路模組原始碼解析的第三篇,也是最後一篇,主要對 dble 網路模組知識作個簡單概括及總結。

我們先來看下網路模組涉及到的主要類圖:

dble 網路模組涉及到的主要類圖如上圖所示,它們的主要功能總結如下:

nioacceptor:負責接受客戶端連線請求;

nioreactorpool:負責建立及獲取nioreactor物件;

nioreactor:主要通過內部類rw來處理連線的讀寫事件,內部類rw中使用selector實現 io 多路復用,即能夠處理多個連線的讀寫事件;

frontendconnectionfactory:負責建立前端連線;

frontendconnection:前端連線類;

socketwr:負責單個連線的讀寫操作。

簡單來講,就是nioacceptor負責接收客戶端連線請求,然後建立前端連線frontendconnectionnioreactor則負責監聽前端連線的讀寫事件,如果有讀寫事件發生,則交給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業務,每天承載的讀寫請求數達幾十億條...