响应式编程

点击上方蓝色字体,选择“设为星标”

优质文章,及时送达

写在前面

之前发了一篇Reactor到WebFlux,WebFlux整套技术栈是由Spring提供的,Pivotal致力于解决java在云平台上的工作负载。

erlang这种80年代的语言就提出了响应式编程模型,为什么最近流行起来了?

原因有:硬件多核cpu,虚拟化云计算,软件系统可以轻易获得更高性能,系统需要更快的响应,系统规模变得超载,需要更好的利用系统资源。

响应式宣言:更灵活的系统,能够容忍失败,更好地处理失败事件,更有效。

响应式编程特点

响应式编程不会让你的系统更快,但可以让你的系统更加高效,是一种非阻塞编程模型,面向未来的编程模型。

响应式编程在进行同步操作时,不会占用线程,在传统的servlet模型时,在进行跨服务调用时,等待响应结果时,依然会占用线程,对于内存而言线程是沉重的。

在同一条线程中需要等待和返回或者在不切换线程情况下执行一系列操作,这种场景下响应式编程会比较高效,框架会优化尽量让你的操作在一个线程上执行。

异步编程和响应式编程的区别:他们应用于相同领域,不同在于响应式编程有pull,push,和背压。

响应式真正意义在于打破servlet api的单线程连接,响应式编程在web层的意义在于能更合理的使用线程。

响应式编程和函数式编程一样,应该在合适的地方运用而不是强行使用它。

为了解决背压在网络中的应用,和Rsocket进行了合作,Rsocket是为了替代http信息和指令的异步传递。

响应式编程框架思想

rxJava2和Spring Reactor开发是一拨人,rxJava是对于2014年响应式编程标准的实现,Spring Reactor是对于2017年响应式编程标准的实现,rxJava推荐1.8之前使用,也只部分支持响应式编程,Spring Reactor推荐1.8+使用,Spring Reactor是真正的非阻塞响应式编程。

Mono和Flux类似于一个小票,在调用服务得到结果之前,不会阻塞,可以异步在完成任务之后通过小票获取结果返回响应。

响应式编程四种角色:publisher,subscriber,processor,subscription。

publisher发消息 —> subscription订阅消息 —> subscriber消费消息。

面对失败,传统方式通过try catch,响应式编程将失败看作一个事件,需要响应处理,其他任务还需要继续。

响应式编程中发布的事件只有对他感兴趣的订阅者才会处理,消息驱动是先订阅再处理。

设计模式的选择:观察者模式,迭代器模式,状态管理和持久模式,流程模式,消息流模式等。

响应式和微服务关系:利用消息驱动,异步非阻塞性质。

背压就是断路器。

写在后面

响应式编程是面向未来的编程模式,未来的世界是过载的,通过响应式编程可以最大限度的发挥系统的资源能力。

数据库存储还没有支持响应式,因为他们还是具体响应式io实现,jdbc是一种阻塞命令式的api,没法在异步编程中使用,社区有R2DBC响应式的jdbc。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值