写点什么

解开发者之痛:微服务架构下,如何用分布式 数据库处理千亿级数据?

2019 年 12 月 26 日

解开发者之痛:微服务架构下,如何用分布式 数据库处理千亿级数据?

AI、IoT、云计算等技术的不断发展,为企业提供了前所未有的发展良机。在迈向智能化的过程中,企业的创新、效率、体验等得到了大幅度的提升,但与此同时,也在面临种种挑战。企业该如何实现对数据高效、稳定、持续地管理?如何避免应用系统效率低下,资源浪费严重?AI 开发者又该如何解决技术更迭迅速、高质量数据资源不足、算法能力不足、模型训练慢等问题呢?


11 月 1 日,DevRun·选择不凡——华为云开发者沙龙走进广州,华为云的 5 位技术专家也针对 GaussDB OLAP 分布式数据库、ModelArts、华为沃土数字平台、微服务实践、NAIE 平台等内容,与现场开发者交流技术难点与解决方案。



GaussDB OLAP 分布式查询优化技术

数据库已成为信息基础设施的核心技术和重要基础。数据库的开发难度不仅体现在与其他基础器件的适配,更在于如何实现对数据高效、稳定、持续地管理。


当下,随着数据规模不断增长,基于互联网的实时交互也无处不在,用户对数据的基本需求呈现出两个主要类别:OLAP(在线分析处理)和 OLTP(在线交易处理)。其中,OLAP 数据库主要用于存储供商业智能业务统计和分析历史记录。


GaussDB OLAP 数据库是一款具备分析及混合负载能力的分布式数据库。从 2011 年开始,华为基于 PostgreSQL 9.2.4,对 GaussDB OLAP 数据库进行自主研发,GaussDB OLAP 数据库支持 x86 和华为鲲鹏硬件架构,支持行存储与列存储,提供 PB(Petabyte) 级数据分析能力、多模分析能力和实时处理能力,可用于数据仓库、数据集市、实时分析、实时决策和混合负载等场景,以及金融、政府、电信等行业核心系统。



据华为 GaussDB OLAP 数据库技术专家李茂增老师介绍,GaussDB OLAP 数据库采用 Shared-nothing(无共享)架构,具备超强的横向扩展能力,可扩展至 2048 节点;采用全并行计算技术和列存向量化引擎技术,可以轻松实现万亿数据关联分析秒级响应。另外,GaussDB OLAP 数据库充分利用鲲鹏芯片多核的特点,通过核间并行、核内并行、指令集并行、编译并行、系统资源优化、调度策略优化等技术,实现性能超越其他芯片 48%。



其中,全并行的分布式查询处理是 GaussDB OLAP 数据库中的核心技术之一,它可以最大限度地降低查询时节点之间的数据流动,以提升查询效率。GaussDB OLAP 数据库为达成高性能数据分析目标,实现了一套高性能的分布式执行引擎,执行引擎以 SQL 引擎生成的执行计划为输入,将元组按执行计划的要求进行加工并将结果返回给客户端。


一个涉及多个执行算子的复杂查询的大概执行过程如下图所示:



1、CN 接收到查询任务(通常是 SQL 语句描述)后,通过后续操作获取结果集返回给客户端。


2、CN 的 SQL 引擎对 SQL 语句进行语法解析并生成由数据处理执行算子组成的执行计划。


3、随后 CN 会生成最优的基础任务执行序列,并将这些基础任务部署到各个 DN 节点上去执行。


4、各个 DN 在执行时通过流算子进行数据交互和流动。完成成数据处理后,会将结果汇总到 CN 上并输出到客户端。


