尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
机器人租赁系统类擎天租平台技术栈的落地实录:Spring Cloud + Vue + MQTT
一、服务划分清单一张表说清每个服务干什么先上全景。后端基于 Spring Cloud AlibabaNacos Sentinel Seata 按需服务划分和职责如下服务名核心职责对外协议独立存储gateway-service统一入口、按端鉴权、限流HTTP/WebSocket-goods-service机型库、设备档案、定价策略HTTPMySQL goods 库schedule-service档期预占、冲突检测、日历HTTPMySQL schedule 库 Redisorder-service订单状态机、签约编排、履约HTTPMySQL order 库payment-service收付、押金冻结、分账、免押HTTPMySQL pay 库iot-serviceMQTT 接入、设备影子、围栏告警MQTT HTTPTDengine Redisticket-service维修工单、纠纷处理HTTPMySQL ticket 库notify-service短信/订阅消息/邮件通知HTTP消费 MQMySQLauth-service统一认证、租户与权限HTTPMySQL三个划分原则一是按业务能力不按技术分层二是有独立伸缩诉求的先拆schedule 和 iot 是第一批三是服务数量克制——九个服务是服务五家租赁商时的规模起步阶段六个就够notify 和 ticket 可以先做成单体里的模块。Nacos 做注册中心和配置中心配置按服务名 租户标识双维度隔离租户级价格策略全部走配置下发改策略不发版。Sentinel 的流控规则针对档期接口单独配了热点参数限流以 deviceId 为参数维度单设备 QPS 20避免某台热门机型打爆整个服务。二、前端方案uni-app 一套代码跑三端用户端小程序 APP H5用 uni-app Vue3 TypeScript。不是无脑信一套代码多端运行而是先盘了端差异小程序是获客主入口审核和包体有约束APP 主要是商家调度员用需要蓝牙扫码、离线缓存H5 用于营销落地页和分享跳转。三端页面重合度实测约 75%剩下 25% 用条件编译消化// #ifdef MP-WEIXIN// 小程序专属订阅消息授权uni.requestSubscribeMessage({tmplIds:[ORDER_TMPL]})// #endif// #ifdef APP-PLUS// APP 专属蓝牙扫描设备 SN 码绑定constbleuni.requireNativePlugin(bluetooth-scanner)// #endif两条实战纪律页面层不写平台分支差异全部下沉到platform/适配层页面只调用统一接口公共组件库独立 npm 包管理避免多项目复制粘贴导致样式漂移。商家端管理后台是纯 Vue3 Element Plus 的 PC 端表单密度高、报表多和用户端彻底分开不强行复用。包体积控制上踩过一个坑小程序主包超过 2MB 审核受影响。最后把 echarts、地图 SDK 全部拆分包异步加载主包压回 1.6MB。三、MQTT 选型 EMQX规则引擎是真香但要会配设备接入为什么选 EMQX三个理由开源版功能足够_acl、认证、桥接都有、单节点十万级连接、最关键的是内置规则引擎能把大部分数据流转逻辑做成配置而不是代码。Topic 规划采用业务域/租户/设备/动作四段式robot/{tenantId}/{deviceId}/telemetry # 遥测上报QoS0 robot/{tenantId}/{deviceId}/status # 上下线状态QoS1 robot/{tenantId}/{deviceId}/cmd/down # 指令下发QoS1 robot/{tenantId}/{deviceId}/event # 异常事件告警QoS1规则引擎配置示例SQL 形式把遥测消息分流SELECTpayload.temp,payload.battery,clientid,topicFROMrobot///telemetryWHEREpayload.battery20命中规则后三个动作并行遥测数据写入 TDengineHTTP 服务、低电量事件投递 Kafka 供告警服务消费、设备最新状态更新到 Redis。规则引擎做了 80% 的数据流转Java 侧只剩业务语义处理iot-service 的核心代码量比预想少了近一半。三个必须注意的坑设备端断网重连风暴一次机房网络抖动2000 台设备同时重连EMQX 连接数峰值打满。解法是设备端重连加随机退避1-30s 抖动EMQX 侧开启连接速率限制QoS 别乱用遥测用 QoS0 就够丢了有下一条指令下发必须 QoS1 业务层幂等指令带 msgId 去重表。全 QoS1 会让 broker 持久化压力翻倍共享订阅做横向扩展多个 iot-service 实例消费同一 Topic 要用 EMQX 的共享订阅$share/g/robot///event否则每个实例都会收到全量消息告警重复发。四、部署拓扑与 CI/CD从提交到上线一条流水线生产环境 Kubernetes 部署中间件EMQX、RocketMQ、TDengine独立部署不走 K8s——有状态服务的运维复杂度和无状态服务不是一回事别硬塞进集群。开发者 push → GitLab MR Code Review → 流水线编译 → 单测覆盖率门禁 60%→ Sonar 扫描 → 构建镜像 → 部署测试环境 → 自动化接口测试 → 人工审批 → 滚动更新生产金丝雀 10% → 全量前端 uni-app 在流水线里按端分别构建小程序产物上传预览包给测试扫码APP 走云打包出安装包H5 直接发 CDN。MQTT 压测用 emqtt-bench 模拟 5 万设备连接 1000 msg/s 上报作为大版本前的固定回归项。流水线里最值钱的一条配置是档期并发回归测试JMeter 脚本模拟 500 并发抢同一设备同档期断言档期记录数必须等于 1任何改动破坏了并发防护流水线直接红。五、总结与最佳实践服务划分先满足伸缩诉求档期、IoT 先行数量克制九个服务是成长中的形态不是起点uni-app 三端落地重合度 75% 是实测值不是宣传值条件编译 适配层纪律决定可维护性EMQX 规则引擎把数据流转配置化Java 侧只留业务语义共享订阅、QoS 分级、重连退避是三个必做项CI/CD 的核心不是工具链是并发回归这类业务护栏要进流水线有状态中间件独立部署K8s 只装无状态服务。
RELATED

