一个统计平台的实现

最近有个需求是统计各个项目接口的请求数据,包括接口的返回状态码(成功率)、uri、请求时间、响应时间、ip等数据。有一个要求就是不能影响使用接口的业务。

这个项目主要分四个部分。

1、server,响应客户端的请求,过滤相关数据放到redis。请求量可能过大,会导致server挂掉,所以启用了3个进程来处理请求,每个server启动了相应的worker数量和task数量;server采用了php的swoole扩展的udp,工作流程是请求到达server,server分配请求到worker,worker响应请求,worker启动task处理数据,(这个业务实际上没有必要启动task功能,但是启动task不影响)

2、script,为防止redis数据量过大,每天有4个定时任务,定时处理redis的数据,并插入数据库,数据库采用分表技术,每3个月分一张表,分表任务交给脚本初始化时处理。

3、web,管理各个应用,监控server的使用情况,查看各接口数据,待做

4、sdk,提供客户端使用,采用stream流的方式发送udp请求,这里使用udp的原因是因为无需等待服务端的响应,但是为了防止服务挂掉,sdk采用轮训并且有超时重试机制,这个端口没有发送成功,将更换另一个端口尝试,如果三个端口都不行,则发送失败。

下面先讲一下客户端的接入。

1、数据采集

ip、请求时间:php的$_SERVER会有个REQUEST_TIME_FLOAT精确到毫秒级记录请求的到达时间

状态码:一般api项目都会有统一出口,所以在统一出口处采集状态码并调用sdk,并发送数据到server

响应时间:有请求时间的情况下,这个值就不难获取

-------------------------------------------------------------------

这个项目暂时投入在一个项目上使用,以后继续完善,其他点以后继续补  2016.11.01

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值