步入编程的学习时,总会有新的知识与新的技术出现在我们眼前,在眼花缭乱的同时,我们也会产生很多疑问,就比如作为热门的响应式来说,那么响应式编程究竟是什么?
从网站上获得的资料我们知晓了其是一款使用异步数据流编程的响应式编程思想。
Reactive Programming是基于观察者模型的这是大家的共识,它提供了非阻塞、异步的特性,便于处理异步情景,从而避免回调地狱和突破Future的局限性: 难以组合。
在reactiveX中,对好几个语言提供了api库,该库扩展了观察者模式,支持基于数据或事件的驱动。允许声明式组合观察者序列。将同步编程和异步编程抽象成统一。
异步编程和同步编程在代码中的体现可以如下表体现。不同于传统的pull型的,响应式编程通常采用push型的数据传输,由生产者控制消费速度,但当消费者消费速度不足时,也能反过来提示生产者降低生产速度(backPressure),backPressure将在下文阐述。
响应式编程通常带有函数式的思想,但这是用来简化面向对象语法臃肿性的,响应式编程的核心在于Reactive,只是带有了部分的Functional的特性,更不是Functional Reactive Programming,这是完全不同的东西。
顺便我们来讲讲响应式宣言是什么,响应式系统又应该具有什么特性。
当一个系统具有即时响应性(Responsive)、回弹性(Resilient)、弹性(Elastic)以及消息驱动(Message Driven)。 我们称这样的系统为反应式系统(Reactive System)。
响应式编程的价值在于1. 易于编写维护(特别是异步编程) 2. 及时响应。
什么是及时响应? 及时响应就是不管是出了什么问题,或断电、或网络抖动、或代码bug,都能及时做出响应,提供足够的可用性。
响应式宣言中将异常也看做一种消息来简化对错误的处理,其中错误可以简单看成看做各种Exception。
那么什么是弹性,什么是回弹性呢?
弹性是指不同负载下,系统的吞吐量、响应性没有什么区别。响应式通过伸缩算法,使系统没有资源争用点和中央瓶颈。
回弹性是指当系统出现失败时,例如断电、硬件故障、资源耗尽等情况,通过复制、 遏制、 隔离以及委托来保证依然具有即时响应性。
虽然看起来很繁琐与书面化,但这些知识对于我们学好响应式还是有很多帮助的,毕竟一起贵于坚持,大家加油。