go语言的goroutine(协程),大大降低了并发编程的门槛,正是这种高并发的特性,一个机房只要部署一个监控程序就可以获取海量的监控数据。由于是并发编程,监控处理时间的延迟小且不随监控实例数的增加而增加。下面是监控程序goroutine分配流程:
程序设计了两种运行模式server和client。server模式,一个机房部署一个程序采集所有DB实例的监控数据。client模式,一个DB主机实例部署一个程序
采集本机的所有DB实例监控数据。上面的流程图是server模式的goroutine分配流程图。
简单的描述就是:
1、启动程序为每一个DB实例分配一个goroutine,并启动一个goroutine主线程阻塞,保持其它goroutine正常进行。
2、循环统计1分钟、60分钟粒度的监控数据和每分钟的状态检测,并将存储监控数据。
3、获取每个items监控值、归档1分钟、60分钟的数据,检测状态等都由单独的goroutine进行,将goroutine一层层分配到最细尽量发挥并发编程的优势。
监控MySQL从数据采集到前端展示(2)-go并发流程设计
----------------本文结束 感谢阅读----------------
- : http://www.azjoy.com/2016/07/30/monitormysql02/
- : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!