NIO理解, Netty框架

NIO特性

  •  事件驱动模型
  • 避免多线程
  • 单线程处理多任务
  • 非阻塞I/O,I/O读写不再阻塞,而是返回0
  • 基于block的传输,通常比基于流的传输更高效
  • 更高级的IO函数,zero-copy
  • IO多路复用大大提高了Java网络应用的可伸缩性和实用性

    Netty对NIO的API进行了封装,通过以下手段让性能又得到了一定程度的提升

1. 使用多路复用技术,提高处理连接的并发性
2. 零拷贝:
     1). Netty的接收和发送数据采用DIRECT BUFFERS,使用堆外直接内存进行Socket读写,不需要进行字节缓冲区的二次拷贝
     2). Netty提供了组合Buffer对象,可以聚合多个ByteBuffer对象进行一次操作
     3). Netty的文件传输采用了transferTo方法,它可以直接将文件缓冲区的数据发送到目标Channel,避免了传统通过循环write方式导致的内存拷贝问题
3. 内存池:为了减少堆外直接内存的分配和回收产生的资源损耗问题,Netty提供了基于内存池的缓冲区重用机制
4. 使用主从Reactor多线程模型,提高并发性
5. 采用了串行无锁化设计,在IO线程内部进行串行操作,避免多线程竞争导致的性能下降
6. 默认使用Protobuf的序列化框架
7. 灵活的TCP参数配置

RocketMQ为什么能支持高并发

1:支持集群模型,强调集群无单点,负载均衡以及水平扩展能力
2:亿级别的消息堆积能力
3:采用零拷贝原理Consumer 消费消息过程,使用了零拷贝 顺序写盘随机读
4:丰富的api 同步消息,异步消息 顺序消息,延迟消息,事务消息
5:底层通信框架采用netty nio
6:  nameserver 代替zookpeer
7:  消息消费失败重试机制,消息可查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值