netty-实现websocket

本文介绍了Netty作为高性能、事件驱动的Java NIO框架,详细阐述了Netty在BIO、NIO、AIO基础上的优势,并展示了如何利用Netty实现WebSocket通信,包括配置、处理器等关键步骤。
摘要由CSDN通过智能技术生成

netty介绍

netty是一个高性能、事件驱动、异步非阻塞的 IO java 开源框架,由Jboss提供,建立tcp等底层连接。基于netty可以建立高性能的http服务器,快速开发,高性能高可靠的网络服务器和客户端程序,支持http、websocket、tcp、udp等。很多高性能的项目,把他作为socket底层的通信基础。

netty是基于nio的客户服务端、服务端编程框架。使用netty可以快速的开发出简单的一个网络应用,netty相当简化的和流线化了网络应用的开发过程

稳定性和伸缩性

使用场景

1、广泛的应用于高性能领域,netty作为一个高性能的NIO框架,比如说游戏,大数据分布式计算领域得到广泛应用

2、多线程并发领域

3、异步通信领域

IO通信

网络通信在编程世界中是必不可少的一部分,到目前为止网络通信主要经历了三个阶段BIO,NIO,AIO。

Java IO实现方式

1)、同步,阻塞IO——BIO-(JDK1.4以前)

2)、IO事件轮询,多路复用技术(select)——NIO-(JDK1.4—1.6)

3)、异步非阻塞IO——AIO-(JDK1.7以及以后)

BIO通信

采用BIO通信模型的服务端,通常都会使用一个Acceptor线程负责监听客户端的连接!接收到客户端的连接请求之后,为每一个客户端创建一个新的线程进行链路处理,处理完成之后,通过输出流返回应答给客户端!线程销毁!典型的一请求一应答的通信模型!

缺点:缺乏弹性伸缩能力;当客户端并发访问量增加以后,服务端的 线称个数,和访问数呈1:1的正比关系,但是线称是java非常宝贵的系统资源,线程数量膨胀之后将十分影响系统性能,随着访问量的持续增加,将会导致系统的线称堆栈溢出,创建新线程失败等问题。导致线称宕机,不能对外提供服务

伪异步IO通信

当有新的客户端通信接入时候,客户端的socket封装成一个task到后端的线程池中处理

当有M个客户端接入,会创建具有N个线称的线程池对客户端的请求进行处理

线程池可以设置线程池大小和最大线程数,那么他占用的资源是可控制的

缺点:当有大量的客户端接入时候,随着并发访问量的不断增加,伪异步IO可能会导致线程池阻塞

NIO通信

分布式rpc框架有很多,比如dubbo,netty,还有很多其他的产品。但他们大部分都是基于nio的

nio是非阻塞的io,那么它的内部机制是怎么实现的呢。

1.由一个专门的线程处理所有IO事件,并负责分发。

2.事件驱动机制,事件到来的时候触发操作,不需要阻塞的监视事件。

3.线程之前通过wait,notify通信,减少线程切换。

4.所有数据都是通过缓冲区处理的,任何时候访问NIO数据都是通过缓冲区操作

AIO通信

连接注册读写事件和回调函数

读写

### 回答1: Netty-WebSocket-Spring-Boot-Starter是一个用于将Websocket集成到Spring Boot应用程序中的库。它使用Netty作为底层框架,提供了一种快速和可靠的方式来处理异步通信。 这个库提供了一种简单的方法来创建Websocket端点,只需要使用注释和POJO类即可。在这些端点上可以添加动态的事件处理程序,以处理连接、断开连接和消息事件等。 此外,Netty-WebSocket-Spring-Boot-Starter还包括了一些安全性的特性,如基于令牌的授权和XSS保护,可以帮助您保持您的Websocket应用程序安全。 总的来说,Netty-WebSocket-Spring-Boot-Starter提供了一种快速和易于使用的方式来构建Websocket应用程序,使得它成为应用程序开发人员的有用工具。 ### 回答2: netty-websocket-spring-boot-starter 是一个开源的 Java Web 开发工具包,主要基于 Netty 框架实现WebSocket 协议的支持,同时集成了 Spring Boot 框架,使得开发者可以更加方便地搭建 WebSocket 服务器。 该工具包提供了 WebSocketServer 配置类,通过在 Spring Boot 的启动配置类中调用 WebSocketServer 配置类,即可启动 WebSocket 服务器。同时,该工具包还提供了多种配置参数,如端口号、URI 路径、SSL 配置、认证配置等等,可以根据业务需求进行自定义配置。 此外,该工具包还提供了一些可扩展的接口和抽象类,如 WebSocketHandler、ChannelHandlerAdapter 等,可以通过继承和实现这些接口和抽象类来实现业务逻辑的处理和拓展。 总的来说,netty-websocket-spring-boot-starter 提供了一个高效、简单、易用的 WebSocket 服务器开发框架,可以减少开发者的开发成本和工作量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值