乐趣区

关于开发:分布式-DBLE-网络模块源码解析三

作者:路路

酷爱技术、乐于分享的技术人,目前次要从事数据库相干技术的钻研。

本文起源:原创投稿

* 爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。

前言

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

DBLE 网络模块次要波及类图

咱们先来看下网络模块波及到的次要类图:

DBLE 网络模块波及到的次要类图如上图所示,它们的次要性能总结如下:

  1. NIOAcceptor:负责承受客户端连贯申请;
  2. NIOReactorPool:负责创立及获取 NIOReactor 对象;
  3. NIOReactor:次要通过外部类 RW 来解决连贯的读写事件,外部类 RW 中应用 Selector 实现 IO 多路复用,即可能解决多个连贯的读写事件;
  4. FrontendConnectionFactory:负责创立前端连贯;
  5. FrontendConnection:前端连贯类;
  6. SocketWR:负责单个连贯的读写操作。

简略来讲,就是 NIOAcceptor 负责接管客户端连贯申请,而后创立前端连贯 FrontendConnectionNIOReactor 则负责监听前端连贯的读写事件,如果有读写事件产生,则交给 SocketWR 进行理论网络 IO 数据的读取,读取到数据后续天然就是进行解决了。整个网络 IO 读写流程大略如此。

DBLE 网络模块概括及总结

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

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

本系列文章总共有三篇,一篇原理介绍,一篇源码解析,最初一篇概括总结,通过本系列文章,心愿不光光帮忙大家理解到 DBLE 的网络解决逻辑,更可能帮忙大家理解更个别的网络 IO 常识,后者对大家的工作帮忙必定更大,最初心愿大家可能有所播种。

相干举荐:

分布式 | DBLE 网络模块源码解析(一):网络 IO 基础知识

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

退出移动版