当前位置: 首页 > news >正文

现代企业级应用架构

1. 前端 (FrontEnd)

  • APP: 应用程序,用户通过手机或电脑上的应用程序与系统交互。
  • Web Page: 网页,用户通过浏览器访问的网页界面。
  • H5: HTML5,一种网页技术,用于构建动态和交互式的网页内容。
  • Landing page: 登陆页面,用户首次访问时看到的页面,通常用于引导用户进行下一步操作。

2. 后端 (Backend)

业务模块 (Business Module)
  • User Management Module: 用户管理模块,处理用户注册、登录、个人信息管理等功能。
  • Order Management Module: 订单管理模块,处理订单创建、修改、查询等操作。
  • Payment Module: 支付模块,处理支付流程,包括支付方式选择、支付确认等。
  • Delivery Module: 配送模块,处理配送相关的业务,如配送地址管理、配送状态更新等。
  • Menu Management Module: 菜单管理模块,管理商品或服务的菜单信息。
  • Restaurant Management Module: 餐厅管理模块,针对餐饮行业的业务管理,如餐厅信息管理、菜品管理等。
  • Marketing Module: 营销模块,处理营销活动、促销信息等。
  • Search and Recommendation Module: 搜索和推荐模块,提供搜索功能和个性化推荐服务。
  • API Gateway (Interface Service Module): API网关(接口服务模块),作为系统的统一入口,负责请求的路由、协议转换、安全控制等。
存储组件 (Storage components)
  • Cache (Redis, Memcached): 缓存(Redis, Memcached),用于存储频繁访问的数据,提高访问速度。
  • RDBMS (PostgreSQL, MySQL): 关系型数据库管理系统(PostgreSQL, MySQL),用于存储结构化数据。
  • Message Queues (RabbitMQ, Kafka): 消息队列(RabbitMQ, Kafka),用于异步通信和解耦系统组件。
  • NoSQL (MongoDB, HBase): 非关系型数据库(MongoDB, HBase),用于存储大规模的非结构化或半结构化数据。
  • Search Engines (Elasticsearch): 搜索引擎(Elasticsearch),提供全文搜索和数据分析功能。
  • Content Delivery Networks: 内容分发网络,用于加速静态资源的分发。

3. 日志收集 (Log Collection)

  • CDC (Changed Data Capture): 变更数据捕获,用于实时捕获数据库中的数据变更。
    • Canal: 一种开源的CDC工具。
    • Flink CDC: 基于Apache Flink的CDC解决方案。
    • Debezium: 一种开源的CDC框架。
    • Sqoop: 用于在Hadoop和关系型数据库之间传输数据的工具。
  • Logging Server: 日志服务器,用于收集和存储系统日志。
  • Message Queue (Kafka): 消息队列(Kafka),用于日志的异步传输和处理。

4. 分布式存储 (Distributed Storage)

  • Offline DW (S3/HDFS/HBase/DataLake): 离线数据仓库(S3/HDFS/HBase/DataLake),用于存储和处理离线数据。
  • Real-time DW (Kafka/Clickhouse/DataLake): 实时数据仓库(Kafka/Clickhouse/DataLake),用于存储和处理实时数据。

5. 查询引擎 (Query Engine)

  • Hive: 一种数据仓库工具,用于处理大规模数据集。
  • Impala/Greenplum: 实时查询引擎,提供快速的数据查询和分析能力。
  • Clickhouse: 一种列式数据库,适用于实时数据分析。
  • Doris(StarRocks): 一种高性能的分布式分析型数据库。
  • Kylin: 一种开源的分布式分析引擎,适用于大规模数据集的多维分析。
  • Presto (Only Computer): 一种分布式SQL查询引擎,适用于大规模数据集的快速查询。
  • Druid (Only Computer): 一种实时数据分析系统,适用于实时数据的聚合和查询。
  • Spark (Only Computer): 一种通用的分布式计算框架,适用于大规模数据处理和分析。

6. 可视化仪表盘 (Visualization Dashboard)

  • Superset: 一种开源的数据探索和可视化平台。
  • Tableau: 一种商业智能和数据分析工具,提供丰富的可视化功能。
  • Microsoft Power BI: 一种商业智能工具,用于数据可视化和分析。
  • Self built (Echarts): 自建的可视化工具,基于Echarts库开发。

针对查询引擎的扩展:

详细分类与解释

1. 批处理引擎(Batch Processing)

这类引擎擅长处理海量数据,但延迟较高,不适合交互式查询。

  • Hive: 是Hadoop生态的元老。它通过将SQL翻译成MapReduce/Tez/Spark作业来运行。优势是稳定、容错性好、生态成熟。劣势是延迟非常高,因为中间结果要写磁盘。适用于今天分析昨天数据的“T+1”离线场景。
  • Spark SQL: 是Spark生态的组件。它利用内存计算和DAG执行引擎,比Hive快一个数量级。它不仅是查询引擎,更是通用的分布式计算框架,可以无缝衔接ETL、流处理、机器学习等任务。
