netty学习笔记一

netty是基于nio(非阻塞io)的高性能网络通信框架

什么是阻塞 ?

一直等待在那里,知道有返回值才会处理

例如:

i. Socket socket = serverSocket.accept();

ii. int data = is.read(in);

socket编程基础知识,readline() 与 read区别,byte是为从文件读取提供的缓冲,byte[1024] 一般读取为1024整数倍,看内存的大小;

每个Java程序员都应该记住,Java使用的是Unicode编码。所有的字符在JVM中(内存中)只有一个存在形式就是Unicode。所以一个char占用2字节。当要写入文件中时,就按程序指定的UTF-8编码对“汉字”重新编码。

字符编码参考资料:

https://blog.csdn.net/dream_goon/article/details/37691589

IO模型(一个服务员服务一个客户)

NIO模型(一个服务员可以服务多个客户)

扩展:

epll中内核会自动会写数据回Uer Application

===========================================================================================

AIO(异步io)

jdk7中新增的一些与文件(网络)I/O相关的一些api

资料参考:

https://www.jianshu.com/p/c5e16460047b

缺点:

因为AIO的实施需充分调用OS参与,IO需要操作系统支持、并发也同样需要操作系统的支持,所以性能方面不同操作系统差异会比较明显。

===========================================================================================

BIO:

问题?
1.阻塞
2.一个服务端与一个客户端服务,只有一个客户端断开之后;另一个客户端才能连接

缺点总结:(一个服务端只能为一个客户端服务,在高并发场景下很快耗尽服务器资源)

解决方案(伪异步io):
1. 不断的 new Thread()...
问题:不断的创建资源耗尽服务器资源
2. 用线程池解决?
问题:底层还是 new Thread(),客户一直连接无法回收
3. 用限制了线程数的线程池, 100个?
问题:到了101个的时候就挂掉了,无法服务,必须等待

===========================================================================================

NIO

解决的问题:一个客户端请求接入后,服务端必须创建一个线程来处理这条链路,如果客户端无限增长,服务器资源不够用 , nio就是为了处理大量的客户端连接(高并发)。

nio:

Seletor通道的管理器

ServerSocketChannel(ServerSocket):只关心客户端连接事件

ServerChannel(Socket):关心读写事件

SelectionKey:事件集合

ByteBuffer

1. 单线程Reactor模型

client  ---> server(Acceptor处理客户端发送的事件,Reactor反应堆转发客户端的请求(相当于Dispatch)

          ---> Handler(进行具体的操作))

2.多线程Reactor模型

--- 创建多个Reactor反应堆

3.主从多线程Reactor模型

client  ---> server(Main Reactor (Acceptor Thread pool)处理客户端发送的事件,Sub Reactor(IO Thread pool)反应堆转发客户端的请求(相当于Dispatch)

          ---> Handler(进行具体的操作))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值