不仅如此,GaussDB OLAP 数据库分布式查询技术还包括:


  • 多样化查询重写技术:通过规则等价变换规则,生成高效执行计划;

  • 分布式最优计划选择:利用全局和 DN 双重统计信息进行代价估算,可减少网络传输数据量以及网络重分布;

  • 数据倾斜处理技术:利用统计信息避免倾斜计划,并在运行时进行倾斜处理。可分为静态倾斜处理方案以及 RLBT(Runtime Load Balance Technology) 方案;

  • SMP/ 多 Node Group 技术:利用代价估算和路径搜索生成不同 Dop 和 DN 数的计划。CN 选择合适并行度生成最优计划,DN 实现线程间数据传输,利用 Hashtable 共享减少内存使用。还可利用多个 DN 的计算资源 Candidate 生成执行计划,根据代价选择合适的 Node 集合进行计划执行,是在线扩容的技术基础;

  • 向量化引擎 /LLVM 技术:一次调用处理多行数据,减少调用次数 / 预存动态编译的机器码,减少运行时 CPU 指令数。

  • 内存自适应处理技术:查询计划中重内存算子的内存使用 work_mem 进行控制,此为算子级控制,所以无法进行语句级内存使用的控制,且多并发场景会导致内存不受控。可以通过语句级内存估算以及语句级内存调整等方法使内存自适应。


如何基于华为沃土数字平台快速开发企业应用?

在数字化转型的大浪潮下,并不是引入了数字技术就意味着效率的必然提升。对于整个行业而言,需要数据能够汇集,然后基于数据产生智能,最后实现持续的数据化运营。对企业而言,基于云架构的软件体系、商业模式、咨询服务、运维体系等的同步改变才有可能将数字技术的价值发挥到最大程度。其中,数字平台正是数字化转型的关键。


华为沃土数字平台资深架构师董鑫武老师提到,当下构建难、复制难、缺平台等问题一直让企业应用软件开发面临重重掣肘,阻碍着数字化转型的步伐。其实,企业需要的是一个能够向上支持应用快速开发、灵活部署、使能各种业务敏捷创新,向下通过无处不在的联接做到云、管、端协同优化,实现物理世界与数字世界打通的平台。



而华为沃土数字平台,正是帮助企业融合新 ICT,打造数字世界的底座的平台。


华为沃土数字平台,是以云为基础,整合视频、物联网、大数据、视频、GIS 等新技术,基于华为数字化转型经验,创造的打通融合各类数据,使能业务协同与敏捷创新,主要包含 ROMA 与 AppEngine 两个平台:


ROMA 平台主要用于广泛的连接,收集各个厂商的系统数据,打通客户现网各个烟囱式的结构,达到所有数据共享并可调用的目的。


主要包含三大功能:


一、数据集成:数据集成 FDI ,内置多达 20+ 异构数据源,包括 MySQL、Oracle 等数据源,Mapping 到 SQL Server 等数据源,实现跨数据源的数据集成。可从私有云到公有云,公有云之间等,实现跨云的数据集成,还可在不同地域、不同数据库中心,内网、外网等之间,实现跨网络的数据集成。


二、服务集成:ROMA-API Connect 集成网关。将用户部署在华为云或 Docker 上的服务以 API 方式公开或有限地开放给第三方。面向企业内部引入外部 SaaS 服务,扩展内部应用。


三、消息集成:异步跨云分布消息集成服务。MQS(Message Queue Service),提供易连接,跨网络隔离、跨数据中心、跨公有云与私有云,弹性扩展低延迟,自由组网,就近接入的异步消息服务。


此外,企业应用软件开发常常面临应用从 0~1 构建低效、应用 1~N 难于复制、底层平台投资大、架构设计难等问题。这时候华为沃土数字平台中的 AppEngine 应用开发平台就发挥作用了,AppEngine 应用开发平台是 SaaS 场景下全在线多租的应用开发和运行平台,开发者无需安装任何软件,Web 注册即可开通平台账号,可以随时随地开发、运行企业所需的应用。


