Middleware MQTT de código abierto: descripción general de la arquitectura técnica de BifroMQ

En el campo actual de Internet de las cosas, el protocolo MQTT se ha convertido en un elemento clave indispensable, que proporciona soporte técnico central para una transmisión de datos eficiente y en tiempo real. Sin embargo, los proyectos actuales que brindan capacidades MQTT en el mercado se centran principalmente en las plataformas tradicionales y existentes de administración de dispositivos IoT "listas para usar", lo que resulta en una falta de atención y exploración suficientes en la implementación de las plataformas de bajo nivel. protocolo MQTT de nivel. Sin embargo, creemos firmemente que las características del protocolo MQTT tienen perspectivas de aplicación más amplias, y no se limitan solo al campo de Internet de las cosas. Es precisamente por esta creencia que después de años de práctica y acumulación de tecnología, lanzamos el proyecto de código abierto BifroMQ, que se centra en el procesamiento eficiente del protocolo MQTT, especialmente frente a cargas a gran escala.

▌Middleware de protocolo MQTT con neutralidad y escalabilidad

En comparación con la plataforma tradicional de gestión de dispositivos IoT, BifroMQ se adhiere a un concepto de diseño diferente. Hemos abandonado audazmente el paradigma tradicional de "solución de un solo paquete" y centramos nuestra atención en la necesidad de un protocolo MQTT de alto rendimiento. Creemos firmemente que las características del protocolo MQTT tienen un paradigma de aplicación más amplio, por lo que BifroMQ se compromete a aprovechar al máximo el potencial del protocolo MQTT, especialmente su excelente rendimiento al manejar cargas a gran escala.

En comparación con la lógica de integración (como Kafka) integrada en la implementación de MQTT, BifroMQ está más inclinado a "acoplarse" con el sistema descendente de una manera que se ajuste al estándar MQTT. Por ejemplo, a través del mecanismo de suscripción compartida (Suscripción Compartida), la lógica de integración se externaliza para lograr un puente más desacoplado y la capacidad de reenviar mensajes a sistemas heterogéneos mientras se mantiene un alto rendimiento de mensajes. Este concepto de diseño convierte a BifroMQ en un middleware altamente personalizable que puede adaptarse fácilmente a varios sistemas posteriores y satisfacer las necesidades de diferentes escenarios comerciales.

▌Construcción de servicios en la nube sin servidor multiinquilino a gran escala

La misión de BifroMQ es construir un sistema de mensajes MQTT adecuado para múltiples inquilinos a gran escala para respaldar las características comerciales de los servicios en la nube sin servidor. Esta misión está impulsada por un profundo conocimiento de las características del protocolo MQTT y la confianza en su aplicación más amplia. A diferencia de las arquitecturas tradicionales de nivel empresarial, los servicios en la nube sin servidor enfatizan la asignación de recursos bajo demanda, la expansión elástica y la construcción de servicios altamente flexible. Por esta razón, BifroMQ, a través de su arquitectura multiinquilino y mecanismo de intercambio de recursos, proporciona las características de "recursos compartidos, experiencia exclusiva" para negocios sin servidor.

▌Implementación a nivel empresarial: flexibilidad y solidez

Aunque el objetivo de BifroMQ es crear servicios en la nube sin servidor multiinquilino, los recursos multiinquilino + compartidos son esencialmente una abstracción de recursos exclusivos de un solo inquilino. De acuerdo con nuestra filosofía, a través de la combinación y configuración gratuitas de componentes centrales, BifroMQ admite fácilmente implementaciones de clústeres comunes de nivel empresarial "Shared Nothing". De hecho, este es también el modo de implementación predeterminado de la versión de código abierto de BifroMQ. Esta flexibilidad permite a BifroMQ adaptarse a arquitecturas de sistemas de diversos tamaños y necesidades.

 

▌Análisis de estructura de BifroMQ

El diseño arquitectónico de BifroMQ se basa en "primeros principios", analizando las tecnologías necesarias para lograr los objetivos de diseño desde una perspectiva técnica y cómo combinar "orgánicamente" estas tecnologías para lograr el efecto de optimización general. Por lo tanto, es difícil comprender completamente su connotación únicamente a partir de la estructura del proyecto y la lógica del código. A continuación se brindará una descripción de alto nivel de la arquitectura general de BifroMQ desde tres perspectivas principales.

▌Arquitectura modular basada en gestión de clústeres descentralizada

En primer lugar, independientemente de la lógica de implementación del protocolo MQTT en sí, cada módulo de servicio funcional de BifroMQ se basa en un conjunto de capacidades de construcción de clústeres subyacentes descentralizadas (clúster base), como se muestra en la siguiente figura:

▲ Arquitectura modular del clúster descentralizado BifroMQ

El clúster creado por el clúster base se divide lógicamente en dos capas: clúster subyacente y clúster superpuesto. El clúster subyacente se denomina clúster "Host" y cada host en BifroMQ corresponde a un proceso de servicio (Proceso) que se ejecuta en el sistema operativo. El clúster de host implementa el servicio de membresía del host (membresía) utilizando el protocolo de clase Gossip (protocolo SWIM) y proporciona la abstracción de la dirección del host para el clúster de superposición. El clúster superpuesto se denomina clúster de "agente" y proporciona abstracción de direcciones a nivel de agente (dirección de agente) en función de la dirección del host. En BifroMQ, Agente corresponde a un servicio lógico (Servicio) que implementa funciones específicas. Estos servicios lógicos (implementados de manera uniforme a través del marco base-rpc) incluyen módulos con dos roles, cliente y servidor, y utilizan las capacidades de Agent Cluster para realizar el registro y el descubrimiento de servicios.

