响应式编程(Reactive Programming):自动恢复的能力(Resilience)
传统的应用在处理错误时
- 粒度太粗,出现错误时,整个服务终止,然后做失效恢复,自动化一点的比如集群某一节点失效之后的Failover
- 粒度太细,出现错误时,在错误出现的位置处理,典型的,比如根据函数返回值做判断。Java中的异常处理虽然可以交给调用堆栈的上级对象方法处理,仍然只能在有限的范围内处理,不能异步处理,而且将正常的应用逻辑和错误处理混在一起。
响应式编程要求应用快速响应错误,并快速的自动恢复,不影响业务逻辑的正常运作。这要求将错误也作为一种事件抛出,交给Supervisor角色去异步处理,而正常的业务逻辑与Supervisor是分开的,不会受到影响。把错误作为一等国民对待,对错误建模,在应用设计过程中一开始就考虑错误处理。