什么是反应式编程?什么是响应式编程?
使用异步数据流进行编程,这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。
java中最早出来的就是RxJAVA(全称:Reactive Extensions java)。
A library for composing asynchronous and event-based programs using observable sequences for the Java VM一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。
It extends the observer pattern to support sequences of data/events and adds operators that allow you to compose sequences together declaratively while abstracting away concerns about things like low-level threading, synchronization, thread-safety and concurrent data structures.它扩展了观察者模式以支持数据/事件序列,并添加了运算符,使您可以声明性地将序列组合在一起,同时消除了对低级线程,同步,线程安全和并发数据结构等问题的担忧。
可以说RxJava是扩展的观察者模式(官方说的)
观察者模式的四大要素:(观察者模式本质上是通过订阅将被观察者产生的事件传递给观察者)
Observable 被观察者
Observer 观察者
subscribe 订阅
事件
被扩展的观察者模式:
RxJava中相对于观察者模式多了onCompleted()和onError()两个方法,这两个互斥的方法能唯一确定事件的结束。
上面介绍了RxJava,我在说说vert.x是什么?
vert.x是一个基于JVM、轻量级、高性能的应用平台,非常适用于移动端后台、互联网、企业应用架构;基于Netty全异步通信,并扩展出了很多有用的特性;是基于事件总线设计的高性能架构,保证应用中不同部分以一种非堵塞的线程安全方式通讯;是借鉴Erlang和Akka架构设计,能充分利用多核处理器性能并实现高并发编程需求的框架。也就是可以理解为在有限的环境中讲系统性能发挥到极致
vert.x的特点:
1.支持多种编程语言
2.异步无锁编程
3.对各种IO的丰富支持(TCP/UDP等)
4.分布式消息传输:EventBus事件总线,EventBus也是Vert.x架构的灵魂所在
5.模块化
6.支持WebSocket
7.良好的扩展性
8.高并发性
想了解更多请查看一下地址:
官方文档:https://vertx.io/docs/
CSDN:https://blog.csdn.net/lizhou828/article/details/93297153
gitChat:https://gitbook.cn/books/5c7f3009db8240765465a1f1/index.html
反应式宣言:https://www.reactivemanifesto.org/zh-CN 有兴趣的可以点击进去看看。
主要说了反应式系统的特质:
1.即时响应性
2.回弹性
3.弹性
4.消息驱动(反应式系统依赖异步的消息传递)
spring5的webFlux和vert.x有什么区别呢?
(以下内容都是自己的总结、查看官方文档等方式,都是基于理论基础之上暂时并没有实践过,若有不对的地方请大佬指点一二,谢谢!希望有实际使用经验的大佬来补充一下!)
来自springWebFlux官方文档:
1.1.6. PerformanceThe key expected benefit of reactive and non-blocking is the ability to scale with a small, fixed number of threads and less memory. That makes applications more resilient under load, because they scale in a more predictable way. In order to observe those benefits, however, you need to have some latency (including a mix of slow and unpredictable network I/O). That is where the reactive stack begins to show its strengths, and the differences can be dramatic.
第一句为重点:能够以较少的固定数量的线程和较少的内存进行扩展。这使应用程序在负载下更具弹性,因为它们以更可预测的方式扩展
这点可以说是他们的共性吧。
在我看来优缺点也各有千秋:
vert.x 简单便捷,但是spring社区很活跃并且有很多现成的东西
希望有大佬能够在评论区进行补充
以上是 什么是反应式编程?什么是响应式编程? 的全部内容, 来源链接: utcz.com/z/512929.html