mina源码解析之---数据接收处理流程


        如果想通过Mina来实现一个自定义协议的网络应用程序,用户只需要编写自定义协议编解码处理器和业务处理逻辑即可。由于每一个Session关联一个Processor处理线程,多个Session共享有限的Processor线程池,如果Handler中的业务逻辑处理比较耗时,会导致后续请求阻塞等待,严重降低效率,所以,一般会向Acceptor的FilterChain添加一个ExecutorFilter来缓解该问题,典型代码如下:

 

            DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
            // 日志
            LoggingFilter filter = new LoggingFilter();
            chain.addLast("logger", filter);
            // 协议处理
            chain.addLast("codec", new ProtocolCodecFilter(codecFactory));
            // 线程池
            chain.addLast("executor", new ExecutorFilter(Executors.newCachedThreadPool()));

 

当server接收到client发送数据后的处理流程如下:

呵呵,用jude画的序列图,不是很规范。备忘。
 

MINA 2.0.9源码深度解析与实战 Apache MINA是一个用于构建网络应用程序的框架,提供了网络通信、线程管理和事件处理等方面的抽象。它被设计为易于使用,同时保持高效率,适用于多种协议和服务,如HTTP, Telnet, FTP, TCP和UDP等。在MINA框架中,Channel是网络IO中的一个核心抽象概念,它是连接底层网络传输与上层应用逻辑的桥梁。Channel代表一个打开的连接,它能够读取和写入数据,同时Channel也能够控制底层资源的访问和释放。 阅读详情

相关推荐

JTT809协议Java服务端:基于MINA的车载GPS定位数据接收与解析系统

