![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
netty
文章平均质量分 91
阿昌喜欢吃黄桃
这个作者很懒,什么都没留下…
展开
-
Day858.高性能网络应用框架Netty -Java 并发编程实战
Netty是一个款优秀的网络编程框架,性能非常好,为了实现高性能的目标,Netty 做了很多优化,例如优化了 ByteBuffer、支持零拷贝等等,和并发编程相关的就是它的线程模型了。Netty 的线程模型设计得很精巧,每个网络连接都关联到了一个线程上,这样做的好处是:对于一个网络连接,读写操作都是单线程执行的,从而避免了并发程序的各种问题。要想深入理解 Netty 的线程模型,还需要对网络相关知识有一定的理解,关于 Java IO 的演进过程,可以参考。原创 2023-01-13 20:36:32 · 627 阅读 · 0 评论 -
Day786.NIO的优化实现原理 -Java 性能调优实战
阻塞IO:调用read()线程阻塞了非阻塞IO:调用read()马上拿到一个数据未就绪,或者就绪。I/O多路复用:selector线程阻塞,channel非阻塞,用阻塞一个selector线程换了多个channel了非阻塞。select()函数基于数组,fd个数限制1024,poll()函数也是基于数组但是fd数目无限制。都会负责所有的fd(未就绪的开销浪了),epll():基于红黑数实现,fd无大小限制,平衡二叉数插入删除效率高。信号驱动模式IO:对IO多路复用进一步优化,selector也非阻塞了。原创 2022-10-31 21:21:05 · 323 阅读 · 0 评论 -
Day785.网络通信优化之通信协议:如何优化RPC网络通信 -Java 性能调优实战
一提到 RPC,是否还想到 MVC、SOA 这些概念呢?如果没有经历过这些架构的演变,这些概念就很容易混淆。架构的演变史:无论是微服务、SOA、还是 RPC 架构,它们都是分布式服务架构,都需要实现服务之间的互相通信,我们通常把这种通信统称为RPC 通信。,即远程服务调用,是通过网络请求远程计算机程序服务的通信技术。RPC 框架封装好了底层网络通信、序列化等技术,我们只需要在项目中引入各个服务的接口包,就可以实现在代码中调用 RPC 服务同调用本地方法一样。原创 2022-10-30 15:24:24 · 409 阅读 · 0 评论 -
Day480.Netty手写dubboRPC框架 -netty
Netty手写dubboRPC框架一、RPC 基本介绍rpc是远程调用的一种行为,在数据传输过程中涉及到传输协议,http就是一种传输协议RPC(Remote Procedure Call)— 远程过程调用,是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程两个或多个应用程序都分布在不同的服务器上,它们之间的调用都像是本地方法调用一样常见的 RPC 框架有:阿里的Dubbogoogle的gRPCGo语言的r原创 2021-12-17 22:48:11 · 1233 阅读 · 1 评论 -
Day477&478&479.Netty核心源码 -netty
Netty核心源码一、Netty 启动过程源码剖析NioEventLoop 类 的run() 代码 ,无限循环,在服务器端运行1、源码的基本理解//服务器启动类源码/*** Echoes back any received data from a client.*/public final class EchoServer { static final boolean SSL = System.getProperty("ssl") != null; static final原创 2021-12-13 22:59:45 · 1720 阅读 · 2 评论 -
Day476.TCP粘包和拆包及解决方案 -netty
TCP 粘包和拆包及解决方案一、TCP 粘包和拆包基本介绍TCP 是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的 socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,使用了优化方法(Nagle 算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辨出完整的数据包了,因为面向流的通信是无消息保护边界的由于 TCP 无消息保护边界, 需要在接收端处理消息边界问题,也就是我们所说的原创 2021-12-13 00:04:06 · 640 阅读 · 0 评论 -
Day475.GoogleProtobuf&Netty编解码器和handler 的调用机制 -netty
Google Protobuf一、编码和解码的基本介绍编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码接收数据时就需要解码codec(编解码器) 的组成部分有两个:decoder(解码器)和 encoder(编码器)。encoder 负责把业务数据转换成字节码数据,decoder 负责把字节码数据转换成业务数据二、Netty 本身的编码解码的机制和问题分析Netty 自身提供了一些 codec(编解码器)Netty 提供的编码器Str原创 2021-12-11 20:26:42 · 1046 阅读 · 1 评论 -
Day472&473&474.Netty 核心模块组件 -netty
Netty 核心模块组件一、Bootstrap、ServerBootstrapBootstrap 意思是引导,一个 Netty 应用通常由一个 Bootstrap 开始,主要作用是配置整个 Netty 程序,串联各个组件Netty 中 :Bootstrap 类是客户端程序的启动引导类ServerBootstrap 是服务端启动引导类常见的方法public ServerBootstrap group(EventLoopGroup parentGroup, EventLoopGroup原创 2021-12-07 22:27:46 · 817 阅读 · 0 评论 -
Day470&471.Netty概述&Netty高性能架构设计 -netty
Netty概述一、原生 NIO 存在的问题NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。开发工作量和难度都非常大:例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等等。JDK NIO原创 2021-12-05 22:08:01 · 1174 阅读 · 0 评论 -
Day467&468&469.JavaBIO&NIO编程&AIO&NIO与零拷贝&对比 -netty
Java BIO 编程一、I/O 模型I/O 模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能Java 共支持 3 种网络编程模型/IO 模式:BIO、NIO、AIOJava BIO : 同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销Java NIO :同步非阻塞,服务器实现模式为一个线程处理多个请求(连接),即客户端发送的原创 2021-12-02 22:31:32 · 2173 阅读 · 1 评论 -
Day466.Netty介绍和应用场景 -netty
Netty介绍和应用场景要求已经掌握了 主要技术构成:Java OOP 编程、Java 多线程编程、Java IO 编程 、Java 网络编程、常用的Java 设计模式(比如 观察者模式 ,命令模式,职责链模式 )、常用的数据结构(比如 链表)Netty的介绍• Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github上的独立项目。• Netty 是一个***异步的、基于事件驱动*** 的网络应用框架,用以快速开发高性能、高可靠性原创 2021-12-01 23:12:37 · 1068 阅读 · 0 评论