AppEngine 应用开发平台有三层技术架构,集成层集成第三方系统、物联网平台等;后端定义对象模型,使用 Flow 来提供对外的 Restful API 接口、Flow&Script 实现后台业务逻辑,存取 Object 的数据、调用第三方接口;前端提供标准和高级页面,高级页面 Widget 通过 Bridge 调用后台的 Restful API 接口,标准页面通过拖拽组件,绑定模型。经过三层架构,从定义数据模型到后台流程逻辑编排、页面组装编排到应用的一键式发布,可以高效实现您的应用敏捷创新。



一键式开发微服务实践

微服务的核心思想是围绕业务能力去拆分和组织服务,各个服务均被独立部署,通过标准接口进行通信,数据的管理和服务治理也都可实现去中心化。虽然微服务备受推崇,但鲜少有真正能够拿出来作为可实践的案例。人们很多时候看到的是这个架构的高峰,却不知具体如何攀登。高效完成遗留系统重构,提升微服务开发效率是企业向微服务架构转型的迫切需求,那么有没有相对简单且行之有效的路径?


华为开源软件部架构师、Apache Committer 马彬给出了答案——Apache ServiceComb Toolkit 一键式微服务开发工具。



Apache ServiceComb 的前身为华为云的微服务引擎 CSE (Cloud Service Engine) 云服务,2017 年由华为云无保留开源代码,并进入 Apache 基金会孵化,于 2018 年 10 月毕业成为全球首个 Apache 微服务顶级项目,Apache ServiceComb 的愿景是提供一站式的微服务开源解决方案,致力于帮助企业、用户和开发者将应用轻松微服务化上云,实现对微服务应用的高效运维管理。


今年,Apache ServiceComb 在认真听取社区用户的建议和痛点后,孵化并全新发布创新项目 Apache ServiceComb Toolkit 一键式微服务开发工具。该工具提供契约、代码、文档相互转换及校验的能力,帮助用户一键式快速构建基于流行微服务框架和流行编程模型的微服务工程,降低微服务入门成本,使用户聚焦业务开发,提升遗留系统重构、开发效率。



Apache ServiceComb Toolkit 主体架构包括四层:最底层为微服务开发框架层,提供 ServiceComb、SpringCloud 等 SDK 模版;其次是实现层,包括代码解析、契约提取、文档生成、API 校验等;第三层为统一接口层,接口注册及管理;最上面为用户交互层,为用户提供 Maven/Gradle、命令行工具插件等。



Apache ServiceComb Toolkit 特性

遗留应用提取契约文件

在基于 SpringMVC/POJO/JAX-RS 模型开发的应用中,一键提取符合 OpenAPI 规范的服务契约文件。


契约文件生成微服务工程

输入符合 OpenAPI 规范的服务契约,一键生成以 ServiceComb/SpringCloud 为底座,以及以 SpringMVC/POJO/JAX-RS 或 SpringBoot 为开发模型的微服务项目。


契约与代码一致性校验

校验应用的实际实现(如数据和服务 API)是否与样本服务契约描述一致。


契约 / 代码生成文档

  • 输入符合 OpenAPI 规范的服务契约,一键生成 html 等格式的文档。

  • 未来的成长空间

  • 支持基于 gradle 的工具插件

  • 支持工具集成到 Eclipse&Intellij

  • 支持生成基于 mybatis/hibernate 等 ORM 连接 Mysql/Redis 等流行 DB 的微服务脚手架

  • 支持 handlebars 模板引擎

  • 支持工具能力服务化

  • 支持连接在线 API 文档

  • 支持生成 word/pdf 等流行格式文档

  • 支持基于多语言应用 API 一键生成微服务脚手架

  • 支持 CLI

  • 支持 API 增量生成代码


欢迎来自社区用户 / 开发者的更多反馈…



Apache ServiceComb Toolkit 工作原理


NAIE,网络 AI 领域开发引擎

随着网络复杂性的增加,联接质量难以保证、业务体验无法实时感知、管理运维排障低效等问题也愈加突出,且网络管理和维护需要消耗大量的人力、物力。当 AI 浪潮席卷通信领域,通过 AI 提高网络维护的效率、资源利用率、能源效率,达到全网的自动、自优、自愈、自治成为解决之道。但是当前通信领域 AI 应用的开发却存在一个普遍的现象,即门槛高、效率低、效果不可控。如何解决这些问题?


