当前位置: 首页 > article >正文

swoole方案 实时监控大盘推送中心

业务服务--写--Kafka---Swoole消费--WebSocket推--浏览器ECharts实时刷新 Kafka 当缓冲层业务打点不管推送快不快Swoole 从 Kafka 拉数据有新数据就推给所有看板页面。---代码?php// composer require longlang/phpkafkarequire__DIR__./vendor/autoload.php;uselonglang\phpkafka\Consumer\Consumer;uselonglang\phpkafka\Consumer\ConsumerConfig;uselonglang\phpkafka\Producer\Producer;uselonglang\phpkafka\Producer\ProducerConfig;// 存所有在线的看板连接$clientsnewSwoole\Table(116);$clients-column(fd,Swoole\Table::TYPE_INT);$clients-create();$servernewSwoole\WebSocket\Server(0.0.0.0,9502);$server-set([worker_num2]);// worker 0 启动时跑 Kafka 消费者协程$server-on(workerStart,function($server,$workerId)use($clients){if($workerId!0)return;Swoole\Coroutine::create(function()use($server,$clients){$confignewConsumerConfig();$config-setBrokers(127.0.0.1:9092);$config-setTopic(metrics);$config-setGroupId(dashboard);$config-setAutoCommit(true);$consumernewConsumer($config);while(true){$msg$consumer-consume();if(!$msg){Swoole\Coroutine::sleep(0.05);continue;}// 广播给所有看板foreach($clientsas$row){if($server-isEstablished($row[fd])){$server-push($row[fd],$msg-getValue());}}$consumer-ack($msg);}});});$server-on(open,fn($s,$req)$clients-set($req-fd,[fd$req-fd]));$server-on(close,fn($s,$fd)$clients-del($fd));$server-on(message,fn()null);// 只推不收$server-start();---模拟打点另起一个脚本往 Kafka 写数据?php// producer.php 模拟业务服务打点require__DIR__./vendor/autoload.php;uselonglang\phpkafka\Producer\Producer;uselonglang\phpkafka\Producer\ProducerConfig;$confignewProducerConfig();$config-setBrokers(127.0.0.1:9092);$producernewProducer($config);while(true){$datajson_encode([timedate(H:i:s),cpurand(10,90),memrand(30,80),qpsrand(100,9999),]);$producer-send(metrics,$data);echo发送:$data\n;sleep(1);}---前端 ECharts直接浏览器开!DOCTYPEhtmlscript srchttps://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js/scriptdiv idchartstylewidth:100%;height:400px/divscriptconstchartecharts.init(document.getElementById(chart));consttimes[],cpuData[],qpsData[];chart.setOption({xAxis:{type:category,data:times},yAxis:[{type:value,name:CPU%},{type:value,name:QPS}],series:[{name:CPU,type:line,data:cpuData,smooth:true},{name:QPS,type:bar,data:qpsData,yAxisIndex:1},]});constwsnewWebSocket(ws://localhost:9502);ws.onmessage({data}){constdJSON.parse(data);times.push(d.time);cpuData.push(d.cpu);qpsData.push(d.qps);if(times.length30){times.shift();cpuData.shift();qpsData.shift();}// 只显示最近30条chart.setOption({xAxis:{data:times},series:[{data:cpuData},{data:qpsData}]});};/script---解释 Kafka 在中间的意义业务服务打点只管往 Kafka 写不管谁在看板。Swoole 挂了重启Kafka 里的数据还在不丢。业务和推送完全解耦Swoole\Coroutine::create在 worker 进程里开一个协程跑 Kafka 消费不阻塞 WebSocket 处理。Kafka 没消息时sleep(0.05)让出CPU有消息立刻处理 只让 worker0消费if($workerId!0)return不然每个 worker 都消费同一条消息广播N遍$consumer-ack($msg)手动提交 offset告诉 Kafka 这条消息处理完了下次不用再发。放在广播之后保证推出去了再 ack Swoole\Table 存 fd共享内存worker0的消费协程能读到 worker1接进来的客户端连接---跑起来# 1. 启动 Kafka本地测试用 dockerdocker run-d-p9092:9092apache/kafka# 2. 启动推送服务php server.php# 3. 启动打点模拟php producer.php# 4. 浏览器打开 index.html看折线图实时跳动

