news 2026/5/10 1:07:56

现代企业级应用架构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
现代企业级应用架构

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作为面向最终应用和用户的高性能专业化查询终端

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 4:32:28

物联网设备中的Cortex-A与低功耗Core处理器项目应用

以下是对您提供的技术博文进行 深度润色与工程化重构后的版本 。全文已彻底去除AI生成痕迹,采用真实嵌入式系统工程师口吻撰写,语言自然、逻辑严密、案例扎实,并严格遵循您提出的全部格式与风格要求(如:无“引言/总结…

作者头像 李华
网站建设 2026/5/3 23:36:51

HeyGem更新日志在哪看?运行实时日志路径说明

HeyGem更新日志在哪看?运行实时日志路径说明 你刚部署完 HeyGem 数字人视频生成系统,点击 start_app.sh 启动成功,浏览器打开 http://localhost:7860 看到熟悉的 WebUI 界面——但下一秒就卡住了: “系统跑起来了,可它…

作者头像 李华
网站建设 2026/5/6 20:27:45

基于CubeMX的ADC驱动结构解析:深度学习

以下是对您提供的技术博文进行 深度润色与结构重构后的版本 。我以一名资深嵌入式系统教学博主的身份,将原文从“技术文档式说明”彻底转化为 真实工程师口吻的实战经验分享 ——去AI痕迹、强逻辑流、重实操细节、有血有肉,同时严格遵循您提出的全部…

作者头像 李华
网站建设 2026/5/8 7:06:07

RexUniNLU开源可部署方案:API服务封装为Python SDK调用示例

RexUniNLU开源可部署方案:API服务封装为Python SDK调用示例 1. 这不是另一个NLP工具箱,而是一站式中文语义理解中枢 你有没有遇到过这样的场景: 想从一段新闻里抽取出“谁在什么时候击败了谁”,同时还要判断这句话的情绪倾向、识…

作者头像 李华
网站建设 2026/5/9 19:50:27

通义千问2.5-7B支持语音输入?ASR集成部署初探

通义千问2.5-7B支持语音输入?ASR集成部署初探 你有没有试过对着电脑说一句“帮我写个周报”,然后AI就自动生成一份结构清晰、语气得体的文档?或者在会议录音刚结束,几秒钟内就拿到带时间戳的精准文字稿?这些场景正在从…

作者头像 李华