iThings es una plataforma IoT nativa de la nube de código abierto basada en EMQ X + TEngine + React

Introducción a las iCosas

iThings es una plataforma ligera de IoT de microservicios nativa de la nube desarrollada en base a golang. Está escrita en golang y utiliza componentes de alto rendimiento (emqx, nats, tdengine). Se basa en el marco de microservicios go-zero al tiempo que garantiza un alto rendimiento y servicio. estabilidad. ; Un conjunto de código admite la implementación en modo k8s, docker, microservicio y monómero al mismo tiempo, lo cual es conveniente para las empresas que cambian de monómero a microservicio; instalación con un solo clic de todas las dependencias, operación con un solo clic de iThings, fácil implementación; se puede implementar a través de http, grpc o incluso integrar iThings directamente en el sistema comercial de la empresa como un paquete.

eef3e236f5c3b8b3fe521dcab27915f2.png

▌Arquitectura de producto

La plataforma iThings IoT proporciona una plataforma de administración y acceso universal a través de diferentes dispositivos y fuentes de datos, y desempeña un papel de intermediario en toda la arquitectura IoT, vinculando todas las interacciones entre la capa de percepción y la capa de aplicación: conexión descendente, administración El lado del dispositivo en red completa la recopilación y el almacenamiento de datos de detección, y proporciona a los desarrolladores de aplicaciones e integradores de sistemas una interfaz de datos unificada y herramientas de módulos comunes para el desarrollo de aplicaciones.

Los fabricantes de aplicaciones pueden integrarse rápidamente en sus propios sistemas mediante la introducción de paquetes http, grpc y golang, y obtener rápidamente las capacidades de la plataforma IoT, que es liviana y eficiente.

5c5056d2da583be29998716cb1d3b706.png

▌Valor de plataforma

  • Gran capacidad de expansión

    El desarrollo de la empresa tiene diferentes etapas, y los escenarios de aplicación también tienen necesidades diferentes. iThings admite tanto monolítico como microservicios para que los desarrolladores no necesiten mantener dos conjuntos de códigos. Al mismo tiempo, cuando el monolito no es suficiente para cumplir las necesidades de la empresa, también se puede cambiar fácilmente a la arquitectura de microservicio.

  • alto rendimiento

    Desarrollado con golang, hay pocos servicios de terceros que dependan de él, e incluso se puede implementar en un brazo de bajo rendimiento para escenarios con requisitos de bajo rendimiento.

  • valor de los datos

    Con la implementación privatizada, usted mismo puede administrar todos los datos, por lo que no tiene que preocuparse por la suspensión de la nube pública y las altas tarifas.

  • Base de solución

    Se puede utilizar como base digital para soluciones industriales, admite soluciones multisectoriales para compartir la misma base de plataforma IoT y acumula más experiencia industrial y soluciones de productos para empresas.

▌Función del producto

Acceso a dispositivos: se pueden realizar conexiones masivas de dispositivos a través de protocolos IoT estándar de la industria (MQTT, CoAP y HTTP), y también se puede acceder a protocolos personalizados a través del motor de reglas.

Control remoto: el uso de la API http puede realizar el control preciso del servidor en el dispositivo y el dispositivo envía activamente notificaciones de solicitud al servidor.

Modelo de objetos: admita el modelo de objetos estándar para gestionar de forma eficaz los atributos, los eventos y los comportamientos de los dispositivos.

Permiso RBAC: el control de permisos adopta RBAC, control de acceso basado en roles. Paquete completo de funciones básicas de autoridad como usuarios, roles y menús.

Soporte de aplicaciones: Proporcione http, grpc o golang para importar paquetes directamente para transferir el flujo de datos al nivel empresarial, protegiendo las funciones complejas del nivel IoT, permitiendo a las empresas centrarse en el desarrollo de aplicaciones empresariales, acortando el tiempo de comercialización de las soluciones IoT. , y ahorrando mucho dinero para las empresas Tiempo y costos de desarrollo.

Implementación flexible: nube privada, nube pública, implementación perimetral.

Desarrollo y mantenimiento rápidos: proporcione registros de depuración de dispositivos en la nube, registros locales de dispositivos y depuración de dispositivos en línea para un desarrollo rápido y problemas de depuración.

▌Pila de tecnología

Pila de tecnología back-end

  • Marco de microservicios: go-zero

  • Caché de alto rendimiento: redis

  • Cola de mensajes de alto rendimiento: nats

  • Base de datos relacional: mysql

  • Centro de registro de microservicios (no se puede utilizar monolítico): etcd

  • Almacenamiento de objetos ligeros nativo de la nube: minio

  • Plataforma de procesamiento de datos de series temporales minimalista, nativa de la nube, de código abierto y alto rendimiento: TEngine

  • Servidor de mensajes IoT MQTT distribuido nativo de la nube elásticamente escalable a gran escala: EMQX

Pila de tecnología de front-end

  • Biblioteca de JavaScript para crear interfaces de usuario: reaccionar

  • Componentes de diseño empresarial: diseño de hormigas

  • Un conjunto de biblioteca React Hooks confiable y de alta calidad: ahooks

Pantalla de la interfaz de la consola

gestión de productos

093815e3ec617d80e38e773099e5adcb.png

modelo animal

159698d63c22ec4935b9e2790a8eec77.png

gestión de dispositivos

796b0421d048c3bee04a76a3edc5ac0a.png

