响应式架构
问题传统架构
线程池预先创建大量线程,一个请求绑定一个线程
一般一个线程需要1M左右的内存
且线程切换需要耗时
所以,内存开销与时间开销会随着线程量而增大
大量资源开销在线程的管理上
异步调用
发生阻塞后告诉系统,让当前线程先做别的事情,阻塞结束再提醒系统
Callback
回调地狱
响应式编程
发布和订阅
backpressure 背压
控制流速,避免大量数据的接受
协商
订阅者通过自己的能力来通知发布方的通知数量
一些知识函数式接口可有多个重载
使用lambda表达式时可指定参数类型来判断使用哪个方法
常用函数式接口
supplier 0输入,1输出
consumer 1输入, 0输出
function 1输入,1输出
unaryOperator 同类型的1输入1输出
BiFunction 2输入,1输出
流编程注意中间操作是不会执行的, 只是一个声明, 一个流编程必须有一个终止操作才会执行
且在流编程中,终止操作只能有一个, 中间操作0-n个
Project Reactorpublisherflux发布0-n个对象
创建方式
1234567Flux.just(1,2,3,4, ...