写在前面 本篇开始之前,我们先回顾一下上篇的内容:对话写 Netty 代码的同学,你真的懂 Netty 了吗?(一) 我们在第一篇中带大家简单了解了一下 Netty 源码中的核心类文件。 大类包含: 门面 - 引导器 以 AbstractBootstrap 为代表 传输管道 以 ChannelPipeline 为代表 Netty 自定义线程池 以 EventLoop 为代表 通道 以 AbstractChannel 为代表 上下文 以 AbstractChannelHandlerContext 为代表 Netty …

2021年4月18日 0条评论 9点热度 阅读全文

1.声明 当前内容主要为记录使用Netty在传递对象的时候的序列化问题,一个非常奇怪的序列化问题(demo来源前面的demo) 其主要netty的pom版本 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.42.Final</version> </dependency> 2.问题描述 传递对象…

2021年4月17日 0条评论 9点热度 阅读全文

1.声明 当前内容主要为本人学习和测试netty这个nio框架之用 2.问题1 本人处理传递的数据的时候出现的错误(发送消息的时候) 四月 11, 2021 5:15:59 下午 io.netty.channel.DefaultChannelPipeline onUnhandledInboundException 警告: An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means…

2021年4月11日 0条评论 13点热度 阅读全文

为了加深对netty的学习理解,我动手搭建了一个简单版的im系统,希望对大家的学习有一定帮助吧。目前代码托管在码云:https://gitee.com/corecmd_chief/open-source-tcim open-source-tcim 介绍 open-source-tcim,是基于netty的客户端+服务器简单即时通讯系统。服务端基于springboot,前端采用android开发;后端是简单的微服务架构,采用consul作为服务注册中心,服务端和网关服务需要注册到注册中心;前端对服务端的http请求都…

2021年3月30日 0条评论 31点热度 阅读全文

netty实现简单的rpc,支持服务集群 前言 简介 环境准备 Netty 处理器链设计 消费者RPC代理工厂设计 netty rpc消费者核心设计 netty rpc生产者核心设计 服务注册、发现以集群 演示Demo 尾言 相关链接 前言 简介 最近了解了下netty相关知识,简单实现一个基于netty的rpc demo,参考了几篇文章,其中这篇清幽之地大佬的RPC基本原理以及如何用Netty来实现RPC 非常不错 ,给我不少启迪,关于rpc的相关知识可以阅读该文,本文主要对如何阐述如何使用netty实现rpc。…

2021年3月30日 0条评论 28点热度 阅读全文

学习B站的视频的笔记 Netty线程模型是基于主从Reactor多线程模式做了一定的改进得来的 ●Netty抽象出两组线程池,BossGroup专门负责接收客户端的连接,WorkerGroup专门负责网络的读写 ●BossGroup和WorkerGroup类型的本质都是NioEventLoopGroup类型。 ●NioEventLoopGroup相当于一个线程管理器(类似于ExecutorServevice),它下面维护很多个NioEventLoop线程。 ●在初始化这两个Group线程组时,默认会在每个Group…

2021年3月21日 0条评论 23点热度 阅读全文

1、BIO、NIO和AIO模型的区别 2、同步与异步、阻塞与非阻塞的区别 3、select、poll、epoll的机制及其区别 4、Netty底层操作与Java NIO操作对应关系如何 5、Netty的线程模型是怎样的,与Redis线程模型有区别吗 6、说说Reactor响应式编程是怎么回事 7、Netty的粘包/拆包是怎么处理的,有哪些实现 8、Netty的protobuf编解码机制是怎样的 9、Netty如何实现断线自动重连 10、Netty如何支持单机百万连接 11、说下Netty零拷贝的原理 12、说下Ne…

2021年3月19日 0条评论 27点热度 阅读全文

以 Netty 4.1.42为基准版本,将分别从Netty 整体结构、逻辑架构、源码结构三个方面对其进行介绍。 一、整体结构 Netty是一个设计非常用心的网络基础组件,Netty官网给出了有关 Netty 的整体功能模块结构,却没有其他更多的解释。从图中,我们可以清晰地看出 Netty结构一共分为三个模块: 1、Core 核心层 Core核心层是 Netty 最精华的内容,它提供了底层网络通信的通用抽象和实现,包括可扩展的事件模型、通用的通信 API、支持零拷贝的 ByteBuf 等。 2、Protocol Su…

2021年3月17日 0条评论 18点热度 阅读全文

NIO 三大核心原理 每个channel 都会对应一个Buffer Selector 对应一个线程, 一个线程对应多个channel(连接) 该图反应了有三个channel 注册到 该selector //程序 程序切换到哪个channel 是有事件决定的, Event就是一个重要的概念 Selector 会根据不同的事件,在各个通道上切换 Buffer 就是一个内存块 , 底层是有一个数组 数据的读取写入是通过Buffer, 这个和BIO , BIO 中要么是输入流,或者是输出流, 不能双向,但是NIO的Buff…

2021年3月5日 0条评论 27点热度 阅读全文

Netty对象池 Recycler 对于为什么要使用对象池,肯定是提高性能啊! 对象的创建,回收,再创建;很耗损jvm性能的,所以就有了对象池的概念,Netty通过Recycler管理对象的创建与回收,而在对象回收时,也不是真正的把对象从堆内存中移除了,而是在内存中缓存了,那具体什么时候回收呢?对象有一个WeakReference,GC回收就与弱引用有关了。具体请查看:强引用、软引用、弱引用、虚引用他们之间的区别了。 一、对象池组件介绍 1、Recycler Recycler是对所有组件的一个管理,通过源码可以看出…

2021年3月5日 0条评论 31点热度 阅读全文