Netty入门-第三话
尚硅谷的源码部分暂时不再记录笔记,因为我觉得源码这东西,韩老师讲的不太好,弹幕和评论也有说。源码这东西,先把入门的消化一下,然后通过书或者博客来看源码会比较好,你只有先会用,看源码才会有感觉。
Google Protobuf编码和解码的基本介绍
编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码[示意图]
codec(编解码器)的组成部分有两个:decoder(解码器)和 encoder(编码器)。encoder 负责把业务数据转换成字节码数据,decoder 负责把字节码数据转换成业务数据
Netty 本身的编码解码的机制和问题分析
Netty 自身提供了一些 codec(编解码器)
Netty 提供的编码器
StringEncoder:对字符串数据进行编码。
ObjectEncoder:对Java对象进行编码。
Netty 提供的解码器
StringDecoder,对字符串数据进行解码
ObjectDecoder,对 Java 对象进行解码
Netty 本身自带的 ObjectDecoder 和 Ob ...
Netty入门-第二话
Netty 概述原生 NIO 存在的问题
NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。
需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。
开发工作量和难度都非常大:例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等等。
JDK NIO 的 Bug:例如臭名昭著的 Epoll Bug,它会导致 Selector 空轮询,最终导致 CPU100%。直到 JDK1.7 版本该问题仍旧存在,没有被根本解决。
Netty 官网说明官网:https://netty.io/
Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protoco ...
Netty入门-第一话
因为学netty的过程中,发现计算机网络和操作系统蛮重要的,所以接下来会写几篇这方面的文章,希望读者不要觉得我东写一点,西写一点。
比如netty中有操作系统里的IO,零拷贝。有计算机网络里的通信(因为netty本身就是一个网络应用框架)。等等
Netty简介Netty 的介绍
Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github 上的独立项目。
Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。
Netty 主要针对在 TCP 协议下,面向 Client 端的高并发应用,或者 Peer-to-Peer 场景下的大量数据持续传输的应用。
Netty 本质是一个 NIO 框架,适用于服务器通讯相关的多种应用场景。
要透彻理解 Netty,需要先学习 NIO,这样我们才能阅读 Netty 的源码。
相对简单的一个体系图
Netty 的应用场景互联网行业
互联网行业:在分布式系统中,各个节点之间需要远程服务调用,高性能的 RPC 框架必不可少,Netty 作为异步高性能的通信框架,往往作为基础通信组 ...