一、基本概念—阻塞(Blocking I/O)/非阻塞(Non-blocking I/O),同步(Synchronous I/O)/异步(Asynchronous I/O):
在进行 络编程时,我们常常见到同步(Synchronous I/O)/异步(Asynchronous I/O),阻塞(Blocking I/O)/非阻塞(Non-blocking I/O)四种调用方式,下面将这几个基本概念解释一下:
1. 同步/异步:【主要针对C端】
所谓同步,就是在C端发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。
例如普通B/S模式(同步):提交请求—>等待服务器处理—>处理完毕返回。 整个期间客户端浏览器不能干任何事。
而异步的概念和同步相对,当C端一个异步过程调用发起后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。
例如:ajax请求(异步):请求通过事件触发—>服务器处理(这是浏览器仍然可以作其他事情)—>处理完毕。
Java
-
Responsive: 可响应的。要求系统尽可能做到在任何时候都能及时响应。
-
Resilient: 可恢复的。要求系统即使出错了,也能保持可响应性。
-
Elastic: 可伸缩的。要求系统在各种负载下都能保持可响应性。
-
Message Driven: 消息驱动的。要求系统通过异步消息连接各个组件。
可以看到,对于任何一个响应式系统,首先要保证的就是可响应性,否则就称不上是响应式系统。从这个意义上来说,动不动就蓝屏的Windows系统显然不是一个响应式系统。
Java
三、Spring 5 – Spring webflux
它是一个新的非堵塞函数式 Reactive Web 框架,可以用来建立异步的,非阻塞,事件驱动的服务,并且扩展性非常好。把阻塞(不可避免的)风格的代码迁移到函数式的非阻塞 Reactive 风格代码。
-
新的spring-webflux模块,一个基于reactive的spring-webmvc,完全的异步非阻塞,旨在使用enent-loop执行模型和传统的线程池模型。
-
Reactive说明在spring-core比如编码和解码
-
spring-core相关的基础设施,比如Encode 和Decoder可以用来编码和解码数据流;DataBuffer 可以使用java ByteBuffer或者Netty ByteBuf;ReactiveAdapterRegistry可以对相关的库提供传输层支持。
-
在spring-web包里包含HttpMessageReade和HttpMessageWrite

Java
Java学习资料(复制下段链接至浏览器即可)
data:textml;charset=UTF-8;base64,5oGt5Zac5L2g77yM5p625p6E5biI5a2m5Lmg576k5Y+35pivNjg2NTc5MDE0Cg==
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92904 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!