相关文章:

swoole方案 实时监控大盘推送中心

业务服务 --写--> Kafka ---> Swoole消费 --WebSocket推--> 浏览器ECharts实时刷新Kafka 当缓冲层&#xff0c;业务打点不管推送快不快&#xff0c;Swoole 从 Kafka 拉数据&#xff0c;有新数据就推给所有看板页面。---代码<?php// composer require longlang/php…...

高效实现Windows任务栏个性化的5个极简方案:轻量级透明化工具TranslucentTB全指南

高效实现Windows任务栏个性化的5个极简方案&#xff1a;轻量级透明化工具TranslucentTB全指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB …...

MelonLoader终极指南:3分钟掌握Unity游戏模组加载器完整使用技巧

MelonLoader终极指南&#xff1a;3分钟掌握Unity游戏模组加载器完整使用技巧 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader Me…...

HY-Motion 1.0保姆级教程:解决CUDA OOM、Prompt截断等常见问题

HY-Motion 1.0保姆级教程&#xff1a;解决CUDA OOM、Prompt截断等常见问题 1. 前言&#xff1a;为什么需要这篇教程 你是不是也遇到过这样的情况&#xff1a;好不容易下载了HY-Motion 1.0这个强大的3D动作生成模型&#xff0c;准备大展身手&#xff0c;结果一运行就遇到CUDA内…...

lychee-rerank-mm惊艳效果集:Qwen2.5-VL底座下BF16高精度打分可视化

lychee-rerank-mm惊艳效果集&#xff1a;Qwen2.5-VL底座下BF16高精度打分可视化 想象一下&#xff0c;你有一个包含数百张图片的图库&#xff0c;想快速找出所有“夕阳下的海边剪影”照片。传统方法要么靠记忆&#xff0c;要么一张张翻看&#xff0c;费时费力。现在&#xff0…...

5分钟精通:开源内容解锁工具Bypass Paywalls Clean完全指南

5分钟精通&#xff1a;开源内容解锁工具Bypass Paywalls Clean完全指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的数字时代&#xff0c;学术文献、专业报道和深度分…...

用ChatTTS打造你的专属AI语音助手:从音色定制到批量合成音频的完整工作流

用ChatTTS打造你的专属AI语音助手&#xff1a;从音色定制到批量合成音频的完整工作流 在内容创作领域&#xff0c;音频正成为越来越重要的媒介形式。无论是知识付费课程的讲解、播客节目的制作&#xff0c;还是智能设备的语音交互&#xff0c;一个稳定、个性化的语音合成系统都…...

软考-信息系统项目管理师-项目风险管理-知识点及考点预测

本章考情分析&#xff1a;项目风险管理是十大知识领域中“理论工具计算”结合最紧密的章节之一。历年综合知识选择题约占3-5分&#xff0c;案例分析几乎必考1道题&#xff08;10-20分&#xff09;&#xff0c;论文也是高频方向。“风险是未来的不确定性&#xff0c;问题已经是过…...

LabelMe高级应用:如何利用AI辅助标注提升效率300%

LabelMe高级应用&#xff1a;如何利用AI辅助标注提升效率300% LabelMe是一款强大的图像标注工具&#xff0c;支持多边形、矩形、圆形、线条、点和图像级标记等多种标注方式。对于AI训练数据准备工作而言&#xff0c;高效的标注工具能显著提升工作流效率。本文将详细介绍如何利…...

73.基于matlab的weber能量法求解齿轮时变啮合刚度的能够跑出刚度图,通过求解轮齿部分...