2. MPP引擎(大规模并行处理)

这类引擎将任务并行化分配到多个节点同时执行,专为低延迟、交互式查询设计。

  • Presto: 由Facebook开发。它不依赖MapReduce,而是纯MPP架构,数据在内存中管道化传输,延迟很低。最大的特点是联邦查询,可以一条SQL查询Hive、Kafka、MySQL、Redis等多种数据源。但它只是一个查询引擎,不负责数据存储和管理。
  • Doris / StarRocks: 是近年来非常流行的新一代MPP分析型数据库。它集存储和计算于一体,架构简单(无需依赖Hadoop系列组件),性能极其出色。它在高并发点查询(数千QPS)和复杂SQL查询方面都有很好表现,是许多公司构建实时数仓的首选。
  • ClickHouse: 由Yandex开发。它最大的优势是单表查询性能,在压缩比和向量化执行引擎上做到了极致,特别适合对单张海量表进行聚合过滤。但它的短板是多表JOIN性能较弱,对事务支持有限。非常适合日志、点击流等宽表分析。
  • Impala / Greenplum: 是更早期的MPP方案。Impala与Hadoop生态紧密集成,类似于Presto。Greenplum是基于PostgreSQL的MPP数据仓库,功能完备,但架构相对较重,在云原生时代面临新引擎的挑战。
3. 预计算与特殊场景引擎

这类引擎通过牺牲灵活性来换取极致的查询性能。

  • Kylin: 核心思想是“空间换时间”。它在数据导入阶段就根据预定义的维度(Cube)计算出所有可能的聚合结果。查询时直接返回结果,速度极快。但一旦业务需求变更(如增加维度),需要重新构建Cube,灵活性很差。适用于指标和维度固定的固化报表。
  • Druid: 专为时序数据和事件数据优化。它支持实时数据摄入,并自动对数据进行预聚合(Roll-up),非常适合做实时监控大盘。它能承受极高的查询并发,但复杂查询能力不如通用的MPP引擎。

如何选择?

选择哪个查询引擎,取决于你的具体需求:

  • 做T+1的离线ETL和报表?->HiveSpark(如果对速度有要求)。
  • 需要交互式地探索数据,且数据源多样?->Presto
  • 构建高并发的实时报表系统,要求低延迟且架构简单?->Doris / StarRocks
  • 分析海量的用户行为日志或事件数据,主要是单表聚合?->ClickHouse
  • 需要做实时监控,查询QPS要求极高?->Druid
  • 业务指标固定,要求亚秒级响应的固定报表?->Kylin

在实际的大数据平台中,这些引擎常常是共存和互补的,共同组成一个Lambda架构数据湖仓一体架构

现代企业级数据平台几乎都是多种查询引擎(乃至更广泛的数据处理组件)的结合体。这种结合不是为了替代,而是为了互补,以构建一个能够满足不同业务场景、不同数据延迟要求、不同成本考量的统一数据平台。

这种结合的核心思想是:将正确的工具用于正确的场景

下面通过几个关键维度来阐述它们是如何结合的:


1. 按数据处理流程结合(Lambda / Kappa 架构思想)

这是最常见的结合方式,根据数据产生、处理到消费的整个生命周期,在不同阶段使用不同的引擎。

典型流程:

  • 实时数据流:

    • 数据源:应用日志、数据库变更(CDC)、用户点击流。
    • 引擎/组件:Kafka(消息队列)作为实时数据总线。
    • 处理:FlinkSpark Streaming进行实时ETL、数据清洗、聚合,形成实时流。
  • 批量数据导入:

    • 数据源:业务数据库(MySQL, PostgreSQL)的日终快照、传统ETL文件。
    • 引擎/组件:SqoopDataX将数据批量导入数据湖/仓。
    • 处理:SparkHive进行复杂的、批量的数据清洗、转换和整合(T+1作业)。
  • 数据存储与分层:

    • 原始层/数据湖(ODS):存储在HDFSS3上,由Hive管理元数据。
    • 明细层/轻度汇总层(DWD/DWS):经过清洗和轻度聚合的数据,可能存储在HDFS/S3(由Hive/Spark管理)或直接导入到ClickHouse/Doris中以获得更快的查询速度。
    • 应用层/集市层(ADS):为特定业务场景高度聚合的数据,存储在DorisClickHouseRedis或关系型数据库中,供应用直接调用。
  • 数据查询与服务:

    • 交互式即席查询:分析师使用PrestoTrino直接查询数据湖(HDFS/S3)中的数据,探索原始或轻度汇总的数据,避免数据移动。
    • 高性能OLAP分析:面向高并发、低延迟的报表和BI系统,将数据导入DorisStarRocks,利用其MPP架构提供极速查询体验。
    • 超高并发点查与监控:实时监控大盘、用户行为分析等场景,使用ClickHouseDruid
    • 固化报表:对固定维度的报表,使用Kylin进行预计算,实现亚秒级响应。