Los beneficios de esta arquitectura incluyen:

1. El servicio lógico está desacoplado del proceso donde reside el servicio, lo que permite una encapsulación y combinación más flexibles según los escenarios de implementación.

2. El "descubrimiento de servicios" de los servicios lógicos no depende del centro de registro tradicional o del servicio de nombres, eliminando así el riesgo de operación y mantenimiento de un único punto de falla y permitiendo que la escala del clúster escale libremente.

▌Colaboración y aislamiento de carga modular

A continuación, describimos la estructura de BifroMQ desde la perspectiva de la implementación del protocolo. Al diseñar la arquitectura desde la perspectiva de crear servicios en la nube sin servidor, es necesario considerar la racionalidad de la realización de funciones desde la perspectiva del aislamiento y la gestión de la carga, es decir, la tenencia múltiple de la carga. Dividimos la carga de trabajo del protocolo MQTT para que cada carga pueda existir en forma de un subgrupo independiente, y estos subgrupos construyen una capacidad MQTT completa a través de la cooperación. Los siguientes son los módulos relacionados con la carga MQTT en BifroMQ:

  bifromq-mqtt: responsable de manejar la carga de conexión larga del protocolo MQTT

  bifromq-dist: responsable de mantener el estado de la suscripción MQTT para un acceso altamente confiable y enrutamiento de mensajes a gran escala.

●   bifromq-inbox: Responsable del acceso altamente confiable a los mensajes de la sesión del suscriptor en modo CleanSession=false

  bifromq-retain: Responsable del acceso altamente confiable a los mensajes Retain.

La relación de colaboración entre estos módulos se muestra en la siguiente figura:

▲ Relación de colaboración del módulo BifroMQ 1

▲   Relación de colaboración del módulo BifroMQ 2

Vale la pena mencionar que los módulos bifromq-dist, bifromq-inbox y bifromq-retain aprovechan al máximo las capacidades de base-kv para lograr una fuerte persistencia de consistencia distribuida para cargas clave. En el escenario de operación y mantenimiento de servicios en la nube sin servidor, esto es especialmente importante para garantizar el SLA.

▌Neutralidad : integración escalable y orientada a estándares

Como se mencionó anteriormente, BifroMQ se posiciona como un middleware que implementa el estándar MQTT, con más énfasis en la neutralidad y la integración. No al mismo nivel que otros proyectos de "paquete de plataforma IoT" que incluyen capacidades MQTT. Por lo tanto, el criterio para juzgar "¿Tiene BifroMQ una determinada función o admitirá una determinada función en el futuro?" es muy simple: todas las capacidades definidas por el protocolo MQTT pertenecen a la categoría que el proyecto bifromq necesita admitir, y todas las funciones más allá de la definición del protocolo MQTT, estamos más inclinados a existir como un componente o servicio independiente y se integra con BifroMQ de una manera que se ajuste al estándar MQTT. Este enfoque ayuda a crear servicios en la nube a mayor escala y promueve la madurez de las tecnologías relacionadas. Por supuesto, la integración de BifroMQ también se refleja en la integración del middleware con varios sistemas comerciales, que incluyen principalmente tres mecanismos: complemento, API y métricas:

▲ Arquitectura típica de integración de escenas

 

  • El mecanismo de complemento es la forma principal de realizar la integración de la lógica empresarial. bifromq actualmente define los siguientes módulos de interfaz de complemento:
    • bifromq-plugin-auth-provider: Implementar la autenticación del cliente y la lógica de autenticación de Pub/Sub basada en los temas de los mensajes.
    • bifromq-plugin-event-collector: implementa la lógica empresarial activada por varios eventos relacionados con MQTT
    • bifromq-plugin-setting-provider: implementa la lógica de gestión de cambios de configuración de tiempo de ejecución a nivel de inquilino
  • Las implementaciones de referencia de estas interfaces se pueden encontrar en el proyecto BifroMQ-Inside.
  • El mecanismo API (próximamente) proporciona la interfaz de administración HTTP en tiempo de ejecución de BifroMQ para implementar operaciones de administración básicas, como la administración de suscripciones y desconexión del lado del servidor.
  • El mecanismo de métricas utiliza la biblioteca de micrómetros para realizar la definición y el muestreo de indicadores, pero no limita el tipo de extremo de recopilación, por lo que el integrador empresarial puede personalizarlo (consulte el módulo de demostración de complemento de compilación en el proyecto).

 

▌Resumen _

En resumen, esta es una introducción general a la arquitectura técnica de BifroMQ. Espere con ansias nuestra próxima serie de artículos destacados que profundizarán en los diversos componentes y principios de diseño de BifroMQ.

Finalmente, para ayudarlo a comprender mejor la arquitectura técnica de BifroMQ, el 21 de septiembre (jueves) realizaremos una clase pública de transmisión en vivo en línea de BifroMQ . Le invitamos a prestar atención a la información en el grupo de intercambio de desarrolladores de BifroMQ mencionado anteriormente. y bloquee la transmisión en vivo con anticipación. ¡Dirija, intercambie y aprenda con la mayoría de sus compañeros!

 

Supongo que te gusta

Origin www.oschina.net/news/257113
Recomendado
Clasificación