分布式存储架构快存储的优点(分布式存储的体系结构是怎么样的)
837
2022-05-29
本次直播介绍了鲲鹏BoostKit使能极致性能,全新推出2.0,提供四大类“数据亲和”加速组件,通过对数据全处理流程进行负载优化,提升CPU利用率,减少等待,从而大幅提升应用性能。
一.BoostKit整体介绍
我们都知道硬件和软件是一个完整的计算机系统互相依存的两大部分。硬件是软件赖以工作的物质基础,是负责提供算力的,而软件的正常工作是硬件发挥作用的唯一途径。其中基础软件负责释放算力,而在基础软件之上的应用软件则是整个互联网行业的价值实现。
那么如何充分释放硬件的算力潜能,使能应用极致性能?这是当前业界所面对的主要挑战之一。为了应对这个挑战,鲲鹏应用使能套件BoostKit应运而生。 通过高性能开源组件,软件加速包以及参考实现等方面,BoostKit从芯片、整机、基础软件,到场景化应用,进行了全栈式的优化。它主要面向八大主流场景,包括大数据,分布式存储,数据库、虚拟化、ARM原生、web/CDN、CDN、NFV、HPC。而这些场景无一例外都需要强大的算力,需要海量的数据分析能力。例如,大数据及分布式存储;亦或者对稳定的网络及降低网络延迟等有需求。而鲲鹏BoostKit就是从这些场景的痛点难点问题出发,进行改进优化,包括数据加速,优化数据存储,提供算力不同密度优化等。使能应用极致性能。
面向华为云的伙伴和客户开发者,鲲鹏BoostKit提供三大加速能力帮助他们构建有竞争力的解决方案:
• 开源使能:BoostKit已经使能了90%的开源软件支持鲲鹏,例如MySQL,鲲鹏社区的MySQL已经经过了优化改进,有优秀性能的性能表现。可以直接从开源社区下载下来使用。
• 基础加速:华为提供基础性能优化方法,伙伴可以通过鲲鹏社区,在鲲鹏创新中心的指导下使用。
• 应用加速:华为提供高价值的应用创新组件,算法。
1.1高性能开源组件
鲲鹏主导推动70+开源社区引入ARM CI。ARM CI是开源社区项目持续集成的环境。通过引入ARM CI,开源社区的开源软件在后续开发中的开发,构建,测试以及打包都会同时在鲲鹏服务器上执行。如果社区有发布开源软件的二进制包,那么该二进制包也会支持鲲鹏。华为除了通过ARM CI对开源项目的支持,同时也贡献了220+关键Patch包以及18项关键特性。将来华为还会继续推动开源社区和鲲鹏的合作。贡献更多的关键能力,让主流开源软件都能支持鲲鹏。
1.2基础加速软件包
基础加速软件包主要包括以下3个方面:
• 基础性能优化:这个板块的核心是《鲲鹏性能调优十板斧》,这个优化秘籍主要提供了cpu,磁盘I/O,网络以及应用的调优方法。开发者可以通过自己的项目情况,选择具体的调优方法。
• 基础加速库:覆盖7类加速库,基于ARM指令和KAE高性能加速库。
• 基础加速算法:聚焦三大优化方向,构筑高效加速算法。即,鲲鹏BoostKit针对具体的应用场景,常见的开源软件性能及难点痛点问题,进行深入分析改进优化之后,提供的一套加速补丁开发者可以根据应用的需求和开发场景,有目的地选用。
,
1.3应用加速软件包
BoostKit应用加速软件包是能够提供性能倍增的应用加速软件包。例如在大数据场景应用BoostKit应用加速软件包,通过它的机器学习算法,最大能够提高应用20倍的性能,平均能够达到10倍。
二.BoostKit1.0回顾
BoostKit1.0在面向八大主流应用场景时,提供场景化性能优化能力,使得各个应用场景性能皆能得到大幅的提升。
BoostKit1.0的基础加速软件包包含的基础加速库支持7类加速库,分别是系统库,压缩库,加解密,媒体与信号,数学库,存储库和网络。其中加解密和压缩库是支持基于KAE的硬加速库进行优化,其他的则是基于arm指令的软加速库进行优化。
那么什么是KAE加速引擎呢? 它是鲲鹏920处理器内置的“高性能加速卡”,相较于传统的方案,KAE方案帮助卸载cpu计算,加速性能比传统方案要高30%。同时KAE方案支持SM3/SM4等加密算法,明文数据不走数据总线,安全性高;兼容openSSL等接口,应用层无需修改,可以直接调用。
BoostKit的机器学习/图分析算法优化功能,主要是在它的应用加速软件包中。
BoostKit通过机器学习/图分析算法以及算法亲和性的优化和原理的优化,能够成倍提升应用的性能。
那么BoostKit是如何成倍提升应用的性能?我们可以通过一些实验数据和案例来体会。
• 人码信息匹配:通过梯度提升GBDT算法,将海量的二维码和相关信息对应匹配。百万数据集信息匹配通过鲲鹏boosKit组件进行处理,比没有使用鲲鹏boosKit组件的速度相比,提升了1.16倍。
• 诈骗短信识别:通过特征降维pca算法,对海量短信样本提取目标短信样本。亿条短信关键特征提取通过鲲鹏boosKit组件进行处理,比没有使用鲲鹏boosKit组件的速度相比,提升了4倍。
• 识别诈骗团伙:通过全量极大团算法,挖掘抽象图中的关系稠密团体。千万级节点图谱挖掘通过鲲鹏boosKit组件进行处理,比没有使用鲲鹏boosKit组件的速度相比,提升了5倍。
BoostKit1.0在分布式存储方面依托EC Turbo技术帮助伙伴提高应用性能。ECTurbo技术相比传统的开源三副本来说,它采用4+2的方式(4条带数据+2条带校验数据),显著提升磁盘利用率和存储能力。由于EC Turbo技术只写入检验数据和待写条带数据,且只读需要的部分块数据,相较于传统的直接从整条带数据读写,性能有了极大的提升。
同时BoostKit1.0也提供高比例压缩算法,通过冷数据归档,压缩算法优化,包括动态全局历史信息表,分层算法模型方案等,以及指令集优化,使得同等的磁盘容量,能够多存储25%的数据,访问等待时间更加短。
BoostKit1.0在数据库方面,集中聚焦MySQL的优化。以前的MySQL是通过单SQL查询。现在则将MySQL单SQL查询由单线程变成多核并行查询。主要实现的方式是对查询涉及的数据分片,实现多核并行读取和处理数据。最后再将结果汇总。这种方法能够将查询性能提高2倍。
BoostKit1.0在数据库方面,还对MySQL 的TP锁进行优化。由于DML语句大量并发操作trx_sys关键数据结构,造成性能瓶颈。BoostKit1.0通过使用无锁哈希表维护事务单元,减少锁冲突,提升并发量。同时,由于DML语句大量并发操作loclk_sys->mutex全局锁,造成锁竞争。BoostKit1.0通过将数据结构拆分成若干个数据结构,大锁拆分成若干把细粒度锁,从而将OLTP TPCC写性能提升10%。
三.BoostKit2.0进阶
从以上的介绍,我们对鲲鹏BoostKit1.0有了完整的了解。可以知道鲲鹏BoostKit1.0主要聚焦八大场景,解决应用的性能瓶颈,使得鲲鹏算力发挥极致。经过一年的时间,华为在BoostKit1.0的实践过程中,有了进一步的发现和理解与思考。即,有很多传统计算负载的cpu本身利用率并不高,这是因为大量的cpu算力浪费在了等待数据的时间上。为了有效减少浪费,让数据更快到达算力层,同时让伙伴以及各位开发者能够从用上鲲鹏过渡到用好鲲鹏。华为在BoostKit1.0的基础上,升级性能优化理念,隆重推出了BoostKit2.0了。
BoostKit2.0是基于数据全处理流程进行负载优化的,提供了四大加速组件:
• 数据就近计算
• 数据加速传输
• 数据并行化处理
• 全生命周期数据安全
随着互联网和智能化的相关发展,需要处理的数据量越来越大,呈现爆炸式的增长。而与此同时,cpu的算力却远远滞后于数据量的增长。在这种情况下,如何更好的发挥cpu算力,应对数据不断增长的需求,就成为一个急需解决的问题。例如在大数据方面,就有大量的数据需要处理。在数据获取方面也没有很好的方法过滤掉不必要数据。因为大数据的数据层和控制层在逻辑层面紧密耦合的,优化难度高,导致了大量的无效数据参与了传输和运算。从而导致大量的计算资源被浪费。同时大量的算子是通过Java等高级语言写的,中间要通过虚拟机解释执行。无法充分发挥硬件的算力。同时还有大数据集群在处理数据的时候,涉及组件较多,要解决端到端的问题,各个引擎都要做一个优化。优化难度特别大。
面对这些问题,BoostKit2.0给出了一个OmniRuntime解决方案。即,通过数据就近计算来解决难题。即通过OmniRuntime解决方案的OmniData组件进行存算的一个协同。即将数据里面的过滤算子架推到存储侧,让数据的计算在数据的存储侧执行。从而实现数据的过滤,减少数据的无效搬移,让有用数据更快传输到计算层。数据处理方面通过OmniOperat和OmniJillr来实现高效率的算子。这样就可以通过c或者c++实现算子,从而充分利用硬件能力。以上的解决方案,鲲鹏社区会通过软件包的方式来实现。
那么OmniRuntime解决方案中OmniData组件存算协同是怎么样的呢?在了解OmniData组件存算协同之前,我们先来了解一下传统方案的运作。传统方案中计算实在计算节点完成的,而数据是在存储节点存储的,那么大量的数据需要从数据存储节点通过网络传输到计算节点,造成网络的瓶颈。计算效率比较低。而通过OmniData组件存算协同,将包含操作,运算规则的算子卸载到边缘侧,计算在数据本地进行。降低数据的搬迁。消除网络传输的瓶颈,使得计算效率大大提升。
OmniRuntime解决方案中中另外一个优化点——全局缓存Global Cache。在分布式存储有一个痛点问题。即原生Ceph IO流程中IO请求的线程多,切换频繁,系统流程的线程数量比较大算力开销大,导致IOPS低。同时端到端之间的处理路径长,队列的等待时间也很长,导致了IO的延迟高。为了解决这个问题,加速数据的传输,降低线程频繁切换的开销。OmniRuntime解决方案是重构了原生架构Ceph ,建立了一个全局的读写缓存池,使得所有的存储服务器上的内存空间在逻辑上组成一个统一的内存资源池,缓存在任一存储服务器上的数据。降低了IO请求线程数量,并缩短处理路径。全局缓存进行了写缓存的IO聚合,批量合并IO,同时在垃圾回收方面对垃圾进行了时空特性的模型分析,进行了分解挂列。而在读缓存方面,进行了I/O智能预取,对各种模式进行了识别和优化,对数据进行了一个多维的分析。通过全局缓存池,IOPS提升高达10倍,IO时延降低90%。
全局缓存Global Cache是特性交付策略,他是通过patch与Ceph适配,做到了对Ceph极低的侵入,无需修改Ceph对外接口。华为提供参考架构和硬件选型建议,以及技术支持。保障伙伴们的项目能够更好运行。
鲲鹏BoostKit2.0支持全生命周期数据安全。第一,机密计算解决运行数据可用不可见的挑战。什么是可用不可以见呢?机密数据黑盒处理,即应用可以请求对机密数据的相关运算,但不可以直接获取数据。比如人脸识别功能,相关的数据会存入安全OS。在人脸识别时,安全OS会根据你的输入,给出判定结果,匹配不匹配。而不能直接获取或者导入安全OS里面的人脸数据。也就说机密运算能够保证数据在数据使用,数据传输,数据产生,数据销毁等全生命周期的数据安全。其中intel的SGX、MKTMES,是划分部分内存地址作为安全区。而ARM则是通过分时复用cpu来构造安全与非安全区。
鲲鹏社区还提供TrustZone机密计算工具,为客户安全要求高的代码和数据提供TEE可信计算执行环境,实现关键资产的完整性和机密性保护。
四.BoostKit2.0交流资源
要想了解更多BoostKit2.0的咨讯,完成BoostKit2.0的入门到进阶的学习,可以去鲲鹏社区官网免费学习。鲲鹏社区提供场景化体验demo,在线课程,沙箱等资源,以及软件包,开发者资料等海量资料帮助你学习。
五.总结
鲲鹏BoostKit1.0到2.0,全面聚焦主流应用的痛点难点问题,使能应用极致性能。期待更多企业携手鲲鹏BoostKit,探寻未来世界更多的可能!
本文整理自华为云社区【内容共创】活动第13期。
查看活动详情:https://bbs.huaweicloud.com/blogs/330939
相关任务详情:任务14.【鲲鹏直播间】BoostKit 2.0进阶:数据亲和
云社区 内容共创
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。