zhizhesoft

  • 首页
Netty
Netty

Netty学习笔记(三)- Reactor模型

在学习 Netty 的 EventLoop 线程模型之前,需要先了解 Java 的 Reactor 模式。 一、Reactor 模型简介   在网络编程过程中,服务器端最原始的方式就是通过一个循环来不断的监听端口是否有新的 socket 链接,如果有就直接处理,比如读取 socket 输入,写入输出等等,完成之后再开始下一次监听。这种方式有一个最大的问题,当前请求没有处理完之前,下一个请求只能阻塞着,直到当前请求处理完成,服务器吞吐量低。在并发量大的情况下,效率很低。   自然的,我们会想到使用线程来处理。当有新的…

2022年3月3日 0条评论 18点热度 0人点赞 risingsun 阅读全文
Netty

Netty 中队列的使用

任务队列中的Task有3种典型使用场景 用户程序自定义的普通任务 此前代码: 参考https://www.cnblogs.com/ronnieyuan/p/12016712.html NettyServerHandler代码有改动: package com.ronnie.netty.sample; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.Channel; import io.ne…

2022年3月2日 0条评论 18点热度 0人点赞 risingsun 阅读全文
Netty

Netty 异步模型

简介 Netty中的 I/O 操作是异步的, 包括 Bind、Write、Connect 等操作会简单的返回一个ChannelFuture。 调用者不能立刻获得结果, 而是通过Future-Listener 机制, 用户可以方便的主动获取或者通过通知机制获得IO操作结果。 Netty的异步模型是建立在future和callback之上的。callback就是回调。 Future的核心思想是: 假设一个方法func(), 其计算过程可能很耗时, 等待func()返回不合适。那么就可以在调用func()的时候, 立马返…

2022年3月2日 0条评论 25点热度 0人点赞 risingsun 阅读全文
Netty

线程模型

目前存在的线程模型 传统阻塞I/O服务模型 工作图 黄色框: 对象 蓝色框: 线程 白色框: 方法(API) 模型特点 采用阻塞IO模式获取输入的数据 每个连接都需要独立的线程完成数据的输入, 业务处理, 数据返回。 问题分析 当并发数很大, 就会创建大量的线程, 占用很大系统资源 连接创建后, 如果当前线程暂时没有数据可读, 该线程会阻塞在read操作, 造成线程资源浪费 Reactor模式 针对传统阻塞I/O服务模型的两个缺点, 提出了解决方案: 基于 I/O 复用模型: 多个连接共用一个阻塞对象, 应用程序只…

2022年3月2日 0条评论 0点热度 0人点赞 risingsun 阅读全文
Netty

Netty 模型

Demo代码 使用Maven的话请在pom.xml中注入netty依赖 <!-- https://mvnrepository.com/artifact/io.netty/netty-all --> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.43.Final</version> </…

2022年3月2日 0条评论 21点热度 0人点赞 risingsun 阅读全文
Java

springboot整合netty(二)

目录 前言 正文 代码 1. 新建一个springboot项目,在pom文件中添加netty依赖: 2.新建netty服务 3.netty调用所需的服务类 4 springboot启动类 5.测试 我在整合过程中遇到的问题 总结 前言 上一篇讲了netty的一个入门的demo;项目上我也把数据处理做好了,就要开始存数据库了;我用的mybatis框架,如果单独使用还是觉得比较麻烦,所以就用了springboot+mybatis+netty;本篇主要讲netty与springboot的整合,以及我在这个过程中遇到的问题…

2022年2月24日 0条评论 0点热度 0人点赞 risingsun 阅读全文
Java

netty入门demo(一)

目录 前言 正文 代码部分 服务端 1. DiscardServer类,netty的服务端 2. ChildChannelHandler类: 3. DiscardServerHandler类 客服端 1.TimeClient类 2.TimeClientHandler 类 测试结果一: 解决粘包,拆包的问题 测试结果 总结 前言 最近做一个项目: 大概需求: 多个温度传感器不断向java服务发送温度数据,该传感器采用socket发送数据;该数据以$符号开头和结尾,最后将处理的数据存入数据库; 我想到的处理方式:采用n…

2022年2月24日 0条评论 38点热度 0人点赞 risingsun 阅读全文
Netty

夯实基础:彻底搞清楚Cookie 和 Session 关系和区别(转)

原文地址:http://www.sohu.com/a/281228178_120047080 网络请求中的cookie与set-Cookie的交互模式和作用:https://my.oschina.net/ososchina/blog/339918

2022年2月22日 0条评论 17点热度 0人点赞 risingsun 阅读全文
Java

Netty核心之ByteBuf结构-netty学习笔记(4)-20210729

一、ByteBuf类的结构 ByteBuf类继承关系图如下:       ReferenceCounted:对象引用计数器,初始化ReferenceCounted对象时,引用数量refCnt为1,调用retain()可增加refCnt,release()用于减少refCnt。refCnt为1时,说明对象实际不可达,release()方法将立即调用deallocate()释放对象。如果refCnt为0,说明对象被错误的引用。在AbstractReferenceCountedByteBuf源码分析小节将详细介绍Refe…

2022年2月17日 0条评论 49点热度 0人点赞 risingsun 阅读全文
Java

Netty核心之Channel-netty学习笔记(5)-20210804

1.Channel基本概念和使用 什么是Channel? channel是一个管道,用于连接字节缓冲区Buf和另一端的实体,这个实例可以是Socket,也可以是File, 在Nio网络编程模型中, 服务端和客户端进行IO数据交互(得到彼此推送的信息)的媒介就是Channel。 Channel通过ChannelPipeline中的多个Handler处理器,Channel使用它处理IO数据。 Netty对Jdk原生的ServerSocketChannel进行了封装和增强封装成了NioXXXChannel, 相对于原生的…

2022年2月17日 0条评论 17点热度 0人点赞 risingsun 阅读全文
1…34567…56
Search

COPYRIGHT © 2022 zhizhesoft. ALL RIGHTS RESERVED.