分布式 | DBLE 网络模块源码解析(三) - 技术分享 - 新闻资讯 - 爱可生

分布式 | DBLE 网络模块源码解析(三)

发布时间:2021-02-23 浏览次数:83

关键字:云数据库服务云数据平台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培训


相关推荐

产品试用 产品试用
400-820-6580 免费电话