# mrdeer_iot **Repository Path**: wellsliu/mrdeer_iot ## Basic Information - **Project Name**: mrdeer_iot - **Description**: IOT 物联网平台 SpringCloud 微服务 - **Primary Language**: Java - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 9 - **Created**: 2020-11-16 - **Last Updated**: 2020-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 多租户 SaaS 物联网 IoT 微服务 开放平台

Building Status Coverage Status Downloads SpringCloud

简称MrDeer-IoT是基于Ant-Design+springCloud Alibaba的企业级微服务框架(用户权限管理,设备控制管理,配置中心管理,应用管理,....),其核心的设计目标是分离前后端,快速开发部署,学习简单,功能强大,提供快速接入核心接口能力,其目标是帮助企业搭建一套类似小米IoT能力开放平台的框架; - 基于前后端分离的企业级微服务架构 - 兼容 Coverage Status & SpringCloud - 优化内部实现,实现API调用的统一出口和权限认证授权中心 - 提供完善的企业微服务流量监控,日志监控能力 - 通用的微服务架构应用非功能性(NFR)需求,更容易地在不同的项目中复用 - 提供完善的压力测试方案 - 提供完善的灰度发布方案 - 提供完善的微服务部署方案 ### **前端项目地址** ### https://gitee.com/updateX/mrdeer_iot_ui.git ### **系统架构** ### ![输入图片说明](https://images.gitee.com/uploads/images/2020/0909/110742_d3b20f30_353085.png "微服务架构图-详细.png") ### 开发手册 ### 欢迎进群(大佬云集) ### 技术介绍 ### **功能介绍** - 统一安全认证中心 - 支持+模式登录 - 支持用户名、密码加图形验证码登录 - 手机校验码登录 - 支持第三方系统单点登录 - SaaS多租户管理 - 微服务架构基础支撑 - 服务注册发现、路由与负载均衡,采用作为注册中心 - 服务熔断与限流 - 统一配置中心 - 统一日志中心 - 分布式锁 - 分布式任务调度器 - 系统服务监控中心 - 服务调用链监控 - 应用吞吐量监控 - 服务降级、熔断监控 - 微服务服务监控 - 能力开放平台业务支撑 - 网关基于应用方式API接口隔离 - 网关基于应用限制调用次数 - 下游服务基于RBAC权限管理,实现细粒度控制 - 代码生成器中心 - 网关聚合服务内部Swagger接口文档 - 统一跨域处理 - 统一异常处理 - docker容器化部署 - 基于rancher的容器化部署 - 基于docker的elk日志监控 - 基于docker的服务动态扩容 ### IoT 技术窥探 #### MQTT发布/订阅架构 ``` MQTT与HTTP及其请求/响应范例相比,该协议使用 发布/订阅体系结构。发布/订阅是事件驱动的,可以将消息推送到客户端。中央通信点是MQTT代理,它负责调度发送者和接受者之间的所有消息。 向代理发布消息的每个客户端都在消息中包含一个主题。主题就是代理的路由信息。 每个想要接收消息的客户端都订阅某个主题,并且代理将具有匹配主题的所有消息传递给客户端。 因此,用户不必彼此了解,他们只通过主题进行通信。该架构支持高度可扩展的解决方案,而不依赖于数据生产者和数据使用者。 与HTTP的区别在于客户端不必提取所需的信息,但是在有新内容的情况下,代理会将信息推送到客户端。 因此,每个MQTT客户端都与代理具有永久打开的TCP连接。 如果连接在任何情况下中断,MQTT代理可以缓冲所有消息,并在它重新连击时将他们发送到客户端。 MQTT中用于分派消息的核心概念是主题。主题是一个简单的字符串,可以有更多的层次结构级别,用斜杠分隔。用于发送起居室的温度数据的示例主题可以是 房屋/起居室/温度。 一方面,可以断可以订阅确切的主题; 另一方面,使用通配符 对/房屋/+/温度 的订阅将导致所有消息发送到先前提到的主题 房屋/起居室/温度以及在起居室的地方具有任意值的任何主题,例如 房屋/厨房/温度。加号是单级通配符,只允许一个层次结构的任意值。 如果需要订阅多个级别,例如订阅整个子树,还有一个多级通配符(#)。它允许订阅所有底层层次结构级别。比如 房子/# 就会订阅以house开头的所有主题 ``` #### MQTT控制报文结构 |- 结构 |-备注 |- Fixed header |- 固定报文,所有控制报文都包含Nett |- Variable header|- 可变报文,部分控制报文包括 |- Payload |- 有效载荷,部分控制报文包含 #### Netty ``` Netty是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端 Netty是一个NIO客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化了TCP和UDP套接字服务器等网络编程。 “快速简便”并不意味着最终的应用程序会收到可维护性或者性能问题的影响,Netty经过精心设计,具有丰富的协议,如FTP,SMTP,HTTP以及各种二进制和基于文本的传输协议。 因此,Netty成功地找到了一种在不妥协的情况下实现易于开发,性能,稳定性和灵活性的方法。 ``` #### Kafka ``` Apache Kafka是一个分布式流媒体平台 ``` - 流媒体平台有三个关键功能 1.发布和订阅记录流,类似于消息队列或者企业消息传递系统 2.以容错的持久方式存储记录流 3.记录发生时处理流 - Kafka通常用于两大类应用 1.构建可在系统或应用程序之间可靠获取数据的实时流数据管道 2.构建转换或相应数据流的实时流应用程序 ### 能力开放管理平台 ### 容器化部署 ### APM监控 ### ### 系统监控 ### ### 灰度发布功能演示 ### 用户权益 ### - 允许免费用于学习、毕设、公司项目、私活等。 ### 禁止事项 ### - 代码50%以上相似度的二次开源。 - 注意:若禁止条款被发现有权追讨10000的授权费。