从零学Netty
文章平均质量分 62
从零学Netty
疯狂的狮子Li
这个作者很懒,什么都没留下…
展开
-
从零学Netty(十二)Netty基于Protostuff(Protocol) 序列化
初探Protostuff的使用最近在学习RPC,看到了一个叫做Protostuff的库,是基于谷歌Protocal Buffer的序列化库,之前了解过Protocol Buffer,对学习了一些资料后,写了个demo,记录下来。什么是Protocol Buffer?Protocol Buffer是谷歌出品的一种数据交换格式,独立于语言和平台,类似于json。Google提供了多种语言的实现:java、c++、go和python。对象序列化城Protocol Buffer之后可读性差,但是相比原创 2020-11-16 18:03:29 · 822 阅读 · 0 评论 -
从零学Netty(十一)Netty实现RPC
简介远程过程调用,简单的理解是一个节点请求另一个节点提供的服务简单理解RPC就是要像调用本地的函数一样去调远程函数原理图:实例demo通用通用接口 用于生产端实现具体业务 与 消费点进行消费/** * 通用接口 * * @author LionLi */public interface HelloService { String hello(String mes);}生产端实现通用接口/** * 接口实现 * * @autho...原创 2020-10-21 17:34:34 · 503 阅读 · 0 评论 -
从零学Netty(十)Netty心跳处理器
简介首先要说一下IdleStateHandler是 netty 提供的处理空闲状态的处理器参数说明:long readerIdleTime : 表示多长时间没有读, 就会发送一个心跳检测包检测是否连接 long writerIdleTime : 表示多长时间没有写, 就会发送一个心跳检测包检测是否连接 long allIdleTime : 表示多长时间没有读写, 就会发送一个心跳检测包检测是否连接当 IdleStateEvent 触发后 , 就会传递给管道 的下一个handler去...原创 2020-10-21 15:57:12 · 642 阅读 · 0 评论 -
从零学Netty(九)Netty实现UDP服务器
简介UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议 UDP协议与TCP协议一样用于处理数据包,在OSI模型中,两者都位于传输层,处于IP协议的上一层 UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的 UDP用来支持那些需要在计算机之间传输数据的网络应用实例demo服务端实现/** * udp服务端 * * @author LionLi */public class Ud原创 2020-10-15 18:01:52 · 13476 阅读 · 8 评论 -
从零学Netty(八)Netty实现WebSocket服务器
简介WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议 WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据 浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输 HTML5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯WebSocket 属性Socket.readyState 只读属性readyState..原创 2020-10-15 15:37:04 · 1184 阅读 · 0 评论 -
从零学Netty(七)Netty实现 多人聊天室
实例demo编写服务端/** * 服务端 * * @author LionLi */public class GroupChatServer { private final int port; public GroupChatServer(int port) { this.port = port; } public void run() throws Exception { // boss组 使用一个线程接收和分发请原创 2020-10-15 14:44:57 · 887 阅读 · 0 评论 -
从零学Netty(六)Netty实现Http服务器
编写HttpServlet规范类Servlet抽象类/** * Servlet * * @author LionLi */public abstract class Servlet { public abstract void doGet(Request request,Response response); public abstract void doPost(Request request,Response response);}Request相关功能.原创 2020-10-13 17:15:49 · 1350 阅读 · 1 评论 -
从零学Netty(五)Netty 组件 与 线程模型(概念)
Netty线程模型Netty 主要基于主从Reactor多线程模型做了一定的改进,其中主从 Reactor 多线程模型有多个 ReactorNetty抽象出两组线程池 BossGroup 专门负责接收客户端的连接,WorkerGroup 专门负责网络的读写 BossGroup 和 WorkerGroup 类型都是 NioEventLoopGroup NioEventLoopGroup 相当于一个事件循环组,这个组中含有多个事件循环,每一个事件循环是 NioEventLoop Nio原创 2020-10-13 17:06:03 · 516 阅读 · 0 评论 -
从零学Netty(四)Reactor模式(含demo)
介绍Reactor模式是一种为处理并发I/O服务请求,并将请求提交到一个或多个服务处理程序的事件设计模式 当客户端请求抵达后,服务处理程序使用多路分配策略,由一个非阻塞的线程来接收所有请求,然后将请求派发到相关的工作线程并进行处理的过程。 和普通函数调用不同的是应用程序不是主动的调用某个API来完成处理,恰恰相反的是Reactor逆置了事件处理流程 应用程序需提供相应的接口,如果有相应的事件发生,Reactor将主动调用应用程序注册的接口 对于高并发系统经常会使用到Reactor模式,用来替代常原创 2020-10-12 18:22:34 · 978 阅读 · 0 评论 -
从零学Netty(三)AIO通信(多人聊天室)
AIO概念异步非阻塞IO,全称AsynchronousI/O,JDK1.7升级了NIO类库,升级后的NIO类库被称为NIO2.0,也就是我们要介绍的AIONIO2.0引入了新的异步通道的概念,并提供了异步文件通道和异步套接字通道的实现。异步通道提供两种方式获取操作结果它不需要通过多路复用器(Selector)对注册的通道进行轮询操作即可实现异步读写,从而简化了NIO的编程模型实例demo服务端代码/** * aio服务端 * * @author LionLi */publ原创 2020-10-10 16:56:15 · 1747 阅读 · 1 评论 -
从零学Netty(二)NIO通信(多人聊天室)
NIO概念非阻塞I/O,全称Non-BlockingIO,是在Jdk1.4之后增加的一套新的操作I/O工具包NIO是为提供I/O吞吐量而专门设计,其卓越的性能甚至可以与C媲美。NIO是通过Reactor模式的事件驱动机制来达到Non blocking的,就是我们将事件注册到Reactor中,当有相应的事件发生时,Reactor便会告知我们有哪些事件发生了,我们再根据具体的事件去做相应的处理。实例demo服务端代码/** * nio服务端 * * @author LionLi原创 2020-10-10 14:14:41 · 642 阅读 · 3 评论 -
从零学Netty(一)BIO通信
BIO概念同步阻塞I/O模式,全称BlockingIO,数据的读取写入必须阻塞在一个线程内等待其完成它是基于流模型实现的,交互的方式是同步、阻塞方式,也就是说在读入输入流或者输出流时,在读写动作完成之前,线程会一直阻塞在那里,它们之间的调用时可靠的线性顺序。它的优点就是代码比较简单、直观;缺点就是 IO 的效率和扩展性很低,容易成为应用性能瓶颈。实例demo服务端代码/** * bio服务端 * * @author LionLi */public class BioSer原创 2020-10-10 11:12:38 · 894 阅读 · 3 评论