73.基于matlab的weber能量法求解齿轮时变啮合刚度的能够跑出刚度图&#xff0c;通过求解轮齿部分变形、基体变形及局部接触变形这三部分的变形&#xff0c;进而求得综合弹性变形&#xff0c;最终求出时变啮合刚度 程序已调通&#xff0c;可直接运行齿轮传动系统的时变啮合刚度计…...

手把手教你用Hive SQL搞定电影评分数据分析(附完整数据集和避坑指南)

手把手教你用Hive SQL搞定电影评分数据分析&#xff08;附完整数据集和避坑指南&#xff09; "为什么《肖申克的救赎》常年霸占IMDb Top 250榜首&#xff1f;"这个问题背后隐藏着海量用户评分数据的秘密。作为数据分析师&#xff0c;我们如何从原始评分数据中挖掘出这…...

UCF-SST-CitySim数据集:面向智能交通研究的高精度轨迹数据解决方案

UCF-SST-CitySim数据集&#xff1a;面向智能交通研究的高精度轨迹数据解决方案 【免费下载链接】UCF-SST-CitySim1-Dataset 项目地址: https://gitcode.com/gh_mirrors/ucf/UCF-SST-CitySim-Dataset 如何解决复杂道路场景的数据缺失问题&#xff1f;——CitySim的价值定…...

【实战解析】从期末试题到工程实践:摄影测量核心概念与计算全攻略

1. 从试卷到工地&#xff1a;摄影测量核心概念实战指南 第一次接触航测项目时&#xff0c;我盯着任务书上的"相机选型""航线规划"等要求完全懵了。这和期末考试那些名词解释、计算题有什么关系&#xff1f;直到在工地摔打半年后才明白&#xff0c;那些看似…...

w3x2lni:魔兽地图跨版本转换的技术架构与实战指南

w3x2lni&#xff1a;魔兽地图跨版本转换的技术架构与实战指南 【免费下载链接】w3x2lni 魔兽地图格式转换工具 项目地址: https://gitcode.com/gh_mirrors/w3/w3x2lni 一、价值定位&#xff1a;破解魔兽地图版本兼容难题 魔兽争霸III地图开发者长期面临版本碎片化挑战&…...

OpenClaw安全指南:百川2-13B模型权限管控与敏感操作防护

OpenClaw安全指南&#xff1a;百川2-13B模型权限管控与敏感操作防护 1. 为什么需要安全防护机制 去年冬天的一个深夜&#xff0c;我的OpenClaw经历了一次"惊魂时刻"。当时我让AI助手整理财务表格&#xff0c;结果它误将包含个人银行账号的临时文件上传到了云存储。…...

中集集团2025年经营现金流翻倍增长至185亿,有息负债下降约48亿元

据3月27日年报显示&#xff0c;2025年中集集团经营质量持续提升&#xff0c;经营活动产生的现金流量净额大幅增长99.9%至185亿元&#xff0c;反映出主营业务回款能力增强与运营效率改善。与此同时&#xff0c;公司持续推进资产负债结构优化&#xff0c;年末有息债务规模下降至3…...

先瑞达2025年年报:营收同比增长20.7% 双引擎格局成型迎高质量增长

3月26日晚间&#xff0c;先瑞达医疗&#xff08;6669.HK&#xff09;正式发布截至2025年12月31日的年度业绩报告。报告期内&#xff0c;公司紧扣血管介入治疗领域核心赛道&#xff0c;以技术创新为内核、以全球化布局为抓手、以降本增效为支撑&#xff0c;实现经营业绩的稳健增…...

vscode-drawio扩展依赖更新:安全高效地管理第三方库

vscode-drawio扩展依赖更新&#xff1a;安全高效地管理第三方库 【免费下载链接】vscode-drawio This unofficial extension integrates Draw.io (also known as diagrams.net) into VS Code. 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-drawio vscode-drawio…...

League-Toolkit英雄联盟工具集启动故障解决方案

League-Toolkit英雄联盟工具集启动故障解决方案 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Toolkit作为一款基于LCU A…...

突破Windows多显示器显示壁垒:SetDPI重新定义显示体验

