spark lisenter的设计方案?目的是啥?能干什么?怎么和其它组件解耦合?
需求背景任务监控的需求:人对于未知的、不可见的事务总是充满恐惧。对于集群中运行的任务,希望获取运行过程中的状态信息,用户追踪、可视化运行过程中的细节;
作业优化:程序优化是很正常的事情,例如运行时间过程我们会优化性能,消费数据堆积我们会考虑增加并行度等;运行的中间状态数据可以用于反向优化作业。
设计目标异步执行;可扩展;松耦合
设计方案无论什么问题,第一时间想到的应该是:有没有现成的方法论,前人有没有总结出什么可用的经验或者范式。在软件工程领域,经验或者范式以“设计模式”来定义和规范,打开任何优秀的框架源码,可以看到许许多多的设计模式。设计模式来自于实际生产中的总结,最终也应该应用到实际生产中去促进可扩展、松耦合软件的生产。监控系统在实现上是有通用的设计模式作为参考的,这个设计模式就是:监听者模式。
设计模式-监听者模式:
定义了主题和观察者之间一对多依赖,当主题状态发生变化时,依赖的所有观察者将会收到通知。对于消息的通知,有两种实现方式:主题push和观察者pull。
对于push模式,主题中有三个不可缺



