学习之响应式应用架构重构ReactiveX

现代应用架构瓶颈

网络

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线程模型中的内存模型 线程通信 消费传递

    


猜你喜欢

转载自blog.csdn.net/Damon__Wang/article/details/80294535