相关推荐

秋叶ComfyUI-v10中文整合包:全中文AI绘画一键部署与实战指南

秋叶ComfyUI-v10中文整合包:全中文AI绘画一键部署与实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/6 17:03:16
高校如何快速识别具有商业化潜力的科研成果?

高校如何快速识别具有商业化潜力的科研成果?

观点作者:科易网-国家科技成果转化(厦门)示范基地 在新一轮科技革命和产业变革背景下,高校的科研成果正日益成为推动区域产业创新和高质量发展的关键驱动力。然而,如何有效识别那些真正具有商业化潜力的科研成果&#…

📅 2026/9/20 5:58:34
免费儿童学习网站

免费儿童学习网站

今天介绍一个网站,16个学习板块,从拼音到古诗词,从认识动物到认识职业,配AI生成的精美插画,带标准读音,点哪里读哪里。关键是——免费,打开浏览器就能用。 网址:https://learn.fxss…

📅 2026/10/5 9:44:55
MORE NEWS

更多资讯

📰

启动报Port 8088 was already in use?先查是谁占的

启动报Port 8088 was already in use?先查是谁占的 项目启动报 Port 8088 was already in use,意思很直白:这个端口已经有人占了。 先说原理:端口是"门牌号",一间房只住一个进程 端口就是一台机器上的门牌号…

📰

担心文档上云?本地运行的办公AI才敢放心用

单位上周开了个会,主题是"AI 提效",散会时领导补了一句:涉及客户资料的文档,不许往云端传。这话一出,会议室里本来跃跃欲试的同事全蔫了——大家平时用的那些在线 AI,文档一上传就不知道存哪儿去…

📰

先能用,再好用:从烂尾复盘到两周上线,全栈项目的‘原型—快速迭代‘方法论

先能用,再好用:从烂尾复盘到两周上线,全栈项目的“原型—快速迭代”方法论 全栈学习路径的文章已经很多了:怎么选技术栈、怎么搭环境、怎么记文档,几乎每个方向都有人写。但一个更扎心的问题很少有人正面讨论——为什…

📰

深度思考模式把 ARC-AGI-2 从 17.6% 拉到 45.1%:对照 Gemini 3 Pro 的三份能力评测,看‘会思考‘改写了哪些边界

深度思考模式把 ARC-AGI-2 从 17.6% 拉到 45.1%:对照 Gemini 3 Pro 的三份能力评测,看“会思考”改写了哪些边界 一、先说结论:变强的不是“知识”,而是“解法” 每次新模型发布,评测榜单都会涨几个点,大…

📰

1.c++入门篇

1.c中的关键字asmdoifreturntrycontinueautodoubleinlineshorttypedefforbooldynamic_castintsignedtypeidpublicbreakelselongsizeoftypenamethrowcaseenummutablestaticunionwchar_tcatchexplicitnamespacestatic_castunsigneddefaultcharexportnewstructusingfriendclassext…

📰

《江灯合声》:有可行的分框版,也仍可以选择连续鸣谢

武汉江岸区栎坡合唱团在免费节目册《江灯合声》中,以表格集中鸣谢资助者。各家共同要求改为独立小框,团里仍想保留表格。现有全名与支持事项清楚可见,双方此前未承诺具体排版。我支持保留表格。补充的试排材料让选择更具体:分框能…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