NoSQL: cómo construir un sistema de publicidad en tiempo real utilizando la arquitectura NoSQL
La plataforma JDNoSQL es un servicio de almacenamiento KeyValue distribuido de nivel de milisegundos orientado a columnas que puede almacenar datos estructurados y no estructurados, admite lectura, escritura y actualización aleatorias y tiene un mecanismo de columnas dinámico flexible y soporte La arquitectura escalable horizontalmente puede proporcionar servicios de bases de datos de alta concurrencia, baja latencia, alta disponibilidad y sólida consistencia para satisfacer diversos escenarios comerciales. El soporte completo de la plataforma admite la creación de tablas de autoservicio, monitoreo de vistas, DDL en línea, etc.
1.1 La posición de JDNoSQL en el ecosistema
Como se puede ver en la figura anterior, JDNoSQL es un sistema de almacenamiento distribuido orientado a columnas construido sobre HDFS. JDNoSQL se utiliza cuando se requiere lectura/escritura en tiempo real y acceso aleatorio a conjuntos de datos muy grandes. Muchos proveedores extienden las bases de datos más allá de los límites de un único nodo mediante replicación y partición, pero estas características a menudo se agregan como una ocurrencia tardía y son complejas de instalar y mantener. JDNoSQL aborda el tema de la escalabilidad desde otro ángulo. JDNoSQL no es una base de datos relacional y no admite SQLC. Actualmente, SQL es compatible a través de JDPhoenix, pero tiene sus propias especialidades que RDBMS no puede manejar. JDNoSQL coloca inteligentemente tablas grandes y dispersas en clústeres de servidores básicos:
Grande: una tabla puede tener cientos de millones de filas y millones de columnas.
Orientado a columnas: almacenamiento orientado a listas (clúster) y control de permisos, independiente de la recuperación de columnas (clúster).
Escasa: para columnas vacías (NULL), no se ocupa espacio de almacenamiento, por lo que la tabla se puede diseñar para que sea muy escasa.
Sin modelo: cada fila tiene una clave primaria ordenable y se puede agregar cualquier número de columnas dinámicamente según sea necesario. Diferentes filas en la misma tabla pueden tener columnas muy diferentes.
Múltiples versiones de datos: cada celda puede tener múltiples versiones de datos. De forma predeterminada, el número de versión se asigna automáticamente y el número de versión es la marca de tiempo cuando se inserta la celda.
Tipo de datos único: Los datos en JDNoSQL son todos cadenas y no tienen ningún tipo.
Escenarios de aplicación
El uso de NoSQL en JDNoSQL implica principalmente los siguientes escenarios:
Negocios de temporización (monitoreo, Internet de las cosas)
Mensajes Órdenes (pedidos/políticas, registros de chat)
Análisis CUBE (órdenes grandes en tiempo real, informes, recomendaciones de búsqueda)
Monitoreo (UMP/MDC/CAP/JDH)
Transmisión de feeds de negocios (información de calificación, información de preguntas y respuestas, flujo en cascada, círculo de amigos)
Almacenamiento de IA (características del usuario, corpus de PNL, almacenamiento de modelos)
Espacial y datos temporales (trayectoria, Red meteorológica)
Negocios financieros (análisis de correlación, análisis de crédito, control de riesgos/marca blanca/pagos/gestión de fondos)
2.1 Sistema de cálculo publicitario en tiempo real basado en NoSQL
2.1.1 Varias características importantes de la publicidad online:
En comparación con la publicidad tradicional, la publicidad online presenta algunas características propias. Comprender estas características es la base de la esencia del marketing publicitario online. estrategias. Las características de la publicidad en línea son las siguientes:
Amplia gama de comunicación: la publicidad en línea tiene una amplia gama de comunicación y no está limitada por el tiempo y el espacio. La información publicitaria se puede difundir a todas partes del mundo. Internet las 24 horas del día. El número de internautas en nuestro país es enorme y sigue creciendo rápidamente. Estos internautas tienen un gran poder de consumo y son el público de los anuncios en línea. Pueden buscar anuncios en Internet a voluntad en cualquier parte del mundo. logrado por cualquier medio tradicional.
Difusión de información no obligatoria: la publicidad online tiene los atributos de la publicidad bajo demanda y la naturaleza de los anuncios clasificados de los periódicos, pero no requiere que la audiencia navegue exhaustivamente, puede realizar consultas de forma libre y activa. Presentar y presentar información según las necesidades de los clientes potenciales. Display no sólo ahorra recursos de atención de toda la sociedad, sino que también mejora la pertinencia y eficacia de la publicidad.
La cantidad de datos de audiencia se puede contar con precisión: en la publicidad en los medios tradicionales, es difícil saber con precisión cuántas personas han estado expuestas a la información publicitaria, la publicidad en Internet, a través de un sistema de estadísticas de tráfico justo y autorizado, puede cuente con precisión las vistas antes de cada anuncio. El número de usuarios, la duración de su visita, la distribución geográfica, etc., ayudan a evaluar correctamente los efectos publicitarios y optimizar aún más las estrategias publicitarias.
Puntualidad flexible: la publicidad en Internet se puede actualizar a tiempo según sea necesario.
Fuerte comunicación y sensorial: Los soportes de la publicidad en Internet son básicamente multimedia, hipertexto, etc., que exigen que la audiencia se interese por el producto y con solo hacer clic podrá conocer más, información más detallada y más vívida. Incluso permitir a los consumidores experimentar productos, servicios y marcas personalmente. A través de la tecnología de realidad virtual, los clientes pueden sumergirse en la escena.
2.1.2 Tipos de datos de la publicidad online:
La publicidad online recoge muchos tipos de datos, entre los que los cuatro más críticos son: impresiones, clics, comportamiento y datos de terceros. escucha.
Datos de visualización de publicidad
Los datos de visualización de publicidad se refieren a los datos obtenidos de la visualización de posiciones publicitarias. Por lo general, estos datos deben enviarse al servidor para contar el volumen de visualización de publicidad. (adpv) analizar. Normalmente, los datos incluyen información como fecha, ID de usuario, ID de publicidad e IP. El siguiente es el formato de datos de visualización de anuncios de la expansión del campo JSON:
2015-01-13 19:11:55{00D81D1D-00A291-0E2300-87DBCE0DA90} {?{?adia?:"31769", "asid ": "2", "aspid": "0", "PTIME": "14", "ag": "4, 5.20, 26.1908", "ecode": "15", "type": "2 ", "dp1": "1", "adpid": "0", "dsp": "0", "source": "s"}61.237.239.3 Tianjin Tianjin
Datos de clics publicitarios
Los datos de clics en anuncios se refieren a los datos de clics del usuario obtenidos de cada posición del anuncio. Estos datos generalmente deben enviarse al servidor para el análisis estadístico de los clics en anuncios (adclick). Normalmente, los datos de clics incluyen información como fecha, ID de usuario, ID de publicidad e IP. El siguiente es el formato de datos de los clics en anuncios, que no es muy diferente de la visualización de anuncios:
2015-01-13 00:11:06{D33333C3-000C84-2345FB-DB768EC56}{"wid": "13" , "aid": "103297", "vid": "1446779 "adid": "29260", "asid": "1", "aspid": "1", "mid": "16507". ", " mg": "155", "area": "13", "dsp": "3"}175.8.146.246 Ciudad de Changsha, provincia de Hunan
Datos de comportamiento publicitario
Datos de comportamiento publicitario Se refiere a los datos de descarga, instalación o transacción del usuario obtenidos a través de espacios publicitarios. Generalmente, estos datos deben enviarse al servidor para el análisis del comportamiento publicitario (adaction). En términos generales, los datos de comportamiento publicitario incluyen información como fecha, ID de usuario, ID de publicidad e IP.
El siguiente es un formato de datos de comportamiento publicitario, que no es muy diferente de los datos de visualización de publicidad, excepto que parte de la información en los campos extendidos JSON es diferente:
2015-01-13 09:59:39{00567D26AD -565D01-C2238-F99000C0A0}{"adid": "234555", "asid": "562", "aspid": "12", "type": "1"}120.29.183.47 Ciudad de Ningde, provincia de Fujian p >
Datos de seguimiento de terceros
Para facilitar que los anunciantes comprendan los hábitos de navegación de los medios online de los consumidores objetivo, la probabilidad de conversión en clientes, etc., y obtener resultados justos, objetivos, e información estadística autorizada, monitoreo de terceros y también se generarán datos de monitoreo, incluida la fecha, la identificación de publicidad y la identificación de usuario. El siguiente es un ejemplo de datos de seguimiento de terceros:
2014-12-31 108A451BD3787_22E6_D020_786DF2695B {000AD54073-19DDC2-971F26-36F4119425}
2.1.3. /p>
El valor de los datos disminuye con el tiempo, por lo que los eventos deben procesarse tan pronto como ocurren. Idealmente, los datos deben procesarse tan pronto como ocurren, un evento a la vez, en lugar de almacenarlos en caché y por lotes. . En el modelo de flujo de datos, los datos de entrada a procesar (todos o parte de ellos) no se almacenan en un disco o memoria de acceso aleatorio, sino en uno o más flujos de datos continuos. Llegan en uno o más flujos continuos. Los datos se diferencian de los modelos tradicionales de almacenamiento relacional en varios aspectos:
Los elementos de datos del flujo de datos llegan en línea y requieren procesamiento en tiempo real
El sistema no puede controlar el procesamiento de los elementos de datos recién llegados orden, ya sea que estén en un solo flujo de datos o en múltiples flujos de datos, es decir, el flujo de datos reproducido puede no tener el mismo orden de elementos que el flujo de datos anterior;
El tamaño potencial del flujo de datos puede ser ilimitado.
Una vez que se procesan los elementos del flujo de datos, se descartan o se archivan para su almacenamiento.
2.1.4 Funciones principales del sistema
Este sistema actualmente solo sirve a la industria publicitaria. Requiere que los datos de visualización de publicidad y los datos de clics publicitarios se puedan reflejar en el sistema de inventario en tiempo real. tiempo El sistema de inventario se puede basar en el existente. Calcule la estrategia de entrega posterior en función del volumen de entrega. Al mismo tiempo, también puede contar el volumen de visualización de determinados anuncios todos los días del mes y se puede dividir en tres dimensiones: provincia, ciudad y usuario. Bajo la premisa de cumplir con las funciones anteriores, el rendimiento del sistema requiere un retraso de 30 segundos y admite solicitudes de acceso con un TPS máximo = 500 W.
2.1.5. Arquitectura del sistema
Con base en el análisis de demanda previo, los objetivos de diseño y los principales requisitos funcionales, todo el sistema informático publicitario en tiempo real se divide en seis capas: recepción de registros. capa, capa de productor, capa de cola de consumidores, capa de consumidor, capa de lógica empresarial y capa de almacenamiento. Entre ellos, la cola de mensajes utiliza la canalización de datos en tiempo real JDQ para proporcionar una cola de mensajes distribuidos de alto rendimiento basada en Kafka para escenarios de computación de transmisión, la capa de lógica empresarial utiliza la computación de transmisión JRC de JD.com para proporcionar computación de transmisión basada en Flink para la computación de transmisión; escenarios de motor; el almacenamiento adopta almacenamiento distribuido NoSQL con alta concurrencia, baja latencia y alta disponibilidad, que puede alcanzar un alto rendimiento de 10 millones de QPS y lectura y escritura aleatoria. El diagrama de arquitectura es el siguiente:
Capa de recepción de registros
Esta capa es la fuente de datos y genera archivos de registro locales a través de la herramienta de recepción de registros. Las herramientas de recepción más utilizadas incluyen Scribe, Nginx, Syslog-ng, Apache Http Server, etc. Una vez recibidos, estos flujos de datos se almacenan en archivos del disco local.
Capa de productor (Capa de producción)
Esta capa es la capa de transmisión de datos, que se utiliza para generar archivos de registro localmente en el clúster de Kafka, monitorear archivos o directorios específicos en tiempo real y extraer incrementos Los datos se envían al clúster de Kafka.
Capa de cola de mensajes
Esta capa es el clúster Kafka, que es responsable del equilibrio de carga y el almacenamiento en búfer de mensajes de los datos de entrada. También tiene las características de alto rendimiento y buena escalabilidad horizontal. Se eligió Kafka para la capa de cola de mensajes porque Kafka se centra en el rendimiento y tiene capacidades de almacenamiento en búfer.
Capa de consumo
Esta capa consume mensajes en la cola de Kafka e ingresa la cantidad de mensajes en la capa de lógica de negocios, que es una subcapa de las capas superior e inferior. Dado que la capa de lógica empresarial utiliza el marco de Flink, todas las capas de consumidores deben estar conectadas a los clústeres de Kafka y Flink.
Capa de lógica empresarial
Esta capa es una subcapa importante para realizar requisitos. El marco Flink se puede utilizar para implementar fácilmente requisitos comerciales de diferentes reglas y lograr un cálculo rápido.
Capa de almacenamiento
El almacenamiento de destino elige utilizar almacenamiento distribuido NoSQL, que puede satisfacer las actualizaciones en tiempo real de alto rendimiento y baja latencia, encontrar las necesidades comerciales de algunos escenarios específicos, y también puede satisfacer las necesidades de expansión horizontal.
2.1.6. Diseño de tablas
Para satisfacer las necesidades de consultas de resultados finales en tiempo real y estadísticas regulares, y almacenar los datos de los resultados en NoSQL, primero debe definir la estructura de la mesa. Dado que los datos incluyen dos tipos de datos no relacionados, impresiones de anuncios y clics en anuncios, y las direcciones comerciales son diferentes, es necesario crear dos tablas para almacenar las estructuras estadísticas de estos dos tipos de datos.
La tabla de estadísticas de visualización de publicidad en tiempo real
El diseño estructural de la tabla de estadísticas de visualización de publicidad en tiempo real es el siguiente:
El diseño de las filas Es muy crítico. La tabla contiene tres tipos de filas, que se distinguen respectivamente por nombre de provincia, nombre de ciudad y uid, que se utilizan para contar datos de manera más eficiente en estas tres dimensiones. La familia de columnas y el número de columna son 1. La siguiente es una tabla estadística de estadísticas de publicidad en tiempo real. Tome una fila de datos como ejemplo, en la que el campo de valor está representado por un código de bytes hexadecimal y es un número entero largo.
29260_{2EEBEE83-EEE4-EAE6-1F0D-A27AB14549FC}_20150117 columna=pv:cnt, marca de tiempo=1390261754783, valor= \x00\\x00\x00\x00\x00\x00\x00\x00\ x00\x00\x00\x.
Tabla de estadísticas de clics publicitarios en tiempo real
La estructura de la tabla de estadísticas de clics publicitarios en tiempo real es la siguiente:
En comparación con la tabla de estadísticas de visualización de publicidad en tiempo real. En comparación con la tabla de estadísticas de clics en tiempo real, es obviamente mucho más simple. Solo hay un tipo de fila para crear: adid_plus_date, que es muy convencional en cuanto a familia de columnas y cantidad de columnas; ambos son 1. A continuación se muestra una fila de datos de la tabla de estadísticas de clics publicitarios en tiempo real. Este es un ejemplo de una fila de datos en la tabla de estadísticas de clics publicitarios en tiempo real. El campo de valor está representado por un código de bytes hexadecimal y es un número entero largo.
36713_20150117 columna=clk:cnt, marca de tiempo=1390374472961, valor=\\\x00\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06
2.1.7. Uso de estadísticas NoSQL
Basado en la descripción y la implementación del diseño de estructura de tabla anterior, esta estructura admite los siguientes requisitos de consulta en tiempo real:
A determinado anuncio en una determinada provincia Estado de entrega actual.
La ubicación actual de un anuncio en una ciudad determinada.
El estado de entrega actual de un anuncio en el cliente del usuario
El estado de clic actual de un anuncio
La tendencia histórica de entrega de un anuncio en una determinada provincia , el tiempo acumulado (por ejemplo, un mes)
Tendencia histórica de entrega de un anuncio en una determinada ciudad, tiempo acumulado (por ejemplo, un mes)
Tendencia histórica de entrega de un anuncio en una determinada ciudad, tiempo acumulado (por ejemplo, un mes))
La tendencia histórica de publicación de un anuncio en una determinada ciudad, tiempo acumulado (por ejemplo, un mes)
La tendencia histórica de publicación de un anuncio en el cliente del usuario, tiempo acumulado (por ejemplo, un mes)
La tendencia de clics de un determinado anuncio, el tiempo acumulado (por ejemplo, un mes)
Al encapsular el cliente NoSQL, los requisitos anteriores se pueden lograr fácilmente y se pueden cumplir los requisitos en tiempo real. Implemente rápidamente la visualización de datos front-end con la ayuda de marcos de JavaScript de código abierto como echarts, highcharts, d3.js y más.
Resumen
Según las predicciones de Gartner, se espera que la base de datos global no relacional (NoSQL) mantenga una alta tasa de crecimiento de alrededor del 30% de 2020 a 2022, que es mucho mayor. que el mercado general de bases de datos. Con el auge y el desarrollo de NoSQL y las tecnologías de big data, las plataformas de procesamiento de datos integrales de bajo costo y los ecosistemas NoSQL basados en NoSQL están en auge. Actualmente admite NoSQLAPI, PhoenixSQL relacional, OpenTSDB temporal, búsqueda de texto completo Solr/ES, GeoMesa espaciotemporal, gráfico HGraph, Spark analítico en HBase, etc. Con el rápido desarrollo de NoSQL, el grupo de usuarios de NoSQL es cada vez mayor. En el futuro, NoSQL y el ecosistema NoSQL podrán satisfacer mejor varios escenarios comerciales.
NoSQL: Cómo usar la arquitectura NoSQL para construir un sistema de publicidad en tiempo real
Etiquetas: Relacionado Cómo usar diferentes descripciones echarts de ptime para obtener una alta concurrencia de lápiz