面向交通监管平台开发的JTT809标准兼容服务端,用Java实现,底层依托Apache MINA构建高并发TCP长连接通信能力,专用于稳定接收下级平台(如车载终端、第三方接入平台)上传的实时定位和历史轨迹数据。完整支持JTT809协议核心流程:平台登录鉴权、心跳保活响应、登出处理,以及原始报文格式下的位置消息(0x0200、0x0201等)解析与存储。采用ServiceLoader机制动态加载消息处理器,新增业务类型只需实现SocketMsgHandler接口,不侵入主干逻辑。默认适配未加密明文报文(对接实

b9c0d的博客 207

Mina-01:简单通信实现

1.准备jar包如果是maven工程:<!--MINA start --> <dependency> <groupId>org.apache.mina</groupId> <artifactId>mina-core</artifactId> <version>2.0.2</version&amp

tansuoliming的博客 316

深入解析Mina2.0框架:源码与架构精髓

本文还有配套的精品资源,点击获取 简介:Mina2.0是一个高度可扩展的Java网络应用框架,利用事件驱动和非阻塞I/O提供了一个高效平台来构建高性能网络服务。本文深入分析了Mina2.0的源码,探讨了其核心架构、关键组件、传输层、缓冲与编解码机制、异步I/O模型、事件驱动模型、线程模型、性能优化策略,并提供了对IoFilter链、IoSession、IoHandler等重...

weixin_42513928的博客 1997

Mina框架数据接收

数据接收流程: 接收流程NIOSession再下层就不看了,看看read完数据的流程,主要filter。 读取到数据,就开始传到FilterChain里面了。 fireMessageReceived大概就是开始遍历filter,里面会设置第一个filter(HeadFilter,但是headfilter主要是在发送数据流程里面处理数据发送的filterWrite,都没覆盖messag

wzm112358的专栏 3764

保姆级教程:用torch.profiler给你的vLLM推理做个“全身体检”(附Perfetto可视化分析)

本文提供了一份详细的vLLM推理性能分析教程,通过torch.profiler和Perfetto工具链实现从数据采集到可视化分析的全流程。文章涵盖了环境配置、性能数据采集、trace文件解析以及Perfetto可视化分析,帮助开发者优化大模型推理服务的性能,显著降低计算资源消耗。

weixin_29041767的博客 357

Camera ITS测试

一、手机端设置: 将 CtsVerifier.apk 安装到设备上, 连接上linux主机。 二、主机端设置: 基础:CTS测试运行环境 然后,主机安装python2.7,及numpy/scipy/matplotlib/opencv 栈和 python 成像库。按照下面的命令依次安装: sudo apt­-get install python-­numpy sudo apt-­g...

wangubuntu的专栏 7784

Mina 接收并转发信息

功能: Mina启动一个监听端口,接收来自A机器的请求,然后将请求处理以后发送给B机器,等待B的响应,在获取B的响应以后,处理B的响应,并将处理结果响应给A。涉及到:Mina的拦截器/多线程(必须有)/加解密工厂处理。接收主方法 ,继承 IoHandlerAdapter。发送的主方法继承 IoHandlerAdapter。

kunfd的博客 884

人工智能AI在软件测试和质量效能中的实际应用

人工智能在软件测试中应用,介绍chatGPT在测试中的应用,还有多个AI驱动的测试工具。

lindafang72的博客 1万+

mina 之初体验

由于项目需要,用到了 mina 框架进行 tcp 通讯。我是初次接触 mina,于是从 Hello world 开始学习了 mina 。期间遇到了一个奇怪的发送数据的延迟问题,解决的过程是曲折的,但找出的原因却令我“吐血”(没真的吐……)。不管怎样,还是贴出来一下作反面案例,希望初次学习 mina 的时候能够绕过这个地雷。 hello world 演示很简单,分为两部分,server 和 ...

weixin_30682127的博客 192

FEniCS学习笔记01:centos7下通过conda安装FEniCSx0.7

2023年版本的Fenicsx0.7,官网推荐使用conda命令安装集成好的Python包,因此我们的安装思路是先安装Anaconda,再按照官网步骤安装Fenics。

huahua_xiao的博客 5056

K8s(二十二):k8s集群如何部署一个Spring Boot项目(依赖于MySQL和Redis外部服务)

🔴 K8s(二十二):k8s集群如何部署一个Spring Boot项目(依赖于MySQL和Redis外部服务)

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 2万+

mina框架源码阅读与分析

<br />Mina框架与源码的简单理解<br /> <br />一.Mina架构图:<br />其框架实现如下图所示:(图来自于网上:)<br /><br /><br /> <br />二.Mina 一个请求的主要实现流程:<br />       服务器启动时,构造NioSocketAcceptor,服务器同时也会构造NioProcessor。<br />    client请求->NioSocketAcceptor建立连接,在bind监听端口后,调用startupAcceptor()方法->接收线程A

haier_jiang的专栏 4874

手把手教你学Simulink——基于Simulink的蚁群算法路径规划仿真建模示例

路径规划是机器人导航系统中的核心任务之一,旨在为机器人找到一条安全且高效的路径,使其能够从起点到达目标点,同时避免与障碍物发生碰撞。在开始之前,需要定义工作环境(例如地图),包括起点、终点以及可能存在的障碍物位置。通过本指南,我们介绍了如何基于Simulink结合MATLAB实现蚁群算法的路径规划仿真建模。

MHD0815的博客 221

java mina 源码解析_解析Mina代码三部曲

首先,Mina是什么?能帮我们做什么?我研究一个新技术的时候,首先问的就是这样的问题。我个人的理解就是Mina是一个关注于通讯层的框架,任何需要底层通讯的应用,都可以使用它。更详细准确的介绍,请看官方网站http://mina.apache.org/Mina的优势:1. 用NIO实现,无需太多线程。可以处理的并发量更大。2. 对于应用层来说,编程更方便。好了废话少说,先看个Demo吧publics...

weixin_39697143的博客 235

UNet 改进(27):结合SCSE注意力机制的UNet网络实现

本文介绍了一种结合SCSE注意力机制的改进UNet网络架构。该网络在保持UNet经典编码器-解码器结构基础上,通过在每层添加SCSEBlock模块,融合了通道注意力和空间注意力机制。通道注意力通过全局池化和1×1卷积生成通道权重,空间注意力则产生空间权重图,二者相加增强关键特征响应。该设计具有以下优势:1)保持原始UNet的多尺度特征提取能力;2)通过注意力机制提升对重要区域的关注度;3)计算效率高,仅增加少量参数。测试显示网络能保持输入输出分辨率不变,适用于医学图像分割等像素级预测任务。完整代码实现了5层

2401_82355416的博客 415

网络安全 | 企业网络安全的十大挑战及解决方案

