写一个合适的监控运维系统-03-高效的监控后台

什么是tornado

tornado 是一个python写的web服务器, 底层使用epoll, 非阻塞运行, 使得每秒能处理上千的请求, 同时使用nginx 与之配合,可以非常方便的扩容. 同时tornado也是一个理想的web框架, 帮我们封装了大量的web操作.

更好的tornado-异步

tornado 向我们暴漏了ioloop, 熟悉libevent和libuv的小伙伴, 就知道这个东西有多么的牛逼! 这就意味着我们可以任意监听一个socket(按理来说, 不管是socket, 还是文件等fd, 都应该可以监听到, 我测试了socket, 别的没有测试), 这样我们使用tcp建立连接,从而拜托那些只能用http的限制. 使得我们的程序会更加高效. 这也是为什么tornado可以与zmq兼容.

zmq通信-tornado的好基友

zmq是一套简单高效的通信接口, pyzmq python版本. zmq同时支持tcp, inproc, ipc等通信模式, 我们可以用zmq实现主机间的通信, 进程间通信, 线程间通信等. (zmq和tornado用的时候还是有些坑, 这里我放个demo

后端架构图

一个高效的后端设计就出来了, 后端使用多进程模式, 进程间使用zmq进行通信, 以后如果我们需要扩展业务, 只需要再次扩展一个进程, 就可以无缝的接入了! 同时如果以后我们废弃掉zabbix, 或是zlogger, 也只需要关闭对应的进程就好了!

websocket 消息及时送达

对于一个监控系统来时, 第一时间相应永远是最重要的. 这里我们全部使用的是推送的模式, 当服务器发生故障, 会第一时间推送到后台, 后台也会立即通过websocket推送给对应的用户!

总结

平常写C++服务器的时候, 我们总会讲究使用事件驱动模型, 构建一个高效稳定的网络服务器. 这个监控后台也是基于事件驱动的思想而设计的. 个人认为也是一个高效的监控后台了.

发表评论

电子邮件地址不会被公开。 必填项已用*标注