响应式编程入门介绍

前言:在学习的过程中,能在许多地方见到响应式编程的影子,Java中的Reactor,服务器部署的Nginx,Vert.x框架等等.

由此可见,响应式编程该思想值得我们学习一下

1.什么是响应式编程

响应式编程的典范---电子表格

电子表格是响应式思想的典范

在Excel中,我们通常会使用公式来建立起不同格之间的联系

例如:

当该表格的A值发生改变时,会影响到B格,再影响到C格

将A列的数据想象成一个数据流,每一个数据的到达都会触发一个事件,右侧的单元格则会同时改变

这些就是反应式的核心思想

维基百科对响应式的定义如下:

响应式编程 (reactive programming) 是一种基于数据流 (data stream) 和 变化传递 (propagation of change) 的声明式 (declarative) 的编程范式。

由此可见响应式的特点有这些:

  1. 数据流: 基于数据流模型,提供静态数据流和动态数据流的处理方法,并且允许复用和同时接入多个订阅者。
  2. 变化传递: 以一个数据流作为输入,再经过一些处理穿给其他数据流,发布给各个订阅者
  3. 异步编程: 传统的编程思想是同步的,线性的,每次只能处理一个任务,并且必须等任务完成后才能执行下一个,而响应式则可以异步处理,不用死等,能够拥有更高的性能,更高的效率

2.响应式宣言

2013年6月,Roland Kuhn等人发布了《响应式宣言》, 该宣言定义了反应式系统应该具备的一些架构设计原则。符合反应式设计原则的系统称为反应式系统。根据反应式宣言, 反应式系统需要具备即时响应性(Responsive)、回弹性(Resilient)、弹性(Elastic)和消息驱动(Message Driven)四个特质,以下内容摘自反应式宣言官网:

  1. 即时响应性(Responsive)。系统应该对用户的请求即时做出响应。即时响应是可用性和实用性的基石, 而更加重要的是,即时响应意味着可以快速地检测到问题并且有效地对其进行处理。
  2. 回弹性(Resilient)。 系统在出现失败时依然能保持即时响应性, 每个组件的恢复都被委托给了另一个外部的组件, 此外,在必要时可以通过复制来保证高可用性。 因此组件的客户端不再承担组件失败的处理。
  3. 弹性(Elastic)。 系统在不断变化的工作负载之下依然保持即时响应性。 反应式系统可以对输入负载的速率变化做出反应,比如通过横向地伸缩底层计算资源。 这意味着设计上不能有中央瓶颈, 使得各个组件可以进行分片或者复制, 并在它们之间进行负载均衡。
  4. 消息驱动(Message Driven)。反应式系统依赖异步的消息传递,从而确保了松耦合、隔离、位置透明的组件之间有着明确边界。 这一边界还提供了将失败作为消息委托出去的手段。 使用显式的消息传递,可以通过在系统中塑造并监视消息流队列, 并在必要时应用回压, 从而实现负载管理、 弹性以及流量控制。 使用位置透明的消息传递作为通信的手段, 使得跨集群或者在单个主机中使用相同的结构成分和语义来管理失败成为了可能。 非阻塞的通信使得接收者可以只在活动时才消耗资源, 从而减少系统开销。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值