关于workerman-json-rpc接口不清楚做什么用的

codeMan

关于workerman-json-rpc接口不清楚做什么用的?

在项目中使用workerman-json-rpc,但是在启动 集成了统计监控模块,发现有端口不清楚的地方,还请大侠赐教。

[attach]167[/attach]

上面红框的接口是不太明白,接口的工作流程,也不清楚具体的作用。

3445 4 0
4个回答

walkor 打赏

先说下统计原理:

workerman_json_rpc 自带一个分布式统计系统http://www.workerman.net/workerman-statistics,用来统计一些系统接口调用情况。
例如 请求量、耗时、成功率、错误日等等

统计上报流程是:
json_rpc处理每个请求都会记录请求调用时刻、处理耗时、是否成功、出错日志然后将这次请求的统计数据以udp的方式上报给本地的一个StatisticWorker进程(55656端口),StatisticWorker进程收到本地各个json-rpc进程的请求上报数据后在内存中做整体统计(总调用量、整体耗时、总失败量、失败日志),内存中的统计数据会每分钟(或者缓存占用内存量到达一定值)写入磁盘。

统计数据查询流程:
浏览器访问任意一台json-rpc服务器的55757端口,这个端口是http协议的webserver端口。
然后webserver会根据请求类型去各个json-rpc服务器的tcp的55858端口(statisticProvider进程),statisticProvider进程会把本地StatisticWorker进程写入磁盘的统计数据返回给webserver。这样webserver就有了所有服务器的统计数据,然后做汇总展示。这里就是分布式统计系统实现的主要原理。也就是只要访问一台json-rpc的http端口,就能在浏览器中看到整个局域网的所有json-rpc服务器整体请求情况。

如何发现局域网内各个json-rpc服务器?
统计系统中单独启动了一个55858的udp端口(StatisticFinder进程),用来接收webserver的udp广播,当在统计界面中点击探测数据源时,webserver会向本地局域网发送一个55858端口udp广播,StatisticFinder进程收到这个udp广播后会回复一条udp数据,告知广播者自己的存在,这样webserver上就知道了局域网内所有json-rpc的服务器ip,就知道了所有的statisticProvider的ip和端口(默认55858),也就可以得到整个局域网集群的统计数据了。

总结:
1、StatisticWorker 是接收本地udp上报的进程,并把上报数据定时写入磁盘
2、statisticProvider是提供本地磁盘统计数据的服务,用于集中展示
3、StatisticFinder是用来接收udp广播探测的进程,用于发现局域网内的json-rpc服务器
4、StatisticWeb是用来展示统计的webserver

  • 暂无评论
walkor 打赏

statisticProvider 和 StatisticFinder都是监听55858端口,但是因为他们使用的传输层协议(tcp/udp)不同,所以监听同一55858端口是可以的。

  • 暂无评论
codeMan

受教了

  • 暂无评论
hamdon

学习了。。

  • 暂无评论
年代过于久远,无法发表回答
×
🔝