{{ item.name }}
{{ item.name }}

{{ it.name }}

{{ it.text }}

{{ it.name }}

{{ innerIt.name }}

{{ innerIt.text }}

{{news.time}}
{{news.title}}
分布式 | DBLE 网络模块源码解析(三)
2021-02-23发布 930浏览

关键字:云数据库服务云数据平台MySQL DBA培训

前言

在前两篇文章中,主要讲了网络 IO 的基础知识,以及 DBLE 网络模块的源码分析,本篇作为 DBLE 网络模块源码解析的第三篇,也是最后一篇,主要对 DBLE 网络模块知识作个简单概括及总结。


DBLE 网络模块主要涉及类图

我们先来看下网络模块涉及到的主要类图:

640DBLE 网络模块涉及到的主要类图如上图所示,它们的主要功能总结如下:

  1. NIOAcceptor:负责接受客户端连接请求;

  2. NIOReactorPool:负责创建及获取 NIOReactor 对象;

  3. NIOReactor:主要通过内部类 RW 来处理连接的读写事件,内部类 RW 中使用 Selector 实现 IO 多路复用,即能够处理多个连接的读写事件;

  4. FrontendConnectionFactory:负责创建前端连接;

  5. FrontendConnection:前端连接类;

  6. SocketWR:负责单个连接的读写操作。

简单来讲,就是 NIOAcceptor 负责接收客户端连接请求,然后创建前端连接 FrontendConnection,NIOReactor 则负责监听前端连接的读写事件,如果有读写事件发生,则交给 SocketWR 进行实际网络 IO 数据的读取,读取到数据后续自然就是进行处理了。整个网络 IO 读写流程大概如此。


DBLE 网络模块概括及总结

对于中间件来讲,网络 IO 处理既是关键点,同时也是难点,高性能网络 IO 处理远比想象中的难。

DBLE 的网络 IO 模块是通过原生 JDK 纯手写的,抛开使用网络 IO 框架,更能够让我们看到网络 IO 处理的真实的、底层的过程。当然并不是说网络 IO 框架不好,了解了网络 IO 的底层原理,再看任何网络 IO 框架,你都能知其所以然,这比你单纯的会用框架,肯定是不一样的。

本系列文章总共有三篇,一篇原理介绍,一篇源码解析,最后一篇概括总结,通过本系列文章,希望不光光帮助大家了解到 DBLE 的网络处理逻辑,更能够帮助大家了解更一般的网络 IO 知识,后者对大家的工作帮助肯定更大,最后希望大家能够有所收获。


关键字:云数据库服务云数据平台MySQL DBA培训


上一篇
第22期:索引设计(组合索引适用场景)
400-820-6580 13916131869
marketing@actionsky.com
上海市闵行区万源路2138号泓茂中心2号楼
产品详情
关系型数据库
AI数据库
数据库智能管理平台
数据库生态产品
行业案例
金融行业
新零售行业
制造业
通信行业
更多
公司动态
最新新闻
国产化信息
技术分享
关于我们
公司简介
公司分布
国家专利
资质认证
扫码关注公众号
© Copyright 2017, All rights reserved by: 上海爱可生信息技术股份有限公司 沪ICP备12003970号-1 | 法律声明 | 网站地图
沪公网安备 31010402003331号