
netty
K'illCode
记录自己的学习历程,大部分来自转载,如有侵权联系删除.......
展开
-
彻底理解分布式 Netty
一、Netty到底是什么 1、从HTTP说起 有了Netty,你可以实现自己的HTTP服务器,FTP服务器,UDP服务器,RPC服务器,WebSocket服务器,Redis的Proxy服务器,MySQL的Proxy服务器等等。 我们回顾一下传统的HTTP服务器的原理: 1、创建一个ServerSocket,监听并绑定一个端口 2、一系列客户端来请求这个端口 ...转载 2020-01-12 19:14:04 · 280 阅读 · 0 评论 -
Springboot 整合 Netty 实战(附源码)
前言 这一篇文章主要介绍如何用Springboot 整合 Netty,由于本人尚处于学习Netty的过程中,并没有将Netty 运用到实际生产项目的经验,这里也是在网上搜寻了一些Netty例子学习后总结来的,借鉴了他人的写法和经验。如有重复部分,还请见谅。 关于SpringBoot 如何整合使用 Netty ,我将分为以下几步进行分析与讨论: 构建Netty 服务端 构建Net...原创 2019-10-04 16:48:42 · 1097 阅读 · 0 评论 -
Netty的线程模型
1. 背景 最近发现极客时间的很多课程中,都穿插到了 Netty,可见 Netty 的重要性。基于此,给大家推荐一下这篇文章! 1.1. Java 线程模型的演进 1.1.1. 单线程 时间回到十几年前,那时主流的 CPU 都还是单核(除了商用高性能的小机),CPU 的核心频率是机器最重要的指标之一。 在 Java 领域当时比较流行的是单线程编程,对于 CPU 密...原创 2019-08-23 10:51:19 · 226 阅读 · 0 评论 -
Netty到底是个什么鬼?有没有简单的理解方式?
作者:lyowish 来源:http://1t.click/7RY # 从HTTP说起 有了Netty,你可以实现自己的HTTP服务器,FTP服务器,UDP服务器,RPC服务器,WebSocket服务器,Redis的Proxy服务器,MySQL的Proxy服务器等等。 我们回顾一下传统的HTTP服务器的原理如下: 1、创建一个ServerSocket,监...转载 2019-08-26 08:57:11 · 189 阅读 · 0 评论 -
MINA、Netty、Twisted一起学(一):实现简单的TCP服务器
MINA、Netty、Twisted为什么放在一起学习?首先,不妨先分别看一下它们官方网站对其的介绍: MINA: Apache MINA is a network application framework which helps users develop high performance and high scalability network applications easily....转载 2019-01-30 08:31:40 · 271 阅读 · 0 评论 -
MINA、Netty、Twisted一起学(二):TCP消息边界问题及按行分割消息
在TCP连接开始到结束连接,之间可能会多次传输数据,也就是服务器和客户端之间可能会在连接过程中互相传输多条消息。理想状况是一方每发送一条消息,另一方就立即接收到一条,也就是一次write对应一次read。但是,现实不总是按照剧本来走。 MINA官方文档节选: TCP guarantess delivery of all packets in the correct order. But...转载 2019-01-30 08:31:26 · 249 阅读 · 0 评论 -
MINA、Netty、Twisted一起学(三):TCP消息固定大小的前缀(Header)
在上一篇博文中,有介绍到用换行符分割消息的方法。但是这种方法有个小问题,如果消息中本身就包含换行符,那将会将这条消息分割成两条,结果就不对了。 本文介绍另外一种消息分割方式,即上一篇博文中讲的第2条:use a fixed length header that indicates the length of the body,用一个固定字节数的Header前缀来指定Body的字节数,以此来...转载 2019-01-29 09:39:39 · 259 阅读 · 0 评论 -
MINA、Netty、Twisted一起学(四):定制自己的协议
在前面的博文中,介绍一些消息分割的方案,以及MINA、Netty、Twisted针对这些方案提供的相关API。例如MINA的TextLineCodecFactory、PrefixedStringCodecFactory,Netty的LineBasedFrameDecoder、LengthFieldBasedFrameDecoder,Twisted的LineOnlyReceiver、Int32Str...转载 2019-01-29 09:39:25 · 247 阅读 · 0 评论 -
MINA、Netty、Twisted一起学(五):整合protobuf
protobuf是谷歌的Protocol Buffers的简称,用于结构化数据和字节码之间互相转换(序列化、反序列化),一般应用于网络传输,可支持多种编程语言。 protobuf如何使用这里不再介绍,本文主要介绍在MINA、Netty、Twisted中如何使用protobuf,不了解protobuf的同学可以去参考我的另一篇博文。 在前一篇博文中,有介绍到一种用一个固定为4字节的前缀Heade...转载 2019-01-29 09:39:16 · 325 阅读 · 0 评论 -
MINA、Netty、Twisted一起学(十二):HTTPS
由于HTTPS协议是由HTTP协议加上SSL/TLS协议组合而成,在阅读本文前可以先阅读一下HTTP服务器和SSL/TLS两篇博文,本文中的代码也是由这两篇博文中的代码组合而成。 HTTPS介绍 上一篇博文中介绍了SSL/TLS协议,我们平时接触最多的SSL/TLS协议的应用就是HTTPS协议了,现在可以看到越来越多的网站已经是https开头了,百度搜索也由曾经的http改为https。有关百...转载 2019-01-29 09:38:12 · 188 阅读 · 0 评论 -
MINA、Netty、Twisted一起学(十一):SSL/TLS
什么是SSL/TLS 不使用SSL/TLS的网络通信,一般都是明文传输,网络传输内容在传输过程中很容易被窃听甚至篡改,非常不安全。SSL/TLS协议就是为了解决这些安全问题而设计的。SSL/TLS协议位于TCP/IP协议之上,各个应用层协议之下,使网络传输的内容通过加密算法加密,并且只有服务器和客户端可以加密解密,中间人即使抓到数据包也无法解密获取传输的内容,从而避免安全问题。例如广泛使用的HT...转载 2019-01-29 09:38:21 · 188 阅读 · 0 评论 -
MINA、Netty、Twisted一起学(十):线程模型
要想开发一个高性能的TCP服务器,熟悉所使用框架的线程模型非常重要。MINA、Netty、Twisted本身都是高性能的网络框架,如果再搭配上高效率的代码,才能实现一个高大上的服务器。但是如果不了解它们的线程模型,就很难写出高性能的代码。框架本身效率再高,程序写的太差,那么服务器整体的性能也不会太高。就像一个电脑,CPU再好,内存小硬盘慢散热差,整体的性能也不会太高。 玩过Android开发的同...转载 2019-01-29 09:38:31 · 241 阅读 · 0 评论 -
MINA、Netty、Twisted一起学(九):异步IO和回调函数
用过JavaScript或者jQuery的同学都知道,JavaScript特别是jQuery中存在大量的回调函数,例如Ajax、jQuery的动画等。 1 2 3 4 $.get(url, function() { doSomething1(); // (3) }); // (1) doSomething2(); // (2) 上面的代...转载 2019-01-29 09:38:41 · 240 阅读 · 0 评论 -
MINA、Netty、Twisted一起学(八):HTTP服务器
HTTP协议应该是目前使用最多的应用层协议了,用浏览器打开一个网站就是使用HTTP协议进行数据传输。 HTTP协议也是基于TCP协议,所以也有服务器和客户端。HTTP客户端一般是浏览器,当然还有可能是其他东西。HTTP服务器,也就是Web服务器,目前已经有很多成熟的产品,例如Apache HTTP Server、Tomcat、Nginx、IIS等。 本文的内容不是讲解如何使用以上的HTTP服务...转载 2019-01-29 09:38:48 · 304 阅读 · 0 评论 -
MINA、Netty、Twisted一起学(七):发布/订阅(Publish/Subscribe)
消息传递有很多种方式,请求/响应(Request/Reply)是最常用的。在前面的博文的例子中,很多都是采用请求/响应的方式,当服务器接收到消息后,会立即write回写一条消息到客户端。HTTP协议也是基于请求/响应的方式。 但是请求/响应并不能满足所有的消息传递的需求,有些需求可能需要服务端主动推送消息到客户端,而不是被动的等待请求后再给出响应。 发布/订阅(Publish/Subscrib...转载 2019-01-29 09:38:57 · 206 阅读 · 0 评论 -
MINA、Netty、Twisted一起学(六):session
开发过Web应用的同学应该都会使用session。由于HTTP协议本身是无状态的,所以一个客户端多次访问这个web应用的多个页面,服务器无法判断多次访问的客户端是否是同一个客户端。有了session就可以设置一些和客户端相关的属性,用于保持这种连接状态。例如用户登录系统后,设置session标记这个客户端已登录,那么访问别的页面时就不用再次登录了。 不过本文的内容不是Web应用的session,...转载 2019-01-29 09:39:04 · 207 阅读 · 0 评论 -
Netty网络聊天(一) 聊天室实战
之前做过一个IM的项目,里面涉及了基本的聊天功能,所以注意这系列的文章不是练习,不含基础和逐步学习的部分,直接开始实战和思想引导,基础部分需要额外的去补充,我有精力的话可以后续出一系列的文章。 为什么第一篇是聊天室,聊天室是最容易实现的部分。也是IM结构最简单的一部分,其次作单聊和群聊,业务逻辑层层递增,彻底的拿下聊天室的代码,进阶单聊和群聊就很简单了,后续我还会推出直播间的实现。 如果单纯想...转载 2018-11-24 09:49:54 · 530 阅读 · 0 评论 -
netty4 io.netty.util.IllegalReferenceCountException: refCnt: 0异常
在使用netty的时候 服务端在解析客户端传来的数据de的时候总是抛出这样的异常在一番查找下终于解决 解决方法 :将super注释调就正确了原创 2018-10-10 14:04:08 · 1784 阅读 · 0 评论