论编程开发语言中的王者,java语言当人不让。我知道很多人开始对我的答案嗤之以鼻,很多会人会反驳道说c,也有人说是python不香吗?如果编程语言看做是篮球界,那么c语言是乔丹,python是贾巴尔,而java就是勒布朗詹姆斯。如果我要选我肯定选詹姆斯,java胜在应用各个领域就像是全能战士。言归正传,今天我要说的是响应式编程。现在出现了各种响应框架,如webFlux ,spring5开始提供了官方支持,还有reactor(webFlux),RxJava 2。今天重点介绍webFlux

以前的一个用户请求都是阻塞是的,一个请求要等到响应完毕才会是否会一直阻塞。webFlux则不同他是异步,非阻塞,事件驱动的,她底层是依赖于ractor-netty框架的,众所周知netty是所有后端框架的核心依赖。netty的高性能非阻塞的网络通讯是webFlux高性能的保证。 webFlux web启动架构图如下:

Mono java 响应式编程 java响应式编程 业务场景_响应式

 webFlux有二个比较核心的类分别是mono和flux,Flux和Mono这两个Reactor的核心类实现发布者 Publisher mono是返回单个对象和元素,而flux是返回多个元素。实际的响应式处理架构有好几个部分,具体包括数据来源,一般称为生产者(Producer)数据的目的地,一般称为消费者(Consumer)在处理时,对数据执行某些操作一个或多个处理阶段。(Processor)到这里我们再看回响应式流的接口,我们应该就能懂了:Publisher(发布者)相当于生产者(Producer)Subscriber(订阅者)相当于消费者(Consumer)Processor就是在发布者与订阅者之间处理数据用的,响应式还有一个比较重要的概念是背压(back pressure)背压说白了就是:消费者能告诉生产者自己需要多少量的数据,Subscription接口专门用来处理背压。今天只是简单介绍一些响应式webFlux框架,后续的介绍我会和大家一起学习和探讨。