netty
文章平均质量分 76
以理论加实战驱动,逐步深入了解netty开发的各个环节,熟练掌握netty框架的设计思想及应用,提升开发者的思维能力
zhufei463738313
这个作者很懒,什么都没留下…
展开
-
netty入门(二十七)用 Netty 实现 DubboRPC
(1)RPC(Remote Procedure Call)远程过程调用,是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。(2)两个或多个应用程序都分布在不同的服务器上,它们之间的调用都像是本地方法调用一样。(3)常用的 RPC 框架有:比较知名的阿里的 Dubbo、google 的 gRPC、GO语言的 rpcx、Apache 的 thrift,Spring 旗下的 Spring Cloud。原创 2023-04-05 17:56:48 · 419 阅读 · 0 评论 -
netty入门(二十六)任务加入异步线程池源码剖析
(1)在 Netty 中做耗时的,不可预料的操作,比如:数据库、网络请求、会严重影响 Netty 对 Socket 的处理速度。(2)而解决方法就是将耗时任务添加到异步线程池中。但就添加线程池这步操作来讲,可以有2中方式,而且这2种方式实现的区别也蛮大的。(3)处理耗时业务的第一种方式 -- handler 中加入线程池(4)处理耗时业务的第二种方式 -- Context 中添加线程池。原创 2023-04-05 11:42:01 · 696 阅读 · 0 评论 -
netty入门(二十五)EventLoop 源码剖析
每次执行execute方法就会向队列中添加任务。当第一次添加时候就启动线程,执行run方法,run方法是EventLoop的核心实现,负责轮询获取事件,处理事件,执行队列中任务其中调用selector的select方法默认阻塞一秒,有定时任务就t+0.5,t是定时任务剩余时间,当执行execute方法时候,也就是添加任务的时候,唤醒selector,防止selector阻塞时间过长当selector返回的时候,会调用processSelectedKeys对selectKey进行处理。原创 2023-04-04 17:06:36 · 358 阅读 · 0 评论 -
netty入门(二十四)Netty心跳机制源码剖析
Netty作为一个网络框架,提供了诸多功能,比如编码解码等,Netty 还提供了非常重要的一个服务 ---- 心跳机制 heartbeat。通过心跳检查对方是否有效,这在 RPC 框架中是必不可少的功能。下面我们分析一下 Netty 内部 心跳服务源码的实现。原创 2023-03-28 12:03:52 · 499 阅读 · 0 评论 -
netty入门(二十三)Netty三大核心组件源码剖析
Netty中的 ChannelPipeline、ChannelHandler 和 ChannelHandlerContext 是非常核心的组件,从源码来分析 Netty 是如何设计这三个核心组件的,并分析是如何创建和协调工作的。原创 2023-03-23 11:41:52 · 533 阅读 · 0 评论 -
netty入门(二十二)Netty接收请求过程源码分析
服务器启动后肯定是要接受客户端请求并返回客户端想要的 信息的,下面源码分析 Netty 在启动之后是如何接受客户端请求的。原创 2023-03-21 09:44:46 · 435 阅读 · 0 评论 -
netty入门(二十一)Netty启动过程源码分析
用源码分析的方式走一下 Netty(服务器)的启动过程,更好的理解 Netty 的整体设计和运行机制。原创 2023-03-15 17:10:39 · 211 阅读 · 0 评论 -
netty入门(二十)TCP粘包拆包原理
1)TCP是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辨出完整的数据包了,因此面向流的通信是无消息保护边界的。原创 2023-03-13 15:57:48 · 157 阅读 · 0 评论 -
netty入门(十九)Netty入站与出站机制
ChannelPipeline 提供了 ChannelHandler 链的容器。以客户端应用程序为例,如果事件的运动方向是从客户端到服务端的,那么我们称这些事件为出站的,即客户端发送服务端的数据会通过 pipeline 中的一系列 ChannelOutboundHandler,并被这些 Handler 处理,反之则称为入站的原创 2023-03-10 17:07:23 · 466 阅读 · 1 评论 -
netty入门(十八)netty编解码器机制
(1)Protobuf 是 Google 发布的开源项目,全称 Google Protocol Buffers,是一种轻便高效的结构化数据存储方式,可以用于数据化数据串行化,或者说序列化。它很适合做数据存储或 RPC(远程过程调用 remote procedure call) 数据交换格式;目前很多公司 http+json -> tcp+protobuf原创 2023-03-09 16:42:25 · 906 阅读 · 0 评论 -
netty入门(十七)WebSocket长连接开发
WebSocket 是一种标准协议,用于在客户端和服务端之间进行双向数据传输。但它跟 HTTP 没什么关系,它是一种基于 TCP 的一种独立实现。原创 2023-03-08 11:44:30 · 633 阅读 · 0 评论 -
netty入门(十六)netty心跳监测机制
在 client 与 server 之间,一定时间内没有数据交互时, 即处于 idle 状态时, 客户端或服务器就会发送一个特殊的数据包给对方, 当接收方收到这个数据报文后, 也立即发送一个特殊的数据报文, 回应发送方, 此即一个 PING-PONG 交互。所以, 当某一端收到心跳消息后, 就知道了对方仍然在线, 这就确保 TCP 连接的有效性。原创 2023-03-07 16:19:43 · 921 阅读 · 0 评论 -
netty入门(十五)Netty应用实例-群聊系统
(1)编写一个 Netty 群聊系统,实现服务器端和客户端之间的数据简单通讯(非阻塞);(2)实现多人群聊;(3)服务器端:可以监测用户上线,离线,并实现消息转发功能;(4)客户端:通过 channel 可以无阻塞发送消息给其它所有用户,同时可以接受其它用户发送的消息(有服务器转发得到)(5)目的:进一步理解 Netty 非阻塞网络编程机制。原创 2023-03-07 15:18:50 · 253 阅读 · 0 评论 -
netty入门(十四)Netty核心组件
Bootstrap 意思是引导,一个Netty应用通常由一个Bootstrap开始,主要作用是配置整个Netty程序,串联各个组件,Netty 中 Bootstrap 类是客户端程序的启动引导类, ServerBootstrap 是服务端启动引导类。原创 2023-03-03 17:33:41 · 136 阅读 · 0 评论 -
netty入门(十三)入门实例- HTTP服务
1. 使用Idea 创建Netty项目;2. Netty 服务器在 6668 端口监听,浏览器发出请求 “http://localhost:6668/”;3. 服务器可以回复消息给客户端"Hello!我是服务器5",并对特定请求资源进行过滤;4. 目的:Netty 可以做 Http服务开发,并且理解Handler实例和客户端及其请求的关系。原创 2023-02-28 14:23:52 · 202 阅读 · 0 评论 -
netty入门(十二)异步模型
1. 异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的组件在完成后,通过状态、通知和回调来通知调用者。2. Netty中的I/O操作是异步的,包括Bind、Write、Connect等操作会简单的返回一个ChannelFuture。3. 调用者并不能立刻获得结果,而是通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。4. Netty的异步模型是建立在 future 和 callback 的之上的。原创 2023-02-28 11:28:40 · 61 阅读 · 0 评论 -
netty入门(十一)任务队列 TaskQueue
任务队列中的Task有3种典型使用场景1. 用户程序自定义的普通任务;2. 用户自定义定时任务;3. 非当前Reactor线程调用Channel的各种方法;原创 2023-02-28 10:28:10 · 189 阅读 · 0 评论 -
netty入门(十)Netty模型
Netty主要基于主从Reactor多线程模型做了一定的改进,其中主从Reactor多线程模型有多个Reactor。原创 2023-02-22 17:27:01 · 216 阅读 · 0 评论 -
netty入门(九)线程模型概述
Reactor模式具有如下的优点:(1)响应快,不必为单个同步时间所阻塞,虽然Reactor本身依然是同步的;(2)可以最大程度的避免复杂的多线程及同步问题,并且避免了多线程/进程的切换开销;(3)扩展型好,可以方便的通过增加Reactor实例个数来充分利用CPU资源;(4)复用性好,Reactor模型本身与具体事件处理逻辑无关,具有很高的复用性。原创 2023-02-21 14:27:49 · 168 阅读 · 0 评论 -
netty入门(八)netty概述
1. Netty是由JBOSS提供的一个Java开源框架。Netty提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络IO程序。2. Netty可以帮助你快速、简单的开发出一个网络应用,相当于简化和流程化了NIO的开发过程。3. Netty是目前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,知名的Elasticsearch、Dubbo框架内部都采用了Netty。原创 2023-02-20 15:06:38 · 60 阅读 · 0 评论 -
netty入门(七) NIO与零拷贝
零拷贝是网络编程的关键,很多性能优化都离不开。原创 2023-02-17 17:28:00 · 126 阅读 · 0 评论 -
netty入门(六)应用实例-群聊系统
需求:(1)编写一个NIO群聊系统,实现服务器端和客户端之间的数据简单通讯(非阻塞)(2)实现多人群聊(3)服务器端:可以监测用户上线,离线,并实现消息转发功能(4)客户端:通过channel可以物阻塞发送消息给其他所有用户,同时可以接收其他用户发送的消息(有服务器转发得到)(5)目的:进一步理解NIO非阻塞网络编程机制原创 2023-02-17 15:34:52 · 117 阅读 · 0 评论 -
netty入门(五)Selector介绍和原理
Selector能够检测多个注册的通道上是否有事件发生(注意:多个Channel以事件的方式可以注册到同一个Selector),如果有事件发生,便获取事件然后针对每个事件进行相应的处理。这样就可以只用一个单线程去管理多个通道,也就是管理多个连接和请求原创 2023-02-17 11:28:26 · 817 阅读 · 0 评论 -
netty入门(四) Channel介绍及应用
NIO的通道类似于流,但有些区别如下: ◦ 通道可以同时进行读写,而流只能读或者只能写; ◦ 通道可以实现异步读写数据; ◦ 通道可以从缓冲读数据,也可以写数据到缓冲;原创 2023-02-16 16:35:15 · 984 阅读 · 0 评论 -
netty入门(三) Buffer的机制及子类
缓冲区本质上是一个可以读写数据的内存块,可以理解成是一个容器对象(含数组),该对象提供了一组方法,可以更轻松地使用内存块,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况。原创 2023-02-16 09:26:23 · 102 阅读 · 0 评论 -
netty入门(二) I/O模型
Java NIO 是指JDK提供的新API。从JDK1.4开始,Java提供了一系列改进的输入/输出的新特性,被统称为NIO(即New IO),是同步非阻塞的。NIO有三大核心部分: Channel(通道), Buffer(缓冲区),Selector(选择器)。原创 2023-02-14 17:40:59 · 140 阅读 · 0 评论 -
netty入门(一) netty介绍
Netty是有jboss提供的一个Java开源框架,现在Github上的独立项目。Netty是一个异步的‘’、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络IO程序。原创 2023-02-14 15:04:55 · 138 阅读 · 0 评论