
Netty入门
文章平均质量分 90
Netty入门
钱多多_qdd
请你爱自己,也爱生活
展开
-
Java之IO,BIO,NIO,AIO知多少?【请按正文网址阅读】
https://blog.youkuaiyun.com/huangwenyi1010/article/details/75577091转载 2021-02-04 23:27:05 · 129 阅读 · 0 评论 -
Reactor模型讲解
一、什么是Reactor模型反应器设计模式(Reactor pattern)是一种为处理并发服务请求,并将请求提交到一个或者多个服务处理程序的事件设计模式。当客户端请求抵达后,服务处理程序使用多路分配策略,由一个非阻塞的线程来接收所有的请求,然后派发这些请求至相关的工作线程进行处理。关于reactor 是什么,我们先从wiki上看下:The reactor design pattern is an event handling pattern for handling serv...原创 2021-09-14 02:05:14 · 3513 阅读 · 0 评论 -
Java核心(五)深入理解BIO、NIO、AIO
导读:本文你将获取到:同/异步 + 阻/非阻塞的性能区别;BIO、NIO、AIO 的区别;理解和实现 NIO 操作 Socket 时的多路复用;同时掌握 IO 最底层最核心的操作技巧。BIO、NIO、AIO 的区别是什么?同/异步、阻/非阻塞的区别是什么?文件读写最优雅的实现方式是什么?NIO 如何实现多路复用功能?带着以上这几个问题,让我们一起进入IO的世界吧。在开始之前,我们先来思考一个问题:我们经常所说的“IO”的全称到底是什么?可能很多人看到这个问题和我一样一脸懵逼,转载 2021-02-04 23:20:27 · 233 阅读 · 0 评论 -
SpringCloud之Ribbon源码分析(一)
一、Ribbon的作用Ribbon的作用是负载均衡。使用Ribbon实现负载均衡时,基本用法是注入一个RestTemplate,并使用@LoadBalanced注解标注RestTemplate,从而使RestTemplate具备负载均衡的能力。当Spring容器启动时,使用@LoadBalanced注解修饰的RestTemplate会被添加拦截器,拦截器中使用了LoadBalancerClient处理请求,从而达到负载均衡的目的。那么LoadBalancerClien...原创 2021-08-27 00:58:43 · 473 阅读 · 0 评论 -
Netty之Promise和Future双子星的秘密
一、Future<V>和Promise<V>的关系Netty内部的io.netty.util.concurrent.Future<V> 继承自java.util.concurrent.Future<V>,而Promise<V>是前者的一个特殊实现。二、异步结果Future2.1 Java原生Future<V>Java并发编程包下提供了Future<V>接口。Future在异步编程中表示该异步操做的结果,经转载 2021-05-19 00:26:31 · 489 阅读 · 1 评论 -
Netty之大动脉Pipeline
一、Pipeline总览通过前面的文章,我们对Netty的Pipeline已经有了初步的了解。我们再回顾一下。一个Channel,拥有一个ChannelPipeline,作为一个ChannelHandler的容器。但是一个ChannelHandler,不能直接放进ChannelPipeline中,必须包裹AbstractChannelHandlerContext的上下文环境。在初始化Netty的handler时,需要将Handler加载到Pipeline中。假定加载三个Handler,分别负责解原创 2021-05-13 00:22:14 · 429 阅读 · 2 评论 -
Netty之大名鼎鼎的EventLoop
一、EventLoop与Reactor前面的章节中我们已经知道了,一个Netty 程序启动时,至少要指定一个EventLoopGroup(如果使用到的是NIO,通常是指NioEventLoopGroup),那么,这个NioEventLoopGroup 在Netty 中到底扮演着什么角色呢? 我们知道,Netty是Reactor 模型的一个实现,我们就从Reactor 的线程模型开始。1.1 浅谈Reactor 线程模型Reactor 的线程模型有三种:单线程模型、多线程模型、主从多线程模型。首先转载 2021-05-07 23:04:20 · 251 阅读 · 0 评论 -
我自己对于Netty的疑问
在上一篇文章《揭秘ServerBootstrap神秘面纱(服务端ServerBootstrap)》中我们提出了这些问题,有点还没有解答,这篇文章专门对它们进行解答。服务端openServerSocketChannel()和客户端openSocketChannel()的区别? 服务端newSafe()和客户端newSafe()有什么不一样? 服务端Channel的传入参数是OP_ACCEPT,客户端是OP_READ。 EventLoopGroup和EventLoop之间的关系是什么? 到底什么是多原创 2021-05-05 20:25:04 · 136 阅读 · 0 评论 -
揭秘ServerBootstrap神秘面纱(服务端ServerBootstrap)
一、ServerBootstrap惊鸿一瞥二、NioServerSocketChannel的创建三、服务端Channel(NioServerSocketChannel)的初始化四、ChannelPipeline初始化五、服务端注册到Selector六、bossGroup与workGroup七、服务端Selector事件轮询八、Netty解决JDK空轮询bug九、Netty对Selector中KeySet的优化...原创 2021-05-04 21:39:28 · 2926 阅读 · 3 评论 -
揭开BootStrap的神秘面纱
每日一诗余晖洒下一缕缕碎波潺潺 晚风里灯影柔曼 荡漾着湖水清清倩影婉转 青底白花油纸伞 采一片莲叶清香飘在两岸 长亭和垂柳作伴 暗下来薄雾不散不见远山 一方天地风轻水软水绿天蓝蓝 白鹭一行路辗转 飞过芦苇滩 停在相思畔 听船歌声声慢 长忆相见欢 多少柔情落江南 一曲唱不完 此去几时还 明月照两端 落红时四野尽染你在对岸 留不住彩云易散 雾尽时月影微寒独上远山 两处别离 良宵短——毛不易《水乡》一、客户端BootStrap..原创 2021-04-26 00:33:44 · 1262 阅读 · 0 评论 -
Netty核心组件之Channel的启动(ServerBootstrap的doBind方法)
每日一诗春未老,风细柳斜斜。试上超然台上望,半壕春水一城花。烟雨暗千家。寒食后,酒醒却咨嗟。休对故人思故国,且将新火试新茶。诗酒趁年华。——苏轼《望江南·超然台作》前言本文主要讲的是Netty服务端启动bind()源码。先来参考下之前写过的Netty demo代码:package com.gupaoedu.vip.netty.tomcat.nio;import com.gupaoedu.vip.netty.tomcat.nio.http.GPRequest;import..原创 2021-04-20 23:24:48 · 612 阅读 · 0 评论 -
NIO的API解释
每日一诗庆历四年春,滕子京谪守巴陵郡。越明年,政通人和,百废具兴,乃重修岳阳楼,增其旧制,刻唐贤今人诗赋于其上,属予作文以记之。予观夫巴陵胜状,在洞庭一湖。衔远山,吞长江,浩浩汤汤,横无际涯,朝晖夕阴,气象万千,此则岳阳楼之大观也,前人之述备矣。然则北通巫峡,南极潇湘,迁客骚人,多会于此,览物之情,得无异乎?若夫淫雨霏霏,连月不开,阴风怒号,浊浪排空,日星隐曜,山岳潜形,商旅不行,樯倾楫摧,薄暮冥冥,虎啸猿啼。登斯楼也,则有去国怀乡,忧谗畏讥,满目萧然,感极而悲者矣。至若春和景明,波澜不惊,上下.原创 2021-04-15 22:50:22 · 359 阅读 · 0 评论 -
Netty高性能之道
课程目标转载 2021-04-13 00:10:47 · 257 阅读 · 0 评论 -
基于Netty手写RPC框架
前言课程目标:深刻理解RPC框架设计的基本原理 基于Netty手写mini版本RPC框架原创 2021-04-09 00:24:19 · 357 阅读 · 0 评论 -
基于Netty手写Tomcat
1原创 2021-04-06 01:03:00 · 380 阅读 · 1 评论 -
分布式框架的基石之远程通信协议
前言分布式架构的特点是: 服务的分布性(分布在不同的计算机节点)、以及远程通信实现数据的交换。那么就意味着,原本在一个war包下的:用户、订单、商品、库存等业务模块,按照业务纬度拆分成用户服务、订单服务、商品服务、库存服务等独立的进程,部署在不同的计算机节点上。而拆分之后的服务,必然会涉及到远程通信的需求,比如用户服务,需要查询订单列表,则会调用订单服务的远程接口,获得订单信息。在这个过程中,会涉及到远程通信,所以远程通信的技术是整个分布式架构的一个基础,如果没有远程通信,那么分布式架构也就不存在了原创 2021-04-01 23:59:18 · 223 阅读 · 0 评论