关于响应式编程的十个问题

对于响应式编程,看了一些资料,总感觉理解的不够到位,希望小步快跑,能慢慢弄清楚。这是一篇翻译,原文地址:https://www.scnsoft.com/blog/java-reactive-programming
Java这种面向对象的编程语言处理异步调用会导致代码复杂,不易维护;使用响应式编程可以简化异步调用的实现,提高系统响应速度。但是由于响应式是完全不同的编程风格,学习上手有比较高的门槛。
1. 什么是响应式编程?
响应式编程是一种编程范例,它处理异步数据流和特定的变更传播,按照特定顺序对执行环境(上下文)进行修改。
2. 什么是特定的变更传播?
举个生活中的例子来说明:John想邀请Bob来家里吃披萨,看星球大战,他有几种处理方式:
A. John去披萨店买披萨,等披萨做好后,去Bob家接上Bob,最后跟Bob一起回家,开始吃披萨看电影。这是同步模式,每一个步骤要等上一个步骤完成,整个过程要花很长时间。
B. John在网上预订披萨,电话邀请Bob,如果披萨来了,不用等Bob来,就可以吃着披萨看电影。这是异步模式,虽然高效但是不能满足需求。
C. John预订披萨,电话邀请Bob,即使披萨送到,也要等Bob来了之后才一起吃披萨、看电影。这就是特定的变更传播,要等上一个异步事件处理完成后,才能开始处理下一个异步事件。
3. 响应式编程和响应式系统是一回事么?
不是一回事,虽然这两个词经常互换使用。响应式系统代表更高层次的“响应”,它意味着特定的设计和特有的架构,以构建弹性、灵活和响应式的应用。可以使用响应式编程来构建响应式系统,实现松散耦合、资源更高效的利用和更好的响应性和低延时。
4. Java中为什么需要响应式编程?
在大数据和多用户场景下,我们经常需要异步调用来提升系统响应速度;而Java作为面向对象的语言,异步调用实现麻烦,还会使代码复杂不易维护;响应式编程能简化对异步事件流的处理。
5. Java中如何进行响应式编程?
Java8中内置了部分对响应式编程的支持,但不太好用;用的比较多的是第三方扩展:RxJava和Spring Reactor。
6. 使用响应式编程有哪些好处?
提高系统性能:使用响应式编程能提高处理大量数据的反应速度。
提升用户体验:使用响应式编程能提升系统的响应能力。
简化修改和维护:代码更容易理解。
7. 所有都应该是响应式的么?
响应式编程可以作为应用的一部分集成到应用中,没必要将已经证明有效的编程模式全部推倒。如果只是简单的网站,肯定没有必要应用响应式编程;如果需要引入推荐系统,引入响应式编程处理来大数据、高负载就是个好办法。
8. 什么时候使用响应式编程?
响应式编程是高负载、多用户应用的优雅的解决方案,像社交应用、游戏、音视频应用;此外,应用有以下模块也适合应用:需要大量交互的服务端代码、代理服务器/负载均衡器、人工智能/机器学习、实时数据流处理。
9. 什么场景下不适合?
没有实时数据、高负载,没有大量用户同时更改数据时,不适合使用。
10. 怎么开始响应式编程?
【关于响应式编程的十个问题】仅仅通过理论学习,下载框架代码进行实践作用不大;学习响应式编程需要花费大量的时间和精力,进行大量的实践,才能使得开发人员学会进行更高层次的抽象,才能比较熟练合理的使用。如果决定使用该方法,最好找有经验的人做咨询,找到系统中真正适合使用该编程方法的地方。

    推荐阅读