响应式编程(Reactive Programming)是什么?

简介

在计算中,响应式编程(Reactive Programming)是一种面向数据流和变化传播的声明式编程范式。

这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。

在响应式编程方式中,上一个任务执行结果的反馈就是一个事件,这个事件的到来将会触发下一个任务的执行。

处理和发出事件的主体称为 Reactor,它可以接受事件并处理,也可以在处理完事件后,发出下一个事件给其他 Reactor。两个 Reactors 之间没有必然的强耦合,他们之间通过消息管道来传递消息。

示例

在命令式编程环境中, a = b + c a=b+c a=b+c表示将表达式的结果赋给a,而之后改变b或c的值不会影响a。但在响应式编程中,a的值会随着b或c的更新而更新。

Excel就是响应式编程的一个例子。单元格可以包含字面值或类似"=B1+C1"的公式,而包含公式的单元格的值会依据其他单元格的值的变化而变化 。

实现

通常 Reactor 的数量可以是预先定义的,因为一个系统,我们通常可以约束它处理哪些预定义的事件,比如有处理网络连接的 Reactor,处理数据存储的 Reactor,处理日志收集的 Reactor 等等。

而错误(未定义)事件则可以单独放在一个专门处理错误或异常的 Reactor 中。通过事件管理器,每个 Reactor 可以根据要发出或者接收的消息,即时地创建一个线程/协程去执行响应的操作。

发出和接收消息可以根据业务的复杂度,分开单独线程,也可以放在一个线程。这样的设计架构简单而清晰。

实现响应式编程最核心的是线程和消息管道。线程用于侦听事件,消息管道用于 Reactor 之间通信不同的消息。与他们相关的是事件管理器用于注册、注销事件,而消息分配器则会根据消息类型分发。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值