Apache Doris设计思想介绍与应用场景
MPP ( Massively Parallel Processing ),即大规模并行处理,在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。简单来说,MPP 是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果 ( 与 Hadoop 相似 )。
MPP数据库的主要特点
分布式架构:MPP数据库通过将数据和处理任务分散到多个节点上,实现水平扩展,能够高效处理大量数据。
无共享架构:每个节点独立运行,拥有自己的资源,这增强了系统的可靠性和容错能力。
并行查询处理:可以在多个节点上并行执行查询,显著提高了性能。
数据分区:将数据划分为小块,每个节点负责特定部分,便于高效处理。
高性能计算:针对复杂分析和数据仓库进行了优化,支持并行处理和高效的存储引擎。
可扩展性:通过增加节点,可以轻松扩展以应对不断增长的数据量和用户需求。
高可用性:采用冗余和复制机制,确保系统始终可用,减少停机时间。
支持复杂查询:能够高效处理涉及多表连接、子查询和聚合的复杂查询。
列存储:许多MPP数据库使用列式存储,提升分析工作负载的性能。
与分析工具集成:与各种分析框架和商业智能平台兼容,便于数据驱动的决策。
Apache Doris
Apache Doris 是一个现代化的 MPP(大规模并行处理)数据库,主要用于实时分析和报表查询。它采用了分布式存储和计算架构,数据分片是其核心机制之一。Doris 主要解决 PB 级别的数据量(如果高于 PB 级别,不推荐使用 Doris 解决,可以考虑用 Hive 等工具),解决结构化数据,查询时间一般在秒级或毫秒级。
高效的数据传输机制:为了应对大规模数据读取和传输的需求,Doris 支持 Arrow Flight SQL 协议,这一协议能够显著提高数据传输效率,实现百倍飞跃。
冷热数据分层功能:在 Doris 2.0 版本中引入了冷热数据分层功能,可以将冷数据下沉到成本更低的对象存储中,同时减少因存储附加带来的开销。
易用性和运维成本低:Doris 设计上注重用户体验,具有极速易用的特点,仅需亚秒级响应时间即可返回查询结果。此外,它还具备较低的运维成本和使用成本
应用场景
报表分析:Doris 可以快速生成各种报表,适用于企业的经营分析决策、日志分析、用户行为洞察等场景。
即席查询:由于其高效的查询性能,Doris 也适用于需要即席查询的场景,比如临时的数据分析需求。
统一数仓构建:Doris 可以作为企业统一数仓的核心组件,支持复杂的查询和数据整合需求。
数据湖联邦查询加速:Doris 支持与位于 Apache Hive、Apache Iceberg 等平台的外部表联合查询,加速数据湖中的联邦查询。
用户行为分析和 AB 实验平台:用户可以基于 Doris 构建用户行为分析系统和 AB 实验平台,以优化产品和服务。
实时数据分析:Doris 在实时数据分析领域表现优异,适用于需要实时处理和分析大量数据的业务场景。
存算分离的架构主要有以下几个原因:
性能优化:将存储和计算分开,可以针对不同的需求优化各自的资源。例如,存储可以使用高效的列式存储格式,而计算节点则可以专注于执行复杂的查询。
灵活性与可扩展性:存算分离允许独立扩展存储和计算资源。当需要处理更多数据时,可以单独增加存储节点;当需要更强的计算能力时,可以增加计算节点。
资源利用率提升:存算分离使得计算资源可以根据需求动态调整,避免了资源的浪费。例如,计算负载较高时,可以临时增加计算节点,而不必同时增加存储节点。
简化维护:存储和计算的分离可以简化系统的维护和管理。可以独立更新或优化存储层和计算层,而不影响整体系统的运行。
支持多种数据访问模式:存算分离能够支持不同的数据访问场景,如批处理和实时分析,使得数据处理更加灵活。
降低成本:通过灵活配置存储和计算资源,企业可以根据实际需求选择合适的硬件和服务,降低整体运营成本。
Apache Doris的MetaService设计思想主要包括以下几个方面:
集中管理:MetaService负责管理和维护整个集群的元数据,包括数据库、表、分区等信息,提供集中化的管理方式,确保元数据的一致性和可靠性。
高可用性:通过引入主从复制机制,MetaService能够在主节点故障时迅速切换到备用节点,确保系统的高可用性,减少单点故障的风险。
实时更新:MetaService支持元数据的实时更新和快速读取,能够快速响应系统中的变化,保证数据的及时性和准确性。
分布式架构:MetaService设计为分布式架构,可以横向扩展,以适应大规模集群的需求,提升系统的整体性能和扩展性。
高性能:通过优化元数据的存储和访问方式,MetaService能够提供高效的元数据查询性能,支持快速的元数据操作。
灵活的事务处理:支持ACID事务,确保元数据操作的原子性和一致性,避免因并发操作导致的数据不一致。
多种数据源支持:MetaService能够与多种类型的数据源协同工作,便于集成和扩展。
FoundationDB 是由苹果公司开发并维护的高性能分布式数据库,设计用于处理大量结构化数据,具有高可用性、强一致性以及水平扩展等特性。
https://github.com/apple/foundationdb
FoundationDB在多节点的商用服务器集群上运行,通过分布式架构实现了高可扩展性。随着数据量的增长,可以轻松添加更多的服务器来扩展存储容量。
优化的算法和数据结构使得FoundationDB在读/写操作中表现出色,特别是在写密集型场景下,提供了高效的性能。
FoundationDB使用基于ACID事务的模型,确保了数据的一致性和完整性。无论是在读/写密集型工作负载下,都能保证数据在任何时候都是准确无误的。
学习曲线较陡峭:
作为一个功能强大的分布式数据库系统,FoundationDB的复杂性相对较高。对于初学者来说,可能需要花费一定的时间和精力来学习和掌握其使用方法和原理。
应用迁移相对困难:
由于FoundationDB不支持MySQL协议和SQL语法,对于已经使用MySQL等传统关系型数据库的应用程序来说,迁移到FoundationDB可能会面临一定的挑战。这包括数据迁移、应用程序改造等方面的工作
FoundationDB主要应用场景:
1. 金融行业
高频交易系统:FoundationDB的高性能和低延迟特性使其成为高频交易系统的理想选择,能够确保交易数据的实时性和准确性。
风险控制系统:在风险管理中,FoundationDB的强一致性和事务支持保证了数据的可靠性和一致性,有助于金融机构及时识别和控制风险。
2. 物联网(IoT)
实时数据处理:物联网平台需要处理来自各种设备的实时数据流,FoundationDB的分布式架构和高效读写性能能够满足这一需求,提供可靠的数据存储和查询服务。
设备状态监控:通过FoundationDB,物联网平台可以实时监控设备的状态,确保设备的正常运行和及时维护。
3. 电子商务
高并发订单处理:在电子商务平台中,FoundationDB能够支持高并发的订单处理,确保在促销活动或节假日等高峰期也能保持系统的稳定运行。
库存管理:通过FoundationDB,电子商务平台可以实时更新库存信息,避免超卖或库存积压等问题。
4. 游戏行业
实时多人在线游戏:FoundationDB的低延迟和高并发特性使其成为实时多人在线游戏的首选数据库,能够确保游戏过程中的流畅性和稳定性。
游戏数据分析:游戏公司可以利用FoundationDB存储和分析玩家的游戏数据,以优化游戏体验和制定营销策略。
5. 大数据分析
数据预处理和存储:FoundationDB可以用于预处理和存储大量的原始数据,为后续的数据分析任务提供可靠的数据源。
与大数据框架结合:FoundationDB可以与Hadoop、Spark等大数据框架结合使用,提供高性能的数据存储和查询服务,加速数据分析过程。
6. 云服务提供商
构建可扩展的云基础架构:云服务提供商可以利用FoundationDB构建可扩展、可靠的云基础架构服务,满足不同用户的存储需求。
弹性伸缩:随着数据量的增长,云服务提供商可以轻松添加更多的服务器来扩展FoundationDB的存储容量,确保服务的连续性和稳定性。
7. 实时应用
在线游戏、流媒体服务等:这些应用需要快速响应和频繁更新的数据操作,FoundationDB的高性能和低延迟特性能够满足这些需求。
FoundationDB架构图
日志存储与分析的经典场景
Apache Doris在日志存储与分析领域的实践指南:
- 整体架构:
- 日志采集和预处理:通过HTTP APIs,多种日志采集工具如Logstash、Filebeat等将日志数据写入Apache Doris。
- 日志存储和分析引擎:Apache Doris提供高性能、低成本的统一日志存储,并通过SQL接口提供丰富的检索分析能力。
- 日志分析和告警界面:支持通过标准SQL接口查询Apache Doris,提供简单易用的界面,如Grafana、Superset等。
- 特点与优势:
- 高吞吐、低延迟:支持每天百TB级、GB/s级日志数据持续稳定写入,延迟保持在1s以内。
- 低成本存储:支持PB级海量存储,相比Elasticsearch节省60%到80%的存储成本,冷数据存储到S3/HDFS可再降50%成本。
- 高性能检索分析:支持倒排索引和全文检索,常见查询秒级响应。
- 开放易用生态:上游对接Logstash、Filebeat等,下游对接Grafana、Superset等,兼容MySQL协议和语法。
- 高性能、低成本实现:
- 写入吞吐提升:利用SIMD等CPU向量化指令提升JSON数据解析速度和索引构建性能,写入性能是Elasticsearch的3~5倍。
- 存储成本降低:去掉正排索引,采用列式存储和Zstandard压缩算法,压缩比高达5~10倍,冷热分层功能进一步降低存储成本。
- 查询性能提升:简化全文检索流程,针对日志场景常见查询做专门优化,如TopN动态剪枝。
- 分析能力强:
- 标准SQL支持:兼容MySQL协议和语法,支持检索、聚合、多表JOIN等多种数据分析能力。
- Flexible Schema:支持动态字段增减和索引调整,适应日志数据的迭代变化。
新架构移除Kafka,ODS层直接到Doris
Apache Doris开源项目的目录结构通常包括以下主要部分:
1.
be/
(Backend)存放后端代码,包括存储引擎、查询处理等核心功能。 包括数据解析、执行计划、存储格式等模块。
2.
fe/
(Frontend)包含前端服务的代码,负责用户接口和SQL解析。 处理用户请求、SQL编译和查询优化。
3.
docs/
包含项目的文档,包括用户手册、开发指南和API文档。
4.
tests/
包含单元测试和集成测试的代码,确保代码质量。 分为不同的测试模块,便于管理和扩展。
5.
tools/
存放各种工具和脚本,用于构建、部署和管理Doris。 包括数据导入导出工具、监控工具等。
6.
conf/
包含配置文件和示例,帮助用户进行系统配置。
7.
examples/
提供示例代码和用例,帮助用户快速上手使用Doris。
结论
Apache Doris凭借其高性能、易用性和实时分析能力,成为多种数据分析场景的理想选择。无论是在商业智能、实时数据分析还是数据集成方面,Doris都能提供强大的支持,为企业决策提供数据驱动的洞察。
今天先到这儿,希望对AIGC,云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,信息安全,团队建设 有参考作用 , 您可能感兴趣的文章:
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变
如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:
作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-Petter Liu Blog。