大数据场景下的分布式系统性能优化之道
随着大数据技术的飞速发展,云计算、人工智能、IoT、通信等领域的技术也不断出现相关的新突破。作为这些领域发展的基础,大数据俨然已成为现阶段各应用场景下不可或缺的基础之一。并且随着互联网的持续深化,大数据也呈现出"日常化"的趋势,对于很多领域的企业来说,大数据就是日常所面临的应用场景。那么应该如何在大体量数据的场景下,确保应用开发效率与系统性能不受影响?
11 月 15 日,【DevRun·选择不凡,华为云开发者沙龙 2019】走进杭州,为大家带来各位开发者所关注的 OLAP 数据分析、分布式系统性能优化、快速构建 IoT 体系、人工智能在通信领域的应用等众多议题,现场为大家解读大数据场景下的应用开发与系统架构搭建的方法论。
数据体量越来越大,对于数据的综合处理与分析能力也就愈发重要,但是传统数据库难以满足海量数据的性能要求,MPP 数据库在企业数字化转型过程中的作用愈发凸显。现场,华为 GaussDB OLAP 数据库架构师李新剑老师,为大家解密 GaussDB OLAP 数据库的架构与核心竞争力。
GaussDB OLAP 数据库是一款具备分析及混合负载能力的分布式数据库,支持 x86 和华为鲲鹏硬件架构,支持行存储与列存储,提供 PB(Petabyte) 级数据分析能力、多模分析能力和实时处理能力,可用于数据仓库、数据集市、实时分析、实时决策和混合负载等场景,以及金融、政府、电信等行业核心系统。
GaussDB 逻辑架构图
其主要具备高扩展、高可靠、高性能、易运维、标准 SQL、云服务这 6 大特性。但是在实际应用中,往往会遇到如 x86 PC Server 集群架构下单核处理能力有限以及未来 ARM64 众核架构下,解决众核、Numa 架构资源利用等问题。
使用全并行计算,最大化利用系统计算资源利用率,提升处理性能。其中涉及到分布式执行框架、多线程并行算法、SIMD+ 向量化引擎以及 LLVM 编译执行方法。
行列混合引擎,用表级别指定行存和列存,可根据点查询、数据更新、统计分析、批量加载等场景下选择不同的存储类型。
列存向量化执行技术,通过向量化执行相对于传统的执行模式:一次一元组的模型 -- > 一次一批元组,提升迭代器模型效率,以达到提高 CPU 利用率、新硬件加速以及提升磁盘 I/O 效率的目的。
分布式并行计划,基于 PG 的 pipeline 机制引入流算子处理 DN 间数据的交互方式,打造全新的生产者 - 消费者模型分布式最优计划选择,采用全局统计信息技术和分布式代价估算方法,集合 Local/global 双重处理机制,以达到提前缩小结果集大小,减少网络传输、减少网络重分布的目的。
支持多业务统一管理的弹性集群,通过智能优化器用户的每个 query 找到正确的逻辑集群与性能最佳的数据,打造弹性集群的智慧大脑。
SMP 和多 Node Group 技术,是利用代价估算和路径搜索生成不同 dop 和 dn 数的计划,基于在线扩容的技术基础上,利用多个 DN 的计算资源 candidate 生成执行计划,再根据代价选择合适的 node 集合进行计划执行。
执行引擎性能优化,使用向量化引擎来满足一次调用处理多行数据并减少调用次数,同时使用 LLVM 技术,预存动态编译的机器码,减少运行时 CPU 指令数。
内存自适应技术,其关键在于语句级内存估算、语句级内存调整、执行内存自适应的三步走战略。
在线扩容技术,通过引入一套增量机制记录扩容重分布过程中的数据修改(增删改),等基线数据重分布完成后,将增量数据合入集群中。并支持算子下推到 Data Node,极大的提高了扩容期间关联查询的性能。
在应用迁移的过程中,分析扫描工具、移植工具、调优工具以及加速库永远是最受关注的四个部分。会上,华为智能计算架构设计专家罗靖老师,为大家详细讲解了鲲鹏生态下的应用迁移全流程。
分析扫描工具( Dependency Advisor ):提升软件移植分析效率和准确率
当有应用需要移植到Kunpeng服务器上时,通过分析移植软件包依赖库,来评估移植应用的代码量和工作量,以解决软件移植评估分析过程中人工分析投入大、准确率低,整体效率低下的痛点。
基于源代码的软件移植到 Kunpeng 服务器上的需求时,可以使用 Porting Advisor 分析待移植软件源码文件,并及时给出代码移植指导报告。从而能够解决客户代码兼容性人工排查困难、移植经验欠缺、反复依赖编译调错定位等,投入工作量大,整体效率低的痛点。
在 Kunpeng 服务器上运行时遇到性能或体验问题时,可用 Tuning Kit 来快速分析、定位及调优,通过采集系统数据并分析系统性能的关键指标,将问题定位到瓶颈点及热点函数,可以高效解决软件在遇到性能问题时人工经验定位困难、调优能力弱的痛点。
glibc 基础库目前已优化 16 个最常用接口,整体上对比业界主流的 benchmark 测试指标提升 4.16%,对 gzip 压缩库有 8% 的性能提升,在数据库、DPDK、分布式存 储、web 等场景下有较明显的性能提升,目前已在鲲鹏开源社区开源,已经推广至 GNU 社区,已评审并接纳 7 个函数,2020.3 月份会作为基础库正式发布。
随着 5G 的商用,智能应用、数字化应用将逐渐成为社会生活的主流,物联网成为现在最火热的技术领域之一。根据华为 GIV(全球产业愿景)报告预测,2025 年全球联接的设备数将达 1000 亿,在这样万物互联的趋势下,物联网的重要性不言而喻。那么在 IoT 时代,应该如何高效构建行业应用以及打造端到端的解决方案?华为 IoT 生态解决方案高级工程师刘明星老师,为大家讲解了如何基于华为智能 IoT 平台来搭建行业应用。
华为 OceanConnect IoT 云服务基于华为物联网生态开放设计理念,遵循”开放层次 - 开放形式 - 开放平台“三步走的战略。其中,开发层次即从 API 到 SDK,再到图形化,开放的层次越来越高,易用性也越来越好;开放形式,即分为样例代码、开发指南、API 文档、工具等多样化套件,匹配各自的生态伙伴;开放平台,即通过打造开发者社区以及开发者平台,提升开放平台整体的开放效率。
华为 OceanConnect IoT 云服务
作为 ICT 与 IoT 领域的核心推动者,华为致力于解决产业物联网的共性难题。在技术层面,华为云 OceanConnect IoT 云服务汇聚华为的关键技术积累,聚焦”Access + Insight + Action“使能行业服务,解决设备协同管理、数据分析成本高、行业差异性大等问题。在垂直领域方面,华为深耕重点行业,与车联网、智慧交通、智慧物流、智慧城市、智慧园区的龙头企业联手,从技术、政策、生态等多个维度深度融合,共同应对行业转型挑战,合理推动产业物联网发展。
目前,大规模与高并发的应用场景越来越常见,分布式系统逐渐取代一体式的架构成为主流,但是即便采用分布式系统,在面对巨大流量冲击的场景下,系统性能仍然受到很大挑战。华为云 PaaS 团队架构师王启军老师,现场解读了分布式系统的性能优化方向。
首先,王启军老师现场解释了性能的含义。他认为,性能是一定包含响应时间、吞吐量、资源占用这三部分,其中资源占用包含 CPU、网络、磁盘、内存等硬件条件的资源使用率。
做性能优化应该首先考虑应用程序,一个功能完整的应用程序会去调用数据库、操作系统、系统库、调用操作系统相关的函数以及设备,因此做应用的性能优化要从缓存、MQ、服务通信、数据库和业务简化这 5 个方向去做,并且要找到性能优化的拐点。
什么是拐点呢?大多数情况都是下图的情况,随着吞吐量的上升,响应时间突然之间会发生急剧的变化,这个点就是拐点,也就是要优化的目标。
并且,高性能也是有成本的,最好是基于成熟的框架来实现,如华为云的 ServiceComb 非阻塞线程模型。
因为如果选择自己去做一个全新的框架或模型,不仅会遇到各种各样的问题,调试起来也是非常麻烦,由于系统里每一处模块并非对性能的需求很高,因此完全可以采用同步式的方法来满足业务的需求。但是当系统非常多的时候,用户体量也非常大,被部署的节点自然就会很多,那么采用 ServiceComb 非阻塞线程模型就是非常必要的了。
比如华为手机有 5 亿用户,5 亿用户就会部署很多节点,比如某一个服务部署了 3000 个节点,如果性能提升一倍,可能就变成了 5 万个节点。实际上我们 ServiceComb 在手机端华为商城采用了 ServiceComb,性能提升了提升了至少 30% 以上。
随着 5G 的商用,通信领域再一次受到了大家的重视。尽管顶尖的先进技术不断发展,但是在当前场景下,仍面临着资源利用率低、能源消耗高、运维效率低等痛点,因此对于通信领域来说,基于业务驱动,实现网络的敏捷、自动化和智能化的网络自动驾驶技术,是解决当下 ICT 网络领域预测类、手工重复类、场景复杂等问题的最有效方法。
作为以通信行业为根本的华为,在这方面自然不甘人后。华为 NAIE 云服务专家黄海军老师,现场介绍了华为 NAIE 云服务平台在通信领域骄人成绩。
针对不同领域以及不同层面的开发者,NAIE 在数据采集与处理阶段,提出了三种解决方案:
数据资产管理服务,提供通信数据采集、存储、解析、建模、处理、分析、发布等工具服务能力,支撑用户把原始数据高效、高质量加工为有价值的数据集。数据集服务,汇聚华为通信领域实验室构造数据样本,数据覆盖设备网元、网络状态、网络拓扑、用户体验等领域,通过专业治理和标注,为用户提供全域、高质量的通信网络数据集。数据生成服务,基于数据仿真和实验室模拟网络,面向开发者提供异常标注数据和仿真数据的在线生成能力,供用户生成个性化的数据,用于模型训练和验证。
该平台,为中级以及高级的模型开发者,提供了两种不同的功能服务。
为中级模型开发者提供模型生成服务,集成多种电信业务场景所需模型的特征提取、数据建模、算法调测等,让开发者输入符合要求的训练数据,进行场景选择和模型参数配置,即可快速完成模型的训练和验证,生成所需场景的 AI 模型,大幅降低电信 AI 模型开发的技能门槛和周期。
为高级模型开发者提供模型训练服务,提供电信领域 IDE 一站式模型开发服务,从数据预处理,到特征提取、模型训练、模型验证,本服务为开发者提供开发环境、模拟验证环境,API 和一系列开发工具(如 SDK、数据预处理工具等),帮助开发者快速高效开发电信领域模型。
基于云上推理框架,让用户输入推理数据,快速完成结果推理,用于其他应用服务。以 KPI 异常检测为例,从大量的 KPI 输入数据中精准高效识别出 KPI 异常,识别结果可用于其他应用,如帮助预判故障或在故障发生时帮助快速定位问题。
以繁荣网络 AI 产业为己任,涵盖数据贡献者、数据科学家、算法开发者、业务专家以及模型消费者的闭环全流程,通过 AI 生态,为其提供数据生成服务、模型训练服务、数据资产管理服务、模型生成服务、通信模型服务等功能。
现场通过理念与实践的结合,相信今天的沙龙,为到场的开发者带来了大数据处理与各领域应用建设不一样的理解。华为云 DevRun 沙龙,愿尽华为云自身最大的技术优势,来为开发者搭建最优质的的开发体验与经验分享,下一场 DevRun 沙龙,我们不见不散。
点个在看少个 bug👇