尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

从零搭建商用楼宇管理系统:架构设计与核心功能落地实践

从零搭建商用楼宇管理系统:架构设计与核心功能落地实践 从零搭建商用楼宇管理系统架构设计与核心功能落地实践本文摘要本文基于7个商写楼宇信息化改造的一线项目经验拆解楼宇管理系统三类核心用户的差异化需求分享中台化分层架构的设计思路以及IoT设备对接、收费核算、工单流转、运营大屏四大核心模块的落地方案同时给出高并发请求处理、多租户数据隔离、分布式数据一致性三类常见问题的解决办法附真实项目运营数据所有方案均可直接复用帮大家避开烟囱式架构的后期改造成本坑。最近两年对接了7个商写楼宇的信息化改造项目发现80%的甲方都踩过同一个坑早期为了省钱分别采购门禁、梯控、收费、报修的零散系统后期要做数据打通、新增需求的时候要么厂商要价极高要么直接找不到人最终不得不推翻重做。今天就把我们做楼宇管理系统的完整架构设计、核心模块实现思路和踩过的坑全部分享出来全是可落地的干货。需求拆解与整体架构设计1. 业务背景与需求分析楼宇软件的核心用户分为三类需求差异极大做架构前必须先把三类需求拆清楚避免后期反复推翻1.1 物业运营端需求设备全生命周期管理门禁、电梯、消防、照明、能耗设备的状态监控、远程控制、故障预警、维保记录追溯收费核算物业费、能耗费、场地租赁费、停车费的自动核算、账单生成、缴费提醒、对账核销支持商企客户的自定义开票规则工单流转报修、巡检、投诉、装修申请的全流程跟踪超时自动升级提醒权限管控不同岗位员工的操作权限隔离避免越权修改收费规则、删除设备记录1.2 租户/业主端需求线上服务缴费、报修、开门、电梯呼叫、场地预约、公告接收的移动端入口服务透明工单处理进度、缴费记录、能耗使用明细可查1.3 集团管理端需求多项目数据汇总所有楼宇的入住率、收缴率、设备故障率、工单处理效率的统一展示异常预警跨项目的异常规则配置比如连续3个月收缴率低于70%自动推送提醒给区域负责人传统楼宇软件最大的问题是烟囱式架构每个子系统独立部署、独立存数据要做个“租户缴费后自动给用户开门禁权限”的简单需求都需要找2-3个厂商做对接开发周期动辄1个月成本是正常需求的3倍以上。2. 整体架构设计我们采用中台化的分层架构设计所有公共能力下沉到中台上层应用只做逻辑编排最大程度减少重复开发整体架构分为4层┌─────────────────────────────────────────────┐ │ 应用层物业PC后台、租户小程序、运维APP、集团大屏 │ ├─────────────────────────────────────────────┤ │ 中台层业务中台数据中台IoT网关 │ │ 业务中台用户中心、设备中心、工单中心、收费中心、权限中心 │ │ 数据中台数据清洗、指标建模、实时计算、离线分析 │ │ IoT网关协议转换、设备接入、消息转发、状态同步 │ ├─────────────────────────────────────────────┤ │ 基础设施层MySQL、Redis、MongoDB、RocketMQ、Elasticsearch │ ├─────────────────────────────────────────────┤ │ 感知层门禁、梯控、能耗采集器、消防报警、摄像头、道闸 │ └─────────────────────────────────────────────┘核心设计原则设备接入统一收口所有IoT设备的对接全部走IoT网关上层应用不需要关心底层设备的厂商、协议只需要调用统一的设备操作接口业务能力可复用比如用户中心同时支撑物业员工、租户、管理人员的身份认证工单中心同时支撑报修、巡检、投诉等多类工单流转规则配置化收费规则、工单流转规则、预警规则全部可配置不需要每次改规则都发版多租户隔离支持单个系统对接多个楼宇项目不同项目的数据做schema级隔离公共配置统一维护核心模块实现与技术选型1. 核心模块实现1.1 IoT设备对接模块这是楼宇软件最容易踩坑的模块不同厂商的设备协议差异极大海康门禁用ISAPI、大华摄像头用SDK、第三方梯控用私有MQTT协议如果每个都单独对接后期维护成本会非常高。我们的解决思路是做协议适配层抽象统一的设备操作接口和事件模型上层应用完全不感知底层协议差异// 统一设备操作接口示例publicinterfaceDeviceOperateService{/** * 通用设备操作 * param deviceId 设备全局唯一ID * param operatorId 操作人ID * param operateType 操作类型OPEN_DOOR/CONTROL_ELEVATOR/SET_LIGHT等 * param params 扩展参数 * return 操作结果 */ResultDeviceOperateVOoperate(StringdeviceId,StringoperatorId,OperateTypeEnumoperateType,MapString,Objectparams);}所有设备上报的事件也统一转成标准JSON格式存储方便后续做数据分析{eventId:evt_20240520123456789,deviceId:dev_001_ace_012,deviceType:ACCESS_CONTROL,eventType:DOOR_OPEN,timestamp:1716181236000,operatorId:user_100086,extendInfo:{openType:FACE,temperature:36.4,doorNo:1号门}}目前我们这套适配层已经对接了12个主流厂商的37类设备新增设备对接只需要写1个适配类1-2天就能完成比传统对接方式效率提升80%。1.2 收费核算模块商写楼宇的收费规则非常复杂不同楼层的物业费单价不同、商铺能耗费可以按面积分摊也可以独立计量、逾期违约金的比例可自定义如果硬编码实现每次改规则都要发版非常容易出bug。我们用规则引擎实现了收费规则的完全配置化核心表结构设计思路如下表名核心字段作用fee_itemid, item_name, price_type[固定/阶梯/分摊], unit_price, calculation_rule存储收费项的基础配置和计算规则user_fee_relid, user_id, fee_item_id, effective_time, expire_time, extend_params存储用户和收费项的关联关系支持按周期生效billid, user_id, fee_item_id, bill_cycle, amount, pay_status, pay_time, invoice_status存储生成的账单数据比如商写楼宇的公摊电费只需要在规则里配置公式公摊电费总额 * (租户租赁面积 / 楼层总租赁面积)系统每月自动拉取能耗数据核算不需要人工计算出错率从原来的15%降到0.2%。1.3 工单流转模块楼宇的工单类型多、流转规则复杂我们用状态机实现了工单的灵活配置不需要硬编码流转逻辑以报修工单为例状态流转如下待派单 - 待接单 - 处理中 - 待验收 - 已完成 - 已评价每个状态的触发条件、通知对象、超时规则都可以在后台配置比如“业主提交报修后自动推送给对应楼宇的工程主管15分钟未接单则升级推送给项目经理”只需要在后台配置即可不需要修改代码。1.4 运营数据大屏模块集团端需要实时查看多个楼宇的运营数据我们用Flink做实时计算核心指标每10秒刷新一次不需要每次查全量数据库核心指标包括核心经营指标入住率、收缴率、当期营收、欠费金额运营效率指标工单平均处理时长、设备在线率、故障响应率异常告警指标待处理告警数、超时工单数、欠费超过30天的用户数2. 技术选型与关键问题解决2.1 技术栈选型层级技术选型选型理由后端SpringBoot SpringCloud Alibaba微服务架构成熟社区资源丰富适合中台化开发数据库MySQL Redis MongoDBMySQL存核心业务数据Redis存热点缓存MongoDB存设备事件、工单日志等非结构化数据IoT网关Netty高并发支持好单个节点可支撑10万MQTT连接满足高峰期设备请求实时计算Flink流处理性能稳定支持窗口计算、事件时间等特性适合实时指标统计前端Vue3 uni-appPC后台用Vue3开发移动端小程序/APP用uni-app一套代码多端部署降低开发成本2.2 关键问题解决1高峰期设备并发请求问题早高峰8-9点30层的写字楼会有数千次门禁开门、电梯呼叫请求很容易出现卡顿我们的解决思路是IoT网关做集群部署请求按设备ID哈希路由到不同节点设备操作做异步处理请求先返回“已受理”异步调用设备成功后再推送消息给用户热点设备的配置、用户权限提前缓存到Redis不需要每次请求查数据库目前落地的项目中早高峰开门请求平均响应时间在200ms以内成功率99.9%。2多租户数据隔离问题一套系统要支撑多个楼宇项目既要保证数据安全又要降低运维成本我们采用schema级别的隔离方案每个项目对应一个独立的MySQL schema数据完全隔离公共配置、字典表、用户全局信息存在公共schema动态数据源切换请求时根据项目ID自动切换到对应的schema这种方案比单独部署每套系统的运维成本降低70%同时满足等保2.0的数据隔离要求。3数据一致性问题用户缴费后需要同时更新账单状态、给用户开权限、同步到财务系统我们用RocketMQ实现最终一致性缴费成功后发送事务消息本地事务提交后消息才会投递下游服务消费消息做后续处理失败自动重试超过重试次数进入死信队列人工处理每天做定时对账保证账单数据和财务数据一致落地效果总结与避坑建议这套架构已经在小红马物业云的20多个商写楼宇项目落地实际运营数据如下物业财务每月核算时间从原来的10天降到2天核算出错率从15%降到0.2%工单平均处理时长从48小时降到12小时租户满意度提升35%设备故障预警准确率达到92%电梯、消防等核心设备的故障停机时间降低60%总结下来楼宇软件的核心设计思路是解耦IoT设备对接和业务逻辑解耦公共能力和上层应用解耦规则配置和代码逻辑解耦不要为了赶进度做烟囱式的系统否则后期的改造成本会是前期的3-5倍。最后抛个讨论问题大家做楼宇系统的时候遇到过最坑的设备对接问题是什么欢迎在评论区分享交流。
返回列表