分布式项目(一)iot-pt

前言

  目前不少项目都是些微服务,分布式,基本也都是基于spring cloud,dubbo实现的,关于spring cloud和dubbo网络上也有不少实用教程,但不多有基于项目开发的整套流程来写的,由于项目缘由,忽然有点小灵感,因此想从项目设计,开发,分布式部署整个流程来记录一个简单的分布式项目大概是个什么样子的。笔者也处于学习提升本身的阶段,因此有写的很差的和不对的地方,欢迎看官指正。git

项目介绍

  名称:iot-ptweb

  说明:iot-pt是一个关于物联网的项目,简单的说就是物理设备经过某种协议上传数据到服务器,服务器对数据进行分类、存储,管理后台经过某些指令能够控制远程的物理设备。redis

先阶段,物联网设备很是多,熟悉的好比家里的水表,气表,电表,这些都是物联网设备,各类物联网设备所用的协议也是很是之多,像coap,tcp私有协议,lwm2m,mqtt,所传输的数据格式也是五花八门,像16进制,2进制,json等。因此我在构思iot-pt时,让协议和数据格式分开,协议更多的是一种传输规则、拆包规则,而数据格式则是能把物理设备发送的原始数据解码成有业务意义的数据。spring

  业务概念设计json

  概念说明缓存

  • 产品:产品是一个业务概念,是一类物理设备的集合,定义了一类物理设备是什么,好比小米6手机,单个小米6手机,咱们能够叫个人手机或者个人移动设备,可是对于小米公司来讲,小米6表明的是卖出的全部小米6手机,因此更愿意称之为小米6产品。服务器

  • 设备:设备是一个具体的物理设备的抽象,它与具体存在的物理设备一一对应,定义了具体是物理设备是什么,归属于产品中。网络

  • 产品物模型:物模型是一类设备功能的抽象,它包含协议,属性,指令,事件,定义了物理设备能干什么。mybatis

    1. 协议:定义物理设备上传数据使用的是什么协议。app

    2. 数据格式:定义了设备上传数据的格式,这里定义了byte和json两种数据格式。

    3. 属性:定义了物理设备上传的那些数据,并有什么实际的业务含义。

    4. 指令:定义了物理设备能接受那些操做指令,并完成相应的操做。

    5. 事件:定义了物理设备能触发那些事件,心跳,设备异常,设备报警。

功能结构设计

  结构图

模型介绍

  Client:发数据的客户端,用来模型物理设备,包含了coap和mqtt,coap和mqtt是目前比较流行的物联网协议,这里不就具体的介绍协议了。

  Protocol Server:接收客户端发送的消息,并把消息推送到kafka。

  Mapping Server:消费Protocol Server发送到kafka的设备数据,对数据进行解码,映射到系统的设备和属性上,赋予数据业务意思。

  Monitor Server:消息Protocol Server发送的服务监控数据,消费Mapping Server发送的设备心跳数据,并把数据整理写入redis。

  Insert DB Server:持久化服务统称,消费Mapping Server发送的设备数据,并进行持久化。

  Real-time Data Server:消费Mapping Server发送的设备数据,基于web socket向管理平台推送设备实时数据。

  Web Manage:web管理服务,提供可视化产品,设备,产品物模型操做。

技术选型

dubbo笔者没使用过,并非很了解,因此这里仍是spring全家桶。

项目开发:spring boot

缓存:redis

消息中间件:kafka

ROM:mybatis

db:pgslq

分布式:spring cloud

结束语

iot-pt项目结构就介绍到这里,剩下的咋们开始撸码

https://gitee.com/distant/iot-pt.git

相关文章
相关标签/搜索