突破Windows多显示器显示壁垒&#xff1a;SetDPI重新定义显示体验 【免费下载链接】SetDPI 项目地址: https://gitcode.com/gh_mirrors/se/SetDPI 在当今多设备协同工作的时代&#xff0c;显示器已成为我们与数字世界交互的重要窗口。然而&#xff0c;当程序员小李将笔…...

Thorium浏览器:重新定义现代网页浏览性能标准

Thorium浏览器&#xff1a;重新定义现代网页浏览性能标准 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Windows and MacOS/Raspi/Android/Special builds are in different repositories, links are towards the top of the README.md. …...

Rainmeter皮肤主题用户行为分析:使用数据统计

Rainmeter皮肤主题用户行为分析&#xff1a;使用数据统计 【免费下载链接】rainmeter Desktop customization tool for Windows 项目地址: https://gitcode.com/gh_mirrors/ra/rainmeter Rainmeter作为一款强大的Windows桌面自定义工具&#xff0c;允许用户通过皮肤主题…...

PvZ Toolkit:植物大战僵尸终极修改器完全指南

PvZ Toolkit&#xff1a;植物大战僵尸终极修改器完全指南 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit PvZ Toolkit是一款专为植物大战僵尸PC版设计的综合性游戏修改工具&#xff0c;通过内存读写…...

ViGEmBus虚拟手柄驱动:Windows内核级游戏控制器模拟核心技术解析与应用指南

ViGEmBus虚拟手柄驱动&#xff1a;Windows内核级游戏控制器模拟核心技术解析与应用指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus作为Windows…...

ONLYOFFICE Docs与Nextcloud Calendar集成:打造高效私有云日程协作平台

ONLYOFFICE Docs与Nextcloud Calendar集成&#xff1a;打造高效私有云日程协作平台 【免费下载链接】DocumentServer ONLYOFFICE Docs is a free collaborative online office suite comprising viewers and editors for texts, spreadsheets and presentations, forms and PDF…...

JPEXS Free Flash Decompiler与Web3.0存储:去中心化SWF文件管理的终极指南

JPEXS Free Flash Decompiler与Web3.0存储&#xff1a;去中心化SWF文件管理的终极指南 【免费下载链接】jpexs-decompiler JPEXS Free Flash Decompiler 项目地址: https://gitcode.com/gh_mirrors/jp/jpexs-decompiler JPEXS Free Flash Decompiler是一款功能强大的开源…...

MangoHud资源占用实时监控:图表工具终极指南

MangoHud资源占用实时监控&#xff1a;图表工具终极指南 【免费下载链接】MangoHud A Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load and more. Discord: https://discordapp.com/invite/Gj5YmBb 项目地址: https://gitcode.com/gh_mirrors/ma/…...

Rainmeter社区贡献者奖励计划:实物与虚拟奖励

Rainmeter社区贡献者奖励计划&#xff1a;实物与虚拟奖励 【免费下载链接】rainmeter Desktop customization tool for Windows 项目地址: https://gitcode.com/gh_mirrors/ra/rainmeter Rainmeter作为一款强大的Windows桌面自定义工具&#xff0c;其蓬勃发展离不开全球…...

如何安全升级Cura软件版本:从风险规避到价值创造的全流程指南

如何安全升级Cura软件版本&#xff1a;从风险规避到价值创造的全流程指南 【免费下载链接】Cura 3D printer / slicing GUI built on top of the Uranium framework 项目地址: https://gitcode.com/gh_mirrors/cu/Cura UltiMaker Cura作为全球最受欢迎的3D打印切片软件&…...

HP-Socket版本发布后用户反馈分析:情感、主题与趋势

HP-Socket版本发布后用户反馈分析&#xff1a;情感、主题与趋势 【免费下载链接】HP-Socket High Performance TCP/UDP/HTTP Communication Component 项目地址: https://gitcode.com/gh_mirrors/hp/HP-Socket HP-Socket作为一款高性能TCP/UDP/HTTP通信组件&#xff0c;…...