[单向数据流的启发] -- 大型系统异常如何从设计上解决问题的快速排查

February 13, 2017
引子:

https://www.lichenfan.com/amp

http://www.lichenfan.com/amp

CloudFlare apologizes for Telia screwing you over

CloudFlare figured out how to make the Web one second faster

    2016年末在开发新版本前端项目的时候,  使用了vue+[vue ui-components(h2w)]+vuex的时候, 对单向数据流的概念有了深刻的理解。
    今天凌晨醒来发现之前写的<<任务流单件可编程系统>>的设计和这个也非常的相像,
    共同的特点:
    每个数据实例在系统中的流向是单向的,数据是闭环的,由全局的系统数据持久化模块来通知分发数据的变化。
    区别:
    - 任务流单件系统的数据流向是流经每个子系统或组件的。
    - 前端项目的数据流经是单独的子系统实现,有全局的数据存储系统(有计算并combo数据的能力),子系统订阅接受纯数据或计算数据的变化并响应。

任务流单件可编程系统

从前端单向数据流说起

面向数据流的设计在很早就有结构化设计方法 (数据流图)。 是一套完整的程序设计实现方法论。

我在这里只是描述我的想法,是否可行?落地的很多细节能力我并不具备。

那如何做到大型系统的异常快速排查呢? 这个系统应该满足引子里面说的几个单向数据流的要素。

  - 数据流是自顶向下的,数据流不能回溯,可以构成闭环。
  - 流经的模块或者独立子系统拥有订阅数据变化的能力
  - 子系统和模块需要和全局数据系统部署到一起,尽量做到0延迟反映数据变化。
  - 全局数据系统分布式的同步尽量做到0延迟。 

这样来看,跨网络和跨机房的这种服务是无法使用这种设计的!!!