Linux C/C++网络编程实战-陈硕-笔记22-实现前要考虑的问题

在这里插入图片描述
在这里插入图片描述

要如何实现这样一个 procmon 程序。

从框架的设计上我们可以采用(主动式监控的)侵入式设计,也可以使用(被动式监控的)非侵入式设计,同时针对web页面中的绘图功能也有多种解决方案。

  • 侵入式 or 非 侵入式:(Intrusive or non-intrusive)

    • 侵入式:将程序做成一个库,被监控程序主动使用该库暴露其内部状态。
      优点:可以暴露其内部数据,例如运行期间收到多少次请求、成功/失败次数、响应情况、延迟等。因为侵入式监控程序,和被监控的程序在同一个地址空间中,它的权限和被监控的进程是一样的。因此,侵入式的监控程序可以获得的信息也跟多。
      缺点:需要知道目标程序的源码,同时库与目标程序在语言上的适配情况也需要考虑。
    • 非侵入式:直接从操作系统提供的接口获取(/proc/pid…)
      优点:可以监控任何程序,无需修改目标程序的源码进行重新编译。
      缺点:无法探查目标程序内部状态,只能从操作系统角度观察程序的总体资源使用情况。
  • 如何绘图

    • 方案一:工具只收集数据,将图像绘制交给专门的绘图服务器。
      <img src=https://chart/?data=1,0.9,0.8,0.2>
      我们在web上嵌入一个外链,通过访问该链接返回一个绘制好的图片。
    • 方案二:返回json数据,通过js动态绘制。jqPlot,flot
      优点,不只是单纯的图片,通过鼠标的移动产生交互,体验更好。
    • 方案三:直接让程序生成图片,然后返回到web上。

      优点:可以独立使用,没有额外依赖,浏览器兼容也更容易。
      以上从一些技术点上出发进行设计上的分析,从整体实现上来看procmon实际上是一个定制的专用HTTP服务器,我们的业务逻辑实际上是嵌入到这个HTTP服务器进程中的。

这里procmon的功能只是一个单纯的进程监控程序,实现上最好资源占用较少、并且出于设计方面的的考虑采用了一体化的设计,没有使用现有的http服务器。除此之外,我们也可以使用一些轻量级的HTTP服务器如Nginx或使用CGI、FCGI等实现也是可以的。

需要说明的是,示例中的 procmon 代码使用非侵入式设计,图片绘制采用的是本地进程生成图片的方式。

代码路径:muduo/examples/procmon/*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值