华为 NAIE 运营专家戈文敏基于 NAIE 网络 AI 开发平台提供了高效可行的解决思路。



华为网络人工智能引擎 (NAIE),主要基于公有云模式,提供数据治理相关的数据湖服务,以及模型开发相关的模型训练等服务,涵盖了网络 AI 业务中最复杂部分的工作。



其中,数据集服务,解决了大部分开发者缺乏数据的困境,汇聚了华为电信领域合规数据资产和实验室构造数据样本,数据覆盖设备网元、网络状态、网络拓扑、用户体验等领域,通过专业治理和标注,为用户提供全域、高质量的电信网络数据集。


数据生成服务,基于数据仿真和实验室模拟网络,面向开发者提供异常标注数据和仿真数据的在线生成能力,供开发者生成个性化的数据,用于模型训练和验证;同时,对于强化训练,可提供实时交互数据。


数据资产管理服务,主要是把数据采集、集成、建模、分析、标注等数据处理相关的工具以及数据治理模板,以云服务的方式向开发者提供,帮助开发者提升数据治理的效率。


模型训练服务,为开发者提供电信领域一站式模型开发服务,从数据预处理,到特征提取、模型训练、模型验证,本服务为开发者提供开发环境、模拟验证环境,API 和一系列开发工具,帮助开发者快速高效开发电信领域模型。


模型生成服务,相对模型训练服务,进一步简化了模型开发过程,通过预置典型场景的模型,让开发者只需要输入符合要求的训练数据,就可以快速完成模型的训练和验证,生成需要的 AI 模型,大幅降低电信 AI 模型开发的技能门槛和周期。


通信模型服务,基于云端的推理框架,用户只需输入推理数据就可快速完成推理,推理结果可以用于业务应用的开发及业务诊断。这类服务主要是适用于一些模型泛化通用性强的场景,比如硬盘故障检测,大部分硬盘故障表象和特征都基本相同,直接输入 SMART 数据,就可以在线获取硬盘健康度检测结果。类似场景还有 KPI 异常检测、ECA 异常检测等。


华为云 +AI:ModelArts 一站式 AI 开发平台

ModelArts 是面向 AI 开发者的一站式开发平台,提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成,以及端 - 边 - 云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期 AI 工作流。



同时,ModelArts 能够在 AI 开发全生命周期中,从原始数据、标注数据、训练作业、算法、模型、推理服务等,提供全流程可视化管理,支持千万级模型、数据集以及服务等对象的管理,无需人工干预,自动生成溯源图,选择任一模型就可以找到对应的数据集、参数、模型部署在哪里。其中最实用的训练断点接续功能、训练结果比对功能,在华为内部开发者中也颇受欢迎。华为开源软件部 AI 技术专家、华为云 EI 布道师张金衡在现场带领大家动手体验了 ModelArts 的自动学习功能。




数据标注方面,ModelArts 提供多场景支持 7 种类型的数据集标注:图像分类、物体检测、声音分类、语音内容、语音分割、文本分类、命名实体。物体检测新增支持点、直线、虚线、圆、矩形框、多边形等多种标签工具。


ModelArts 提供的智能标注系统,可节省人力提升效率 50%-80%。具体包括:


  • 智能标注:基于主动学习和预置模型,系统边标边学,越标越准,标注效率提升 70%

  • 团队标注:任务分发和质检策略用以保证标注质量

  • 数据管理:数据增量导入、版本管理、难例管理等

  • 复合筛选:设置多条件标签进行过滤筛选


训练作业部分,ModelArts 提供了 30 余个各领域最优秀最常用的模型,并实现了精度和速度的优化。一键训练模式,开发者仅需配置数据和日志输出路径;使用预置模型进行迁移学习;自动超参调优;自动模型压缩(量化、修剪);零编码模型训练优化。