网络安全 | 企业网络安全的十大挑战及解决方案,随着信息技术的飞速发展,企业数字化转型进程不断加速,网络安全问题日益成为企业运营与发展面临的关键挑战。本文深入剖析企业网络安全的十大挑战,包括网络攻击日益复杂、数据泄露风险、内部威胁、物联网安全、云安全、合规性要求、移动办公安全、供应链安全、人才短缺以及安全预算有限等,并针对每个挑战详细阐述相应的解决方案,旨在为企业构建全面、有效的网络安全体系提供指导与参考,助力企业在复杂多变的网络环境中保障自身信息资产安全,实现可持续发展。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 4万+

NIO框架之MINA源码解析(四):粘包与断包处理及编码与解码

1、粘包与段包 指TCP协议中,发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。 造成的可能原因: 发送端需要等缓冲区满才发送出去,造成粘包 接收方不及时接收缓冲区的包,造成多个包接收

星空的专栏 8009

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Mina源码研究

Mina源码研究心得 1.整体结构 Mina官方教程中的总体结构图: IoService是用于执行具体的IO操作(发送&接收数据),如NioTcpServer是IoService的实现类之一,其作用是使用NIO提供的Selector实现TCP的服务端。 IoFilterChain实际上是一个Filter数组,通过IoService.setFilters方法设置所有的Filter。 I

u010077905的专栏 787

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Mina框架总结

Mina:一个简洁易用的基于Tcp/IP通信的java框架 Multipurpose Infrastructure for Network Applications 简称mina,是apache 开源组织的一个顶级开源项目。为开发高性能和高可用性的网络应用程序提供了非常便利的框架。mina主要就是用在网络通信方面上。 1.Mina 框架源码解析-NioSocketAcceptor启

Jerry's Home 1039

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

NIO框架之MINA源码解析(二):mina核心引擎

MINA的底层还是利用了jdk提供了nio功能,mina只是对nio进行封装,包括MINA用的线程池都是jdk直接提供的。MINA的server端主要有accept、processor、session三部分组成的。其中accept主要负责在指定的端口监听,若有新连接则建立一个新的session;processor则负责处理session对应的发送数据和接收数据并调用上层处理;session则缓存当

星空的专栏 7604

读mina框架源码

多好的文档也不如源码来的直接。如果自己的程序对于某种技术过于依赖,有时候仅看那么几页的文档,总是感觉放心不下。还是看看源码,多多理解内部的实现机制为好。一  读源码时,首先要弄清楚代码所涉及到的重要模型及其之间的关系,从整体架构方面理解其组成。1.对于IOService的实现NioSocketConnector和NioSocketAcceptor来说,都持有selector

小毅的书屋 1383

Mina源码分析——IoService

这两天看了下Mina和Netty的源码,想比较来说Mina的结构简洁易懂。Mina和Netty出自同一人,而Netty是作者对Mina的重构版,改进了很多。如果学习网络编程的话,个人建议从Mina开始,学完Mina后再看Netty,学习曲线会变得很平滑;同时还能深刻理解到作者改进点。    先看下Mina的结构图,如果之前做过java的web开发,熟悉servlet规范,看到这个结构图,会觉

coderdesion 516

MINA源码分析1-服务端启动和客户端调用

最近由于需要使用MINA框架进行项目开发,所以研究了

zxbcome的专栏 1679

(二)Mina源码解析之IoService

在mina中,IoService提供基础的I/O服务、管理IoSession,它是Mina框架中最重要的一部分,大部分基础的I/O操作都是在IoService的实现类中被处理的 IoService有如下几个功能: 1、管理sessions:创建和删除session,空闲检测 2、管理过滤器链:管理过滤器链 3、调用Handler:当有新消息到来时调用Handler 4、统计管理:

Mr孔先森 3845

java mina 用http协议_使用mina解析http协议的使用

在使用mina的过程中,我们通常会自定义各种报文,以使用于自己的业务。今天就为大家带来一款类似http协议的解码过程。mina有自带的解析http数据包的解码类。可以使用maven配置一下内容获取源码:org.apache.minamina-http3.0.0-M2或者下载mina的源码包,查看org.apache.mina.http.HttpServerDecoder类。下面为自己写的解析方法:...

weixin_30299099的博客 323
上一篇: 分布式主键生成策略
scriptguy
博客等级 码龄18年 8粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值