-
TCP close 高延迟,数据一致性
查看全部 -
# Web 实时通信方案 All In One
HTTP 轮询, 单向通信,开销大
HTTP 长轮询, 单向通信,开销较小
WebSocket,双向通信,开销最小
Server Push,单向通信,开销较小
WebRTC 实时音频,视频,H5 直播
查看全部 -
查看全部
-
bio通信的特点
查看全部 -
使用的场景
查看全部 -
netty介绍
查看全部 -
BIO 同步阻塞IO
伪异步IO通信(线程池处理)
NIO 同步非堵塞IO
AIO 异步非堵塞IO
查看全部 -
一般来说I/O模型可以分为:同步阻塞,同步非阻塞,异步阻塞,异步非阻塞IO
同步阻塞IO:在此种方式下,用户进程在发起一个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,用户进程才能运行。JAVA传统的IO模型属于此种方式!
同步非阻塞IO:在此种方式下,用户进程发起一个IO操作以后边可返回做其它事情,但是用户进程需要时不时的询问IO操作是否就绪,这就要求用户进程不停的去询问,从而引入不必要的CPU资源浪费。其中目前JAVA的NIO就属于同步非阻塞IO。
异步阻塞IO:此种方式下是指应用发起一个IO操作以后,不等待内核IO操作的完成,等内核完成IO操作以后会通知应用程序,这其实就是同步和异步最关键的区别,同步必须等待或者主动的去询问IO是否完成,那么为什么说是阻塞的呢?因为此时是通过select系统调用来完成的,而select函数本身的实现方式是阻塞的,而采用select函数有个好处就是它可以同时监听多个文件句柄,从而提高系统的并发性!
异步非阻塞IO:在此种模式下,用户进程只需要发起一个IO操作然后立即返回,等IO操作真正的完成以后,应用程序会得到IO操作完成的通知,此时用户进程只需要对数据进行处理就好了,不需要进行实际的IO读写操作,因为真正的IO读取或者写入操作已经由内核完成了。目前Java中还没有支持此种IO模型。
BIO是一个连接一个线程。
NIO是一个请求一个线程。
AIO是一个有效请求一个线程。
查看全部 -
1111111
查看全部 -
1:BIO 服务端一个线程会负责一个连接,进行请求的处理和响应,比较明显,当客户端比较多的时候,服务端的线程可能就不够了,这时候对应的请求就没法及时处理了
客户端个数:服务端处理线程个数=1:1
IO类型:阻塞同步
API使用难度:简单
调试难度:简单
查看全部 -
WebSocket建立连接
客户端发起握手请求
服务端响应请求
连接建立
查看全部 -
NIO 所有的数据都是通过缓冲区处理的,通道Channel 。Selector 轮询Channel
查看全部 -
WebSocket:H5协议规范、握手机制、解决客户端与服务端实时通信而产生的技术
本质上是基于TCP的协议
服务端与客户端通过此TCP连接进行实时通信,当WebSocket客户端与服务器端进行通讯以后,此时就不再需要之前进行握手请求的HTTP协议的参与了
查看全部 -
BIO通信:一个线程负责连接,一请求一应答,缺乏弹性伸缩能力
客户端的个数和服务端创建的线程数呈1:1的正比关系
伪异步IO通信:线程池负责连接,M请求N应答,线程池阻塞
NIO通信:缓冲区Buffer,通道Channel,多路复用器Selector
通道Channel是双向的,可用于读、写或同时进行;流Stream只能在一个方向移动
AIO通信:连接注册读写事件和回调函数,读写方法异步,主动通知程序
提供两种方式获取操作结果:java.util.concurrent.Futrue类来表示异步操作都结果;执行异步操作时传入java.nio.channels.CompletionHandler接口都实现类作为操作完成回调
查看全部
举报