现代应用架构瓶颈
网络
RPC(远程过程调用)
dubbo netty NIO+Async
MOM(消息中间件) RabbitMQ
DB jdbc连接
网络带宽 1GB---100MB
网络运用
设计架构
应用性能
阻塞式+不合理同步
阻塞式
同步
等待结果返回
用户下单 包含 用户服务100ms+下单服务100ms >200ms
1.通过认证token查询user
2. 用user.id执行下单服务
依赖模式 A--->B--->C C的结果要给B,B的结果要给A
并行模式 C--->A|B C的结果可以给到B跟A
普通的并发编程不是最优的,
Reactive Streams 框架 其实就是Stream的响应式
- stndard:标准
- asynchronous stream processing: 异步处理stream.Java8其实已经能够处理。
- non-blocking backpressure: 非阻塞
- 使用观察者模式的扩展 observable sequences
- 异步/同步混搭模式 同步非阻塞、异步非阻塞
- 非阻塞 并不是异步 NIO VS AIO
- 需要会使用Lambda,熟悉java并发
- Java 8里Stream API
- 优势:并行处理,无需关注线程池,future无感,callable无感。关注数据: reduce/gene
Spring 5 web Flux
- rE
1.Java 9 Flow API Java 9 异步并发编程
2.Spring Reactor 高并发Reactor Stream编程之Reactor.是spring一个项目
3.RxJava
Vert异步编程
reactor
observable
观察者模式 。事件监听
观察者模式VS 迭代器模式
API表述:
观察者模式:observable / Observer 观察者与被观察者
迭代器模式:Iterator
使用场景:
观察者模式是推模式 Push-Based
迭代器模式是拉模式 Put-Based
1.Publisher 数据发布者
2. Subscriber 数据消费者
3. Sub
4. 被压
Java 8 Lambda
- Function
- Consumer 只有消费数据,没有返回数据
- Supplier 只有返回数据
Happens-Before
Lock-Free
jmm java线程模型中的内存模型 线程通信 消费传递