2. 按业务场景结合(多引擎并存)

一个成熟的企业数据平台会同时运行多个引擎,由不同的业务团队或应用按需调用。

3. 技术上的互补性结合

  • Presto + Hive:这是经典的“解耦”组合。Presto负责高性能查询,而Hive仅作为元数据仓库(Hive Metastore)。Presto通过读取Hive的元数据来理解存储在HDFS或S3上的数据结构和位置。这样,数据存储和计算能力就分开了。
  • Spark + 所有其他引擎:Spark作为强大的数据加工厂,可以读取Hive、HBase、Kafka中的数据,进行复杂的ETL处理,然后将结果输出到Doris、ClickHouse、Elasticsearch等任何适合查询的引擎中。它扮演着数据搬运和转换的核心角色。
  • 数据湖仓一体(Data Lakehouse):这是当前的主流趋势。以Apache IcebergHudiDelta Lake等表格式为基础,在数据湖(S3/HDFS)之上提供类似数据仓库的管理能力和事务支持。在这种情况下,SparkFlink用于数据写入和加工,而TrinoSparkDoris都可以作为查询引擎直接查询这些开放格式的数据,实现了批流一体、存算分离的现代化架构。

总结

在企业应用中,将这些查询引擎结合起来,可以构建一个层次清晰、分工明确、弹性可扩展的数据架构:

  • Hive/Spark作为可靠的批处理和数据管理基石
  • Flink作为实时处理的骨干
  • Presto/Trino作为数据探索和联邦查询的瑞士军刀
  • Doris/StarRocks、ClickHouse、Druid作为面向最终应用和用户的高性能专业化查询终端

这种“组合拳”的方式,确保了企业能够以合理的成本,高效地应对从离线到实时、从探索到服务、从低并发到高并发的全方位数据挑战。

http://www.jsqmd.com/news/306876/

相关文章:

  • 嵌入式系统中WS2812B驱动程序优化技巧:深度剖析
  • STM32H7多核环境下的FreeRTOS配置注意事项
  • 中文NLU大模型SiameseUniNLU实操手册:模型蒸馏+量化部署至INT8边缘设备全流程
  • VibeVoice 实时语音合成:5分钟搭建你的AI配音系统
  • Z-Image+ComfyUI组合太强了!中文图文匹配精准
  • BGE-Reranker-v2-m3安装失败?tf-keras依赖解决教程
  • BAAI/bge-m3参数详解:影响语义相似度的关键配置项
  • 零基础入门PyTorch开发环境:手把手教你使用PyTorch-2.x-Universal-Dev-v1.0镜像
  • RexUniNLU中文-base参数详解:DeBERTa架构适配与显存优化实践
  • MedGemma-X临床反馈闭环:医生修正标注→模型在线微调→效果迭代验证机制
  • Flowise快速上手:10分钟构建智能客服工作流
  • YOLOv12官版镜像在边缘设备上的运行效果实测
  • usb serial port 驱动下载配置:新手快速上手指南
  • CogVideoX-2b操作详解:WebUI各项参数功能说明文档
  • 2026报关公司哪家性价比高?综合服务与专业度深度解析
  • GLM-Image镜像免配置部署教程:Ubuntu+RTX4090开箱即用全流程
  • AutoGLM-Phone-9B核心优势解析|附多模态推理实战案例
  • 从下载到调用,Qwen3-Embedding-0.6B全流程解析
  • Qwen2.5-VL-7B效果展示:1小时长视频关键事件定位实测
  • 5分钟部署GLM-4.6V-Flash-WEB,系统界面OCR识别轻松上手
  • Glyph视觉推理落地应用:如何实现高效文本语义建模?
  • ChatGLM3-6B-128K企业级应用:Ollama支持知识库问答、会议纪要生成、多轮客服
  • PyTorch-2.x-Universal-Dev-v1.0镜像提升团队协作开发效率
  • ms-swift训练全流程:从数据准备到模型推送ModelScope
  • 复杂背景人像抠图难?试试这个AI模型的真实表现
  • 替代Photoshop?这款开源AI工具表现惊人
  • 实战应用:用GPEN镜像为家庭老照片一键高清化
  • 预装依赖不求人!GPEN镜像省去安装烦恼
  • ChatGLM-6B教学辅助:AI助教在在线教育中的实践
  • 基于KiCad的STM32最小系统设计实战案例(含PCB布线)