服务实时性能分析功能依赖于服务开通性能分析类插件完成。 Rainbond目前默认提供了支持HTTP协议和Mysql协议的性能分析插件供用户使用。
我们将所有类型的服务的性能情况用三个指标来衡量:
响应时间也称为延迟,服务一般工作于网络通信的应用层,比如http、mysql、redis、grpc等。服务每次处理一次客户端请求的用时即响应时间。如果我们从网络报文的维度来衡量的话即请求报文第一个包到达到响应报文的第一个包发出中间的时间。
吞吐率也称为通讯量,即服务在单位时间内处理请求的次数。
错误有显性错误(比如HTTP 500错误)和隐性错误(比如HTTP返回200然而业务是错误的),这里我们主要关注显形错误,每一种通信协议都有标准的错误类型,比如mysql有查询语句错误。错误率正常情况下与服务的饱和度有密切关系。
综上所述,实现性能分析时我们有两种思路,一种是在ServiceMesh网络中,代理端会根据不同的协议汇报三类指标,第二种是目前使用的方式,性能分析插件通过旁路的方式监听服务的网络通信,从而直接分析服务上述指标。
性能分析数据持久化的存储于Rainbond monitor组件中,供给客户端查询。在服务监控页面中,我们除了展示监控历史数据以为,还实时的展示http和mysql的请求情况,比如mysql请求的sql语句执行情况。这对于用户进行精细化挑优提供了一个直接的指引。
TODO列表中我们计划支持grpc协议、redis协议、mongodb协议的性能分析。