# 软件架构
系统架构
# 总体设计原则
在整个系统的建设过程中,将严格遵守公司相关标准和规范,使用成熟的技术进行设计和定制,从而确保系统的可靠性、安全性、先进性、可扩展性、可伸缩性。
- 可靠性
体系建设评价系统在设计时将综合考虑采用通过可扩展方式来提高系统的可靠性,在系统发生故障时仍能保持正常工作,确保系统运行稳定。
- 安全性
LW-IoT平台严格按照国家信息安全体系的管理要求进行设计,并遵循国际安全设计规范。系统关键信息进行机密管理,实现关键信息的加解密保存,系统数据完整,有效防止信息被非法修改。
- 先进性
系统的软硬件平台以及开发框架采用先进成熟的设备和技术,软件开发框架采用高性能微服务架构,确保系统的技术先进性,保证投资的有效性和延续性。
- 可扩展性
系统将采用微服务架构进行设计开发,确保系统具有良好的可扩展性,能够快速响应业务需求的变化,对于后期应用功能的扩展采用发布新的微服务方式实现,且新功能的部署不会影响用户对已有功能的使用。
- 可伸缩性
系统在设计时充分考虑系统的可伸缩性,在不改变系统架构的前提下,通过增加或增强相应的系统配置实现系统功能的扩展支持,包括功能扩展和容量扩展。
# 分层架构
- 驱动层:用于提供标准或私有协议连接物理设备的SDK,负责南向设备的数据采集和指令控制,基于SDK可实现驱动的快速开发
- 通讯层:负责为设备接入罗万智联平台提供通讯服务保障,LW-IoT的通讯层分为两个通讯服务:LoRa核心网,ACCESSOR非LoRa通讯方式服务端
- 影子设备层:提供标准或私有协议招抄和主动上报的数据解析,对所有物理设备提供服务端镜像设备的映射
- 罗万智联平台控制中心:分为两部分:第一部分为物联网底层控制中心,主要为物联网通讯和影子设备提供设备和协议的数据维护;第二部分为物联网上层应用模块,主要为罗万智联平台用户提供应用服务
# 微服务架构
LW-IoT平台采用微服务架构,每个服务都是可以独立部署、独立扩展的程序。每个服务可以相互独立的选择不同的编程语言开发、测试,以及随不同的业务场景按需交付,极大缩短了业务上线的周期。与传统架构相比,微服务在产品自动化部署、弹性扩缩容、自动化运维、统一监控、故障定位定界上更简单高效。
# 系统各组件说明
服务名称 | 功能简介 | 部署方式 |
---|---|---|
iot-server | 罗万智联平台层服务 租户管理、统一OpenAPI接口、规则引擎配置 设备通讯信息维护、计划调度功能、影子设备统一管理功能 | 多实例部署 |
iot-shadow | 影子设备层,维护真实设备与影子设备的映射关系、设备协议解析 | 多实例部署 |
LoRa Server | LoRa 通讯方式设备的服务端程序 | 多实例部署 |
Accessor | 维护设备与服务端的连接,分为服务做server设备端发起连接,服务做client主动连接指定ip:port | 多实例部署 |
Redis | 为数据库提供高性能数据Cache服务 | 多实例部署 |
MySQL | 关系型数据库,用于维护系统的档案信息,租户信息,应用信息,产品信息,计划调度信息 | 多实例部署 |
Kafka | 提供设备上报数据存储和分发;提供内部服务间的异步消息解耦 | 多实例部署 |
zookeeper | 分布式配置数据存储与协同服务,采用类zab(一种类Paxos协议)一致性协议,提供小数据量的可靠存储、变更通知以及分布式协同能力,多副本存储 | 多实例部署 |
Emqx | MQTT消息中间件服务,提供罗万智联平台服务端与应用层以及web端及时数据通讯服务 | 多实例部署 |
ELK-ES (ELK-ElasticSearch) | 日志&指标检索服务,基于开源搜索引擎Elastic Search构建的系统运行日志和指标的查询检索 | 单机部署 |
ELK-Logstash(Logstash) | 日志&指标采集服务,Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,本项目中目前主要采集IoT-server、IoT-shadow、LoRa server、Accessor的链路日志数据 | 单机部署 |
ELK-Kibana | Dashboard报表展现,基于开源软件Kibana构建的图形化展示 | 单机部署 |
InfluxDB | 时序数据库,IoT平台元数据存储服务 | 单机部署 |
nginx | 软件负载均衡服务 | 多实例部署 |