新增的模型转换功能,可以将已有模型转换成相应的格式后,应用至不同的芯片类型,如 Ascend 芯片、ARM 或 GPU,来获得更高的算力。


模型部署部分, ModelArts 支持一键式模型部署到需要的地方,包括在线推理,批量推理以及端侧推理。端侧设备深度支持华为 HiLens Kit 设备、搭载 Ascend AI 加速芯片的 Atlas 系列硬件,以及商用摄像头如海雀摄像头等。同时可以调用生成的 API ,发布到需要的应用。


AI 市场方面,ModelArts 的 AI 市场提供了常用数据集,列举了其他用户共享的模型、API,开发者可以使用他人分享的信息快速构建模型。同时也可以将自己的 API 或模型发布至 AI 市场,共享知识,提升开发效率。


自动学习功能中,开发者无需 AI 经验、无需编码、无需学习复杂模型,只需要完成三个步骤:上传数据并标注,自动进行训练,一键完成部署,全程 UI 导向。现场带领开发者完成了《花卉分类》和《猫狗声音识别》两个自动学习实践。



下一站活动预告


11 月 15 日,“DevRun·选择不凡,华为云开发者沙龙 2019”将在杭州继续与开发者见面,5 位来自华为云的资深技术专家,将分别从【OLAP 分布式数据查询】、【鲲鹏开发历程揭秘】、【IoT 平台架构】、【分布式系统性能优化实践】以及【通信领域的 AI 开发】等不同角度,为开发者分享实战经验与心得体会。


2019 年 12 月 26 日 14:56358

评论

发布
暂无评论
发现更多内容

堡垒机是什么?

网络技术平台

HDFS SHELL详解(3)

罗小龙

hadoop 28天写作 hdfs shell

架构师训练营一期大作业二

陈龙

构师训练营 - 第十二周学习总结

joshuamai

python自学 第一章 初始python

WEB前端修行日志

Python

数仓面试高频考点--解决hive小文件过多问题

五分钟学大数据

大数据 hive 面试题 数仓

week-10-part1微服务调用的时序图

陈龙

产品与服务

JiangX

创业 产品 投资 服务 28天写作

架构师训练营第二期 Week 12 总结

bigxiang

架构师训练营第2期

第七周 学习总结

简简单单

架构师系列 13 Spark 大数据处理在金融领域中的应用

桃花原记

week-11-part1分析系统不可用的原因

陈龙

架构师训练营第二期 Week 12 作业

bigxiang

架构师训练营第2期

Java程序经验小结:谨慎的使用本地方法

后台技术汇

28天写作

RocketMQ如何保证消息可靠性

双儿么么哒

RocketMQ

架构师训练营一期大作业一

陈龙

构师训练营 - 第十二周课后练习

joshuamai

电动车基本知识(28天写作 Day3/28)

mtfelix

自动驾驶 28天写作 电动汽车

第12周作业

Jack

week-11-part2 学习总结

陈龙

第七周 性能优化作业

简简单单

创业失败启示录|校园里的蓝色单车(分析篇)

青城

创业 28天写作 创业失败启示录 青城

前端也要懂机器学习(上)

执鸢者

机器学习 前端 特征选择

第七周命题作业

cc

从大局着眼,立微处发力

张老蔫

28天写作

Windows10 Kafka Docker 集群搭建

Docker kafka

Java Kafka 简单示例

Java kafka

week-10-part2 学习总结

陈龙

第七周 性能优化(一) 作业 「架构师训练营 3 期」

feiyun123

第六周 技术选型(二) 作业 「架构师训练营 3 期」

feiyun123

Java并发编程实战(3)- 互斥锁

技术修行者

Java 并发编程 多线程

微服务架构下如何保证事务的一致性

微服务架构下如何保证事务的一致性

解开发者之痛:微服务架构下,如何用分布式 数据库处理千亿级数据?-InfoQ