云原生边缘计算 KubeEdge 在智慧停车中的实践
作者:
傅国庆 | 浙江志诚软件有限公司总经理、系统架构师
范传根 | 浙江志诚软件有限公司研发中心副总经理、停车平台项目负责人
摘要:在智慧停车事业蓬勃发展的今天,开放式一体化智慧停车操作系统承载的停车场等边缘计算节点数量快速增长,给管理运维带来巨大挑战。为响应国家信创战略,适应云原生开发新时代,志诚团队应用一种基于 Kubernetes 架构的云原生边缘计算系统 KubeEdge,很好地解决了停车场场景下应用编排、部署、更新等难题,为城市停车资源整合提供了生动案例。
01 引言
随着城市各类停车资源不断接入、应用场景不断拓展,边缘端的应用越来越复杂,边缘节点的数量快速增长、产生的数据也越来越多,为边缘应用的管理带来一系列挑战。主要表现在:
(1) 复杂网络拓扑、不稳定网络接入。旧停车场智能化改造与新智能停车场建设时,要根据项目要求、物理位置、道路规划等情况,合理规划网络。有些停车场规模大、具备铺设光纤的条件,可采用专线接入;有些停车场出入口距离较远,或道路分隔不方便开挖铺设线路,则只能采用移动网络做补充。这些网络的质量参差不齐,市政施工等情况偶尔也会导致断电、断网,对系统的高可用性带来挑战。
(2) 需求高度定制、快速迭代更新。城市平台接入的停车资源类型多种多样,有公共的道路停车位、商业停车场、社区停车场、退红空间等。停车场的前端采集技术不同、运营主体不同、收缴费策略不同等等,使得单一版本的停车场应用无法满足需求。在停车场建设完成后,为配合停车场运营,如在特殊时期配合商业活动、推出联动停车费用减免等,仍需对应用进行定制、更新。这些因素,要求停车场应用有良好的版本控制、较好的扩展性、较强的弹性部署能力。
(3) 边缘网关异构硬件的挑战。停车场规模不同、对计算资源的需求差异很大。小的停车场可能仅有单一通道、十几个停车位,大的停车场拥有十几个通道、成百上千个停车位,且可能被划分为不同的区域,不同区域计费方案也不同。根据计算资源需求选购的网关设备覆盖 x86_64、aarch32、aarch64 等不同 CPU 体系架构,增加了技术栈的复杂性,给研发团队带来管理上的挑战。
浙江志诚软件有限公司长期致力于提供城市级路内外一体化智慧停车解决方案,并通过大数据实现全城停车资源的智慧联动。为解决无人值守停车场等管理所需的高安全、高可靠、高效率、易维护等特性,志诚团队越来越多地在停车场现场的边缘节点部署容器化应用。
02 云原生边缘计算技术
边缘计算是一种分布式的计算架构,相对于云中心计算,将应用程序从云中心节点移往边缘节点去处理,本质上更靠近于用户终端,可以加快数据的处理与传送速度,减少延迟。云原生(Cloud Native)则是一种构建和运行应用程序的方法,是一套技术体系和方法论,目前通常采用开源堆栈(Kubernetes+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps 支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。
随着计算规模和业务复杂度的日益提升,对边缘计算的效率、可靠性、资源利用率等一系列能力提出了新的诉求。为了将云计算的能力下沉到边缘侧、设备侧,并通过中心进行统一交付、运维、管控,云原生与边缘计算结合,衍生出一种新的技术趋势——云原生边缘计算,即基于边缘计算进行应用设计开发,以充分利用边缘计算的优势,实现离线运行能力、边云协同能力、海量设备接入等多种特殊能力的支持。KubeEdge 是基于 Kubernetes 架构体系实现云原生边缘计算的典型代表。其整体架构如下:
图 1 KubeEdge 架构
03 基于云原生架构智慧停车操作系统的能力构成
整体架构
路内外一体化开放式智慧停车平台,其目标是整合路内、路外停车资源,融合静态、动态交通大数据,纳入不同运营主体打造开放生态,为停车场的管理者和使用者提供平台化的运营服务和解决方案。通过基于云原生的整体架构,志诚公司实现了停车场全部服务容器化,同时根据业务需要部署在云计算中心或边缘计算节点。云平台的服务、停车场现场的传感器和控制设备以及边缘侧的应用,共同构建了停车云服务体系。
图 2 系统架构
技术实现
Kubernetes 提供了一组对云原生应用的编排部署模型,KubeEdge 将这些编排部署的能力延伸到边缘侧,支持边缘侧日益复杂的业务和高可用性的要求。下图展示了 Kubernetes 集群各部分之间的联系。
图 3 Kubernetes 集群
其中,停车场边缘侧被设计为一组低耦合的容器化应用,充分利用 Kubernetes 和 KubeEdge 的特性,以满足停车场的功能需求。
图 4 停车场边缘侧架构
如上图所示,停车场边缘侧部署的应用主要包括:
(1) 基础服务组。采用开源的 Postgres 数据库存储业务数据;采用 Redis 做 LRU 缓存,以提高整体性能、降低磁盘 IO 的开销。而 Zabbix 负责物理机的健康监控,Zeroconf Service 则为岗亭收费终端等用户界面提供网关发现等服务。
(2) Gateway Broker 网关消息服务。提供边缘侧各业务应用的消息订阅、发布,以及与云测服务(停车云平台)的双向消息透传。
(3) 设备集成应用组。若干独立的设备服务应用,分别提供了停车场摄像机、闸机、余位显示屏、语音播报、车辆检测器等传感器和控制设备的集成。低耦合的设备服务可根据停车场情况选择必要的服务组件。
(4) 存储与上传应用组。这些应用分别提供持久化、上传、容量监控、磁盘清理等功能。StorageService 带来了图片、视频等传感器数据的本地持久化存储能力;DiskUsageService 提供实时的磁盘容量监控功能;DiskCleanService 则实现了定期数据清理功能;UploadService 则负责数据的上传,根据数据优先级别调度上传任务。
(5)业务应用组。提供车辆进出场的订单生成、通道控制、缴费计算等。
而通过编排部署上述应用,可以实现停车场如下功能特性:
(1) 边缘侧数据库主从配置
在规模较大、对可用性要求高的停车场(如大型商业体、体育中心等),需要提供双机甚或多机热备方案。在边缘计算部署上,采用两台或多台独立的物理网网关主机(拥有独立供电、独立网络的设备),每个主机构成一个 Kubernetes 节点。Postgres 数据库应用、Redis 缓存应用利用 Stafulset 机制,在应用重新调度后,应用还能被调度到原来的节点至上,保障访问同样的存储。
(2) 多活互备
利用 Kubernetes 的 ReplicaSet 创建多个副本,形成多活互备方案。ReplicaSet 可以维持设定副本数的应用同时运行,已提供负载均衡和高可用性。
(3) 关联应用同节点部署
停车场边缘侧,停车场管理应用 ParkingLotService 跟设备控制服务 DeviceService 有强关联性,通常在同节点部署,以提升应用间交互效率,实现最快速的事件处理和控制输出。使用 POD 亲和性调度规则,可以把相关的应用部署在相同的主机上以提升通信性能。
(4) 同一应用多实例跨节点部署
同一应用的不同实例跨节点部署可提升可用性。停车场管理应用 ParkingLotService 等应用,可部署多个实例。当停车场边缘侧存在两个或多个节点的情况下,利用 POD 反亲和性特性,可以将同一应用的不同实例分散在不同节点上进行部署。特别地,有些小规模停车场,只有一台网关设备(单节点),则可以在云侧 Kubernetes 集群部署应用实例副本,在不增加成本的情况下,提高应用可用性。
(5) 根据边缘节点的属性分组部署
因停车场建设时期不同,边缘节点的 CPU 体系架构可能是 x86_64,也可能是低功耗的 aarch32 或 aarch64,要部署的应用版本完全不同。停车场内的相机、道闸等型号也会影响部署的应用版本。我们依据边缘节点的地理位置、设备类型、功能属性、性能等分属于不同的分组,打上不同的标签,在应用部署时利用 NodeSelector 的能力,将应用部署在对应 label 上的边缘节点之上。
(6) 新节点自动安装部署
在 Kubernetes 中定义应用部署,独立于具体的节点。应用根据节点的标签将期望的应用部署在对应的节点之上。当新的节点上线后,可以自动(或后期手工维护)将其打上同样的标签,K8s 系统可以立刻将应用自动部署在新上线的边缘节点之上。
(7) 多停车场联动
有些复杂场景,多个停车场边缘节点需要实时通信、交换数据。如大型社区,停车场被分为多个组团,母场和子场嵌套,停车计费分段、分区域缴费,数据处理时需要结合关联的停车场数据。KubeEdge 集成了一个名为 EdgeMesh 的模块,负责边缘侧流量的转发,支持跨节点流量转发。EdgeMesh 为资源受限的边缘侧提供了一个轻量化且高度集成的服务发现服务。利用 EdgeMesh 的能力,可实现多停车场实时联动、附近道路交通诱导屏实时联动,为车主提供准确的停车诱导和计费服务。
应用效果
目前,志诚智慧停车操作系统通过国产化信创改造,容器化的应用全部适配 x86_64、aarch32 和 aarch64 等 CPU 体系架构的计算平台,可弹性适应停车场的规模和建设成本。网关设备通过轻量级通信协议 MQTT 进行消息通信,低耗稳定,极大地减轻了带宽压力。Kubernetes 的容器编排能力,带来了停车场系统的快速部署和高可用性。
在实践中,实施团队可以根据停车场规模、停车周转率等情况,按照“一区块一策略一方案”的思路,在现场部署一台或若干台算力适合的边缘网关设备,作为边缘计算平台。边缘计算为云平台提供如下能力:
停车场设备智能接入。实现进出口摄像机、车辆检测器等传感器数据的收集和上报,以及闸机、余位显示屏、语音播报等控制单元的联网控制。
业务数据的双向同步。与云端实时通信,接收云端下发的停车场、通道、车辆白名单等基础信息;预处理进出场车辆信息,形成停车订单,并根据计费方案计算费用。业务数据具备双向同步能力,且保证数据的一致性
短时离线工作能力。对短时断线的情况下,为车主提供有限的服务,如开闸进场、白名单及免费订单开闸出场、停车场离线计费等。网络恢复时,数据自动同步,以保持云端和边缘端的数据一致性。
负载均衡和高可用性。弹性部署,部分关键业务能满足“单点多活”、“云-边”异地多活等场景,为停车场业务提供了负载均衡和高可用性。
持续交付、快速部署和更新应用。全容器化应用,结合 Kubernetes 和 KubeEdge 的编排部署能力,实现了停车场业务的快速迭代和持续交付,具备了对边缘节点自动部署、更新、回滚的运维管理能力。
04 结束语
目前无人收费服务以及线上运营都属于早期蓝海市场,且为用户提供降本增效的核心价值。未来,志诚将继续围绕物联网、边缘计算等技术为停车场提供智能运营能力,致力于提高车位周转率和车位占用率,降低人力成本,进而提高车场运营收益。
附:KubeEdge 社区贡献和技术交流地址
Github 地址: https://github.com/kubeedge/kubeedge
Slack 地址: https://kubeedge.slack.com
邮件列表: https://groups.google.com/forum/#!forum/kubeedge
每周社区例会: https://zoom.us/j/4167237304
Twitter: https://twitter.com/KubeEdge
文档地址: https://docs.kubeedge.io/en/latest/
评论