servicio de registro

9da733be66f031b947711b93de64044b.png

Gestión de la interfaz API

086ff7471878ab937a1852576ab249ee.png

auditoría operativa

633ff93abec7042d7ee87841867a1743.png

Implementación local y experiencia en línea

Estructura del código:

- deploy #部署时 相关配置
  - conf
    - emqx #mtqq组件 相关配置
      - data
        - loaded_plugins
      - etc
        - plugins
          - emqx.conf #mtqq组件 主要服务配置文件
          - emqx_auth_http.conf #mtqq组件 鉴权服务配置文件
    - ithings #本项目服务 相关配置
      - apisvr
        - etc #部署时 各服务 配置文件
          - api.yaml #api网关接口代理模块配置
          - dd.yaml #设备数据处理模块配置
          - di.yaml #设备交互模块配置
          - dm.yaml #设备管理模块配置
          - sys.yaml #系统管理模块配置
    - mysql #本项目SQL文件
      - sql
        - dmsvr.sql #设备管理模块SQL
        - rulesvr.sql #协议规则引擎模块SQL
        - syssvr.sql #系统管理模块SQL
    - nats #nats组件 相关配置
      - nats-server.conf # #nats配置文件


- doc #项目文档
  - assets #一些逻辑流程图、架构图、二维码
  - v2 #v2版本架构设计思路


- shared #公共服务、DTO、Client
  - clients #mqtt/nats/TDengine client
  - conf #配置文件内 部分对象的 DTO
  - def #常量、结构体 通用定义
  - devices #此负责提供 和设备相关的 公用的操作函数
  - domain #此包用于封装 跨服务共享的 领域对象
    - application #此包负责定义 应用层推送的 结构体
    - deviceAuth
    - schema #此包负责 物模型定义及相关逻辑
  - errors #程序错误对象、错误码的定义
  - events #此包负责提供事件的封装及解包(如topic、常量、结构体、封解方法)
  - oss #对象存储SDK
  - proto #公共proto定义
  - result #apisvr网关模块 响应结果处理 的封装
  - store
  - third #第三方SDK对接
  - traces #链路追踪方法封装
  - users #jwt方法封装
  - utils #工具类函数封装
  - verify #验证码函数封装


- src #项目主要代码(go-zero rest)
  - apisvr #api网关接口代理模块
    - etc #单体部署 运行时 各服务 配置文件
      - api.yaml #api网关接口代理模块配置
      - dd.yaml #设备数据处理模块配置
      - di.yaml #设备交互模块配置
      - dm.yaml #设备管理模块配置
      - sys.yaml #系统管理模块配置
    - apidirect
      - direct.go #加载配置、协程启动dd服务、构造单例上下文(含根据配置判断连接其他子服务)
  - ddsvr #设备数据处理模块(go-zero rest)
    - etc
      - dd.yaml #独立部署 运行时 当前服务 配置文件
    - dddirect
      - direct.go #加载配置、构造单例上下文、注册消费者Handle
  - disvr #设备交互模块(go-zero rpc)
    - etc
      - di.yaml #独立部署 运行时 当前服务 配置文件
    - didirect
      - direct.go #加载配置、构造单例上下文、注册消费者Handle
  - dmsvr #设备管理模块(go-zero rpc)
    - etc
      - dm.yaml #独立部署 运行时 当前服务 配置文件
    - dmdirect
      - direct.go #加载配置、构造单例上下文
  - rulesvr #协议规则引擎模块(go-zero rpc)
    - etc
      - rule.yaml #独立部署 运行时 当前服务 配置文件
    - ruledirect
      - direct.go #加载配置、构造单例上下文、注册消费者Handle
  - syssvr #系统管理模块(go-zero rpc)
    - etc
      - sys.yaml #独立部署 运行时 当前服务 配置文件
    - sysdirect
      - direct.go #加载配置、构造单例上下文


- tests #单元测试用例

Pasos de implementación local:

    • Confíe en componentes de código abierto: MySQL, Redis, nats, etcd, TEngine, EMQX, etc.,

      Consulte el contenido del archivo de configuración en itings\src\apisvr\etc\*.yaml para obtener más información.

    • Cree iThings de base de datos y ejecute todos los comandos SQL en el directorio itings/deploy/conf/mysql/sql/

    • Modifique el directorio de trabajo del IDE a itings\src\apisvr y luego ejecute la función principal de itings/src/apisvr/api.go

Dirección de demostración: http://42.193.250.251:7777

Obtenga el código fuente: https://github.com/i-Things/iThings

Recomendación pasada

☞ Informe de evaluación de la plataforma IoT de IDC China 2022

☞ Tendencias de la plataforma IoT en 2022: privatización

☞ 5 lecciones fallidas que vale la pena compartir sobre las nuevas empresas de Internet de las cosas

☞ Selección y comparación de cuatro plataformas IoT domésticas

☞ ¿La [plataforma IoT] de los proveedores de la nube no es popular?

7b8246e06aeb105d6250a934fbf22887.png

e7c3a867519059cb165d66a99848a049.gif

39ebf47fe01769ab88da176948f49715.gif

e18b43cefecf2f2d067ab9b8c49b3951.gif

98103f9a530dcc102468bdc81ba80055.gif

Supongo que te gusta

Origin blog.csdn.net/klandor2008/article/details/131098918
Recomendado
Clasificación