前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式 | DBLE 网络模块源码解析(三)

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

作者头像
爱可生开源社区
发布2021-03-16 10:37:59
3350
发布2021-03-16 10:37:59
举报
文章被收录于专栏:爱可生开源社区

作者:路路

热爱技术、乐于分享的技术人,目前主要从事数据库相关技术的研究。

本文来源:原创投稿

前言

在前两篇文章中,主要讲了网络 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 知识,后者对大家的工作帮助肯定更大,最后希望大家能够有所收获。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱可生开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • DBLE 网络模块主要涉及类图
  • DBLE 网络模块概括及总结
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档