-
系统架构差异鸿蒙OS Next与安卓系统在系统架构上有本质的区别。安卓系统是基于Linux内核的宏内核设计,而鸿蒙OS Next则是基于微内核设计。安卓系统的宏内核包含了操作系统绝大多数的功能和模块,这些功能和模块都具有最高的权限,一旦一个模块出错,整个系统就有可能崩溃。相反,鸿蒙OS Next的微内核仅包括了操作系统必要的功能模块,如任务管理、内存分配等,微内核的稳定性较高,即便其他模块出现问题,也不会对整个系统的运行造成阻碍。应用场景差异鸿蒙OS Next与安卓系统的应用场景也有较大的不同。安卓系统主要应用于手机、电视、智能穿戴设备等有限的场景。而鸿蒙OS Next则定位于“万物互联”,不仅可以应用于手机、平板、智能穿戴设备,还可以应用于智能家居、自动驾驶、工业应用等几乎所有能够接入物联网的智能设备。流畅度比较在流畅度方面,用户普遍反映升级到鸿蒙OS Next后的设备运行更为流畅。这是因为鸿蒙OS Next对安卓底层进行了优化,并使用了自主研发的方舟编译器,提升了系统的流畅度。相比之下,安卓系统在使用一段时间后,由于系统内产生的垃圾文件增多,可能导致性能下降,出现卡顿情况。总结综上所述,鸿蒙OS Next与安卓系统在系统架构、应用场景和流畅度方面均有明显差异。鸿蒙OS Next的微内核设计提供了更高的系统稳定性,而其广泛的应用场景和优化的流畅度则为其带来了更大的市场竞争优势。随着鸿蒙生态的不断发展和完善,鸿蒙OS Next有望在移动操作系统市场中占据一席之地,并为用户和开发者带来更好的体验和价值
-
触发器的作用FunctionGraph(以下简称FG)的触发器是一种事件驱动机制,它使得用户能够在特定的事件发生时执行预定义好的函数。这些事件可以是定时的(如每天早上8点发送日报),也可以是实时触发的(如用户提交表单时验证数据的准确性)。触发器提供了一种简便的方法来编排复杂的云服务和应用程序之间的交互,而不需要写大量的代码去处理这些交互。使用触发器的原因使用触发器的主要原因有以下几点:提高效率:触发器可以自动化地响应事件,无需人工干预,从而提高了工作效率。简化开发:开发者可以将精力集中在核心的业务逻辑上,而不是繁琐的异步处理逻辑。弹性伸缩:触发器可以根据事件的多少自动调整函数执行的次数,这对于应对业务高峰期特别有用。降低成本:由于触发器只在事件发生时才执行函数,因此可以有效避免不必要的资源浪费,从而降低了成本。触发器的种类和使用场景FG支持多种类型的触发器,包括但不限于:TIMER:定时触发器,可用于定期执行某些任务,如每日报表生成。APIG:API网关触发器,可用于在API调用时触发函数执行,适用于微服务架构。OBS:对象存储触发器,可用于在文件上传、下载或删除时触发函数,适合用于实时文件处理场景。SMN:消息通知触发器,可在接收到消息时触发函数,适用于需要即时反应的场景。总结综上所述,FunctionGraph的触发器是一个强大的功能,它让开发者能够轻松地在各种云服务和应用程序之间建立连接,并且能够根据实际需要自动执行相应的函数。这不仅提高了开发效率,还降低了成本,使得复杂的工作流程变得简单易管理。
-
“人们来到城市是为了生活,人们居住在城市是为了生活得更好。”——亚里士多德1条智慧热线铺就社情民意和谐之美白云山水,滋养万物。拥有366.68万常驻市民的广州白云区,是广州人口最多、面积最大的中心城区。生活在大城市里的人们都向往着“让生活越来越美好”,然而随着交通拥堵、住房困难、民众纠纷、环境恶化等压力的接踵而至,日益暴露的“城市病”搅得大家心烦意乱。城市不该是钢筋水泥的森林,而应该是人们安顿身心的幸福家园。一座城市,只有真正感知人们内心的呼声,落实市民生活质量日益提升的诉求,才能成为众心向往的“理想之城”。倾听群众心声,了解社情民意,广州12345政务服务便民热线是为解决城市热点问题而特设的渠道。然而,广州白云区每年受理来自12345热线的群众诉求50+万件,日均接收群众诉求1000+件,诉求信息不仅数量庞大、类型繁杂,还常有难以确定职责归属的疑难事项,这也让政务热线受理中心的工作者身心俱疲,难以及时有效地分派、处理每日堆增的诉求工单。广州白云区率先于全市各区建设“12345热线智慧办理系统”,携手华为云卓越运营,对实际工作流进行深度分析、全面梳理业务逻辑、提升现有技术能力,最终实现疑难工单识别、AI智能转派工单、热线话题挖掘和关联分析,更高效、更精准地处理群众“急难愁盼”的民生诉求问题。首先,通过AI算法训练智能派单模型,对实时工单分析研判,自动推荐工单承办部门,实现工单转派由5分钟提升至秒级,以前需要10人处理的工作,现在2人就可以快速完成,流转效率提升300倍,办理时长压缩近20%;同时,为了更好地从根源处预防和解决多人、高频投诉问题,华为云基于海量工单中的共性要素构建知识图谱,为广州白云区构建起“一人多诉、多人同诉、群体高发、突发热点、敏感诉求”系列预警模型,通过AI关联分析在共同的时间段、空间位置、标签群体诉求工单背后的根因,提前建立应对突发事件的预防体系,防患于未然。如今,在华为云的助力下,广州市白云区12345热线已累计智能派单超100万件,智能派单的工单比重及准确率保持在80%以上,助力白云区热线2023年综合考核成绩排名全市11个区第一。未来,这一条智慧热线,将持续牵动着每一位白云区居民的幸福生活。1个“数字助手”激发乐业创富之美2000多年前,丝绸之路连接起了亚欧大陆的无数商户。西安,作为古丝绸之路的东方起点,已成为现代化国际大都市,用科技推动企业振兴,促进经济发展,西安2023年实现GDP约1.20万亿元,同比增长5.2%。强工业、促消费,已让西安经济稳步增长,此外,西安的“小老板”们与大工业、大消费互相赋能,已成为推动西安经济增长的超级动能。截至23年底,西安市场主体总量突破317万户,获评“全国营商环境创新城市”和“国际化营商环境建设标杆城市”。提升营商环境,让百万“小老板”们乐业创富,是这座西北第一城激活经济的重中之重。围绕个体工商户重点关注的变更转让、降低成本、减租退税、金融扶持等事项,西安政务服务网上线“助企惠企服务专区”给大家送去更有温度、有速度的服务。第一,依托全量多维“企业库”和“政策库”,利用“大数据比对及后台智能筛选”,超2600条惠企政策精准找对人,点对点落实企业福利。在西安市产业发展引导专项资金项目中,通过“政策通”平台对符合条件的企业进行生产经营及受处罚情况、企业信用信息情况、企业纳税情况等方面资质审查,68家企业共收到1087万政策奖励,让企业真切感受到了实实在在的办事便利和服务温度。第二,依托市一体化政务服务平台,建成“一件事一次办”线上联办系统,全市共上线38个“一件事一次办”集成服务,办理业务时,只需输入身份证,表单中其余信息自动调取回填,自动生成申请表,大幅减少企业申报时间和申报难度,0跑动办好事。这些有温度、有速度的政务服务背后,是政务大数据中台对上亿条法人、信用、政策等库表数据的安全高效调用和开发。从22年起,华为云卓越运营与西安市大数据局组建联合工作组,对全市43个重点委办局进行了数据治理,共归集数据50亿+条,为“企业库”和“政策库”的梳理奠定了坚实基础。华为云数据仓库服务DWS支持千级并发事务毫秒级查询,ROMA Connect服务集成能力可将数据/应用接口开发时间缩短一半以上,使得数据能快速被应用调用,高效支撑企业一件事一次办、政策免申即享等惠企应用。冬去春来,年复一年,华为云用精湛技术和贴身服务助力西安市的一体化政务服务能力排名从“中”提升至“高”,助力西安市政府大幅提升了中小企业办事的便利度和体验感。截至2024年4月,西安政务服务网已点对点发布惠企政策2600+条,兑现财政类政策资金超269亿元。1条数字化“护城河”筑牢城市政务安全之美两江浮广厦,三镇耸云中。于水中央,因水而盛的江城武汉,正加速成为全国数字经济一线城市。云作为新质生产力,为武汉数字经济的蓬勃发展提供了强劲的支撑。经过几年合作耕耘,武汉携手华为云共建全国首个集政务域、可信域、产业域于一体的城市云——“武汉云”,承载了122个政府部门和企业单位、400多个政务系统的运行,在智慧医疗、智慧教育、智慧城区等政务民生领域发挥了重大作用。得益于多政府部门数据信息的广汇聚,政务服务触角变得更广、更紧密,政府治理变得更加智能,然而,也对云上安全提出了更严苛的要求。武汉携手华为云,构筑了基于一个安全云脑+七层防线的立体纵深安全防护体系。如今,武汉云已达成信息系统安全等级保护三级认证,这是国家对非银行机构的最高级认证,且护网行动历年累计零失分。首先,华为云为武汉构筑了“七层安全防线”,从物理、身份、网络、应用、主机、数据到运维,端到端构筑云平台的安全能力,全面防治来自众多场景的复杂攻击,实现云内外数据无缝对接、分钟级安全性能扩展,与传统安全形成代际优势。此外,华为云卓越运营构筑了以“安全云脑”为核心的安全运营体系,解决政府安全运营人力投入大、威胁处置时间长、安全价值不可见等痛点,确保精准的风险研判和治理。同时,安全云脑内置300+检测模型、100+处置剧本,可实现99%的威胁自动化处置。武汉云的安全检测从分钟级提升到秒级,安全处置从小时级提升到分钟级。另外,安全云脑的资产仪表盘提供3000+主机资产管理可视化能力,态势感知大屏提供风险可视、攻击可视、响应可视能力,帮助武汉云真正实现“一键安全合规、一体全程处置、一屏全面感知、一云全局分析”。云平台的安全保障了城市的高质量发展,从扫健康码到抢消费券,从社保账户查询到公积金提交提取,这朵看不见的云,稳稳地守护着市民的便捷生活。2023年9月,武汉云安全云脑荣获了中国信息通信研究院第三批“安全守卫者计划”优秀案例。转自华为云
-
在鲲鹏昇腾开发者大会2024上,华为副总裁、ICT产品组合管理与解决方案部总裁马海旭发表致辞,他表示:鲲鹏昇腾将与开发者一起,以创新激发创新、用价值回馈价值、以人才培育人才,打造一个更加繁荣的中国原生产业生态。以下为马海旭讲话全文随着AI技术的快速发展,AI正在重塑我们的时代,推动千行万业迈向智能化,每个行业、每个场景都正在被AI重新定义,智能世界正在加速到来。智能世界,算力是基础。计算产业通过打造坚实的算力底座,正成为驱动创新和变革的关键力量。各个国家都在不断提高对计算产业的重视程度,投入大量资源,致力于提升构建大规模算力、推动技术创新、培养专业人才,抢占计算产业的制高点,这为计算产业的厂商和开发者带来巨大的时代发展机遇。计算产业涉及服务器、操作系统、人工智能框架、数据库和中间件、大数据平台、云平台等多类产品和服务。硬件厂商、软件厂商、云服务提供商、开源社区、开发者群体都可以在这个产业生态中取得广泛的发展,共生共赢,共建一个欣欣向荣的生态体系。鲲鹏昇腾两大产业今天取得的成绩,与每一名伙伴和开发者都密不可分。鲲鹏昇腾产业一直致力于在技术和架构上的突破领先,从达芬奇架构,到系统层面的天池和全对等架构。再到集群层面的天成和天工架构,发展创新从未停止。鲲鹏不仅仅提供鲲鹏主板,还在网卡、RAID、DPU、操作系统、数据库等全栈软硬件上持续创新和突破。现在,鲲鹏已广泛服务于金融、电力、政府、运营商等行业的IT系统和核心生产系统。昇腾持续发展超大规模高速互联和计算、存储、网络高效协同运转能力,同时也在进一步提升CANN和昇思框架的易用性,现在昇腾AI已服务于国内几乎所有头部互联网、运营商、大模型厂商企业,为国内AI大模型的创新提供澎湃算力,加速千行万业智能化升级。鲲鹏昇腾与生态伙伴凝心聚力、跬步千里。4年多以来,已有13家OEM伙伴推出基于鲲鹏主板的服务器;昇腾有超过40家的硬件伙伴,已有超过50个主流基础大模型基于昇腾训练和迭代。总共有超过6700家行业伙伴加入到鲲鹏昇腾两大生态体系,共同孵化了超过18700个解决方案。人才培养上,华为始终坚持“以产业聚集人才、以人才引领产业”,与教育部合作“智能基座”产教融合项目,联合72所高校,培养了超过70万名学生,为中国的计算产业发展构筑了坚实的人才基础。鲲鹏昇腾已与超过610万名开发者紧密协作、相辅而行,携手打造了一个全新的计算产业生态。面向智能化时代,华为发布了All Intelligence战略,加速千行万业的智能化。鲲鹏昇腾希望与开发者一起,以创新激发创新、用价值回馈价值、以人才培育人才,打造一个更加繁荣的中国原生产业生态。首先,坚持开放,打造更易用、更高效的开发体系。鲲鹏以AI为使能动力,从编译器、操作系统等底层提供更加智能化的支持,让底层算力可以被极致使用。鲲鹏利用AI技术,做到业务负载的动态感知,以AI辅助的原生开发流水线让应用开发更加高效。昇腾进一步聚焦易用和分层分级开放,丰富一系列的加速库,加速大模型的训练、调优,以及推理快速部署,为开发者构建开发快、体验好的软硬件环境。其次,深化协同,构筑更活跃、更成熟的生态体系。今年,鲲鹏展翅和昇腾万里伙伴计划将进一步升级,成立鲲鹏昇腾原生创新汇、新增原生开发赋能与认证、提供NRE和样机等激励,激发原生开发创新,提升生态协同效率和应用开发效率,将与广大开发者及伙伴一起深入业务应用场景,逐步打造一个全新的行业智能化应用生态,让鲲鹏昇腾在千行万业智能化进程中发挥更大作用。最后,多层扩展,培养更全面、更多元的计算人才。我们将推出原生人才高校促进计划、建立鲲鹏昇腾科教创新卓越中心和孵化中心、完善原生人才发展体系。通过持续推进并扩展教育部“智能基座”项目,开发更加多元化和更加全面的鲲鹏昇腾课程,与各高校一起发展更多原生计算体系人才。我们会加大投入,跟开发者走得更近,让开发者更方便、更快地使用鲲鹏和昇腾相关的技术栈和产品。通过多层次、系列化的开发者活动和竞赛,为开发者提供创新创意的舞台,让每一位开发者都能够脱颖而出,让前沿科技创新进一步加速,让开发者的每一行代码都成为改变世界的力量。转自华为计算公众号
-
5月10日,鲲鹏昇腾开发者大会2024上,华为计算产品线研发总裁鲁鸿驹先生以 《计算基础软件全栈智能,加速开发者原生创新》为主题做分享,他表示:全面升级计算基础软件,昇腾使能大模型时代极简开发,AI使能鲲鹏释放极致算力。以下为鲁鸿驹发言全文我们所工作的IT领域是一个充满变化的产业,回顾过去30多年的产业发展,AI大模型正在成为继互联网、移动互联网以后第三波的产业浪潮,将给整个IT产业带来翻天覆地的变化。一方面,AI市场的渗透率速度预计将会远超当年的互联网和移动互联网,在未来2-3年内超越60%市场渗透率。另一方面,根据行业专家的分析,由AI大模型带来的AIGC产业规模正以50%以上的年复合增长率快速增长,在三年内就会超越千亿美金,带来巨大的商业机会。 从技术视角看,AI大模型技术还在进行着快速迭代。更大的模型规模,更长的序列,多模态,强思维这些都要求我们不断迭代和更新所依赖的基础大模型和领域模型。而从应用视角看,智能对话、文生视频、编码辅助等每天都在上线新应用。AI大模型带来这样高速的发展与变化,对所有IT行业的企业和开发者而言,速度将会决定命运,这将依赖于高效的算力提供。但是,高效的算力运用在今天仍然面临诸多挑战,对AI算力而言,开发者的核心诉求是大模型高效稳定的训练和推理。主要挑战有:如何跟进快速发展的主流模型和算法?大模型的训练耗时很长,如何提升算力的利用率,加速训练进程?随着集群规模变大,故障发生频繁,如何降低训练中断损失?如何在保证时延的前提下,提升推理的吞吐,从而降低规模推理的成本?对于通用算力,开发者的核心诉求是应用的极致优化和快速上线。为了更好的应对这些挑战,鲲鹏昇腾基础软件栈进行了全面升级。接下来将分鲲鹏和昇腾两个部分介绍。首先是昇腾基础软件。为了让各种大模型在昇腾集群上训的好、推的快,我们对昇腾AI基础软件做了6大全栈升级。包括:在硬件使能层,应用使能层CANN提供完备的大模型融合算子,使能业界主流大模型开箱即用。在框架层,昇思MindSpore升级多维并行加速能力,为大模型训练并行执行提供最优策略。在应用使能层,昇腾加速库 MindSpeed 提供大模型训练加速能力,兼容业界的主流生态;昇腾推理引擎 MindIE 提供调度、服务化和量化的能力,使推理变得更加简单高效;围绕集群高可用,MindX DL 提供智能健康监测和自动恢复能力,让大模型训练更加稳健。在开发使能面上,MindStudio升级了大模型调试调优能力,让大模型开发更加简单高效。以下将讲述这些升级的能力如何通过全栈协同优化帮助开发者进行模型训练、推理和开发调试。训练的挑战就是如何让客户开发的模型能够在昇腾算力集群上跑起来,最好是开箱即用。围绕这个目标,我们从算子库的完备性、AI框架、原生支持三方库三个维度来提升能力。在算子库的完备度上,CANN目前已全面支持主流大模型所需要的基础算子和80多个大模型融合算子。Ascend C提供60多个高阶API,使能开发者自主开发高性能算子和构建自有的加速库。在AI框架能力上,昇思MindSpore提供多级编译的能力,让开发的效率倍增。同时,我们进一步完善了昇腾对PyTorch API的支持,覆盖度已达到95%。另外,为了让开发者更好的在昇腾上使用业界主流的三方库,我们通过社区代码贡献的形式,原生支持 huggingFace 和 DeepSpeed等社区的主流能力。另外,为了让开发者更好的在昇腾上使用业界主流的三方库,我们通过社区代码贡献的形式,原生支持 huggingFace 和 DeepSpeed等社区的主流能力。通过这些基础软件能力的升级,昇腾做到了主流大模型100%支持,预置模型分钟级的开箱使用,易用性极大的提升。大模型调好之后,接下来是长周期的训练。目前一个千亿到万亿规模的大模型,往往需要训练几个月的时间。能否通过基础软件的优化来加速这个过程,实现模型的快速迭代?昇腾基础软件从计算、通信、并行和内存四个维度进行了全面优化,最大程度提升了大模型的训练速度。在计算优化上,通过大模型融合算子性能提升30%;在通信优化上,通过通算融合和集合通信算法创新,实现通信效率提升15%;在并行算法上,提供8维并行算法,同等算力规模下,训练性能提升8%;在内存优化上,通过选择性重计算策略,内存节省35%。同等卡数下能够支持更大参数规模的模型训练。基于上述优化,我们将昇腾算力集群的算力利用率提升了17%,训练时长同比缩短17%,更好的支撑客户大模型快速迭代。训练不光要快,还要稳。随着大模型规模不断的增大,AI算力集群规模也在增加。但集群规模越大,故障频率就越高。根据我们的计算,集群规模达到10万卡的时候,一个算力集群MTBF会缩短到2-3小时。算力集群的高可用已经成为大模型常稳训练的关键。昇腾算力集群通过软硬协同的优化,保障开发者的训练任务稳定运行:训练前,提供健康状态监控和预防性维护的能力,确保训练启动时系统处于最佳的状态。训练中,支持300+典型故障的实时自动检测和隔离,确保早发现早处置。故障发生后,通过分布式缓存加速、集合通信的快速建立,超大规模的集群故障发生后的任务恢复的时间从小时级降低到30分钟以内,今年将进一步优化到10分钟。这些关键能力的提升帮助我们将常稳训练的时间提升到30天以上,大大的提升了训练的效率。要实现大模型的商业正循环,不能仅仅是训的快,训的好,还得推的快,推的高效。推理需要同时兼顾时延和吞吐。时延决定最终用户的使用体验,吞吐决定规模推理的系统成本,进而决定是否能够实现盈利。昇腾推理基础软件通过全栈联合优化降低时延,提升吞吐效率:首先,我们通过对集合通信算法的优化和核心算子的通算融合,将推理的时延降低了60%。基于推理引擎 MindIE 启发式并行解码,进一步将平均推理的时延降低2倍。创新的自适应量化压缩,可以在不影响推理精度的情况下减少访存开销,将系统的吞吐率提升30%。叠加并行算法优化和细粒度的作业调度,进一步将系统吞吐提升30%。这些关键能力的协同优化,帮助我们在满足时延的条件下,将推理的吞吐提升6倍,大大降低了推理成本。大模型推理是很复杂的过程,昇腾推理引擎 MindIE 可以帮助开发者轻松完成。以当前最热的OpenSora为例,开发者只需要三步就可以完成文生视频。第一步将OpenSora模型导入到MindIE进行编译,第二步配置工作流参数,第三步生成视频。当前,模型规模更大、序列长度更长,单机放不下,需要引入多机推理。这时如何降低通讯时延,达成MOE负载均衡同时提升NPU内存使用效率成为主要的挑战。为了应对这些挑战,我们提供了完整的弹性推理的解决方案:首先是多机低时延通信技术。通讯的时延占比降低50%,为弹性推理提供了通信基础。其次,支持MOE动态调度,达成专家负载均衡,提升NPU使用效率,支持参数规模可以平滑扩展至万亿乃至更大的规模。最后是序列并行推理。降低NPU内存占用,支撑序列长度从K级到M级弹性推理。以上的特性,只需要开发者进行简单的资源配置即可使用,让弹性推理触手可及。大模型开发过程中性能调优是非常耗时的工作,典型场景至少需要2周的时间。为了提升开发体验,MindStudio在代码、框架、通信和算子方面升级了调优的能力。昇腾算子开发工具链进行了功能升级,着重强调三个能力。Ascend C支持C/C++编程风格,计算内存同步抽象,使能代码量降低30%。提供在板调试的能力,调试效率提升5倍。在调优方面,推出多级指令流水线,快速识别性能优化点最终能够帮助开发者将典型算子开发效率从两个月提升到两周。鲲鹏基础软件的技术升级,核心变化是使用AI的能力全面升级鲲鹏基础软件,为应用释放鲲鹏的极致算力:首先是操作系统,我们围绕五大领域持续创新,助力openEuler成为AI时代性能最优的OS。其次,在开发阶段,鲲鹏DevKit 智能识别应用计算模式,自动实现代码优化。在构建阶段,我们将AI能力注入编译器中,实现编译选项自动调优,内存数据最佳排布。在运行阶段,鲲鹏BoostKit 通过AI动态感知业务特征,开展全栈优化,提升系统性能。最后,使用AI模型优化传统数值计算方式,让高性能计算速度更快、更准。在操作系统方面,我们的目标是在openEuler中持续贡献,共同打造AI时代的首选OS:在计算子系统,通过自动感知负载,实现计算任务的智能调度和功耗调解,计算的能效提升15%。在存储子系统,通过动态内存大页、自适应NUMA等技术,将内存管理和应用特征灵活匹配,实现文件读写等访存密集类应用的性能提升。在网络子系统,通过用户态协议栈、网络加速等技术,降低端到端网络时延15%。在多样性计算上,openEuler通过异构内存管理等技术,提升多样性算力的利用率。在安全方面,提供了HiTLS高性能密码组件、软硬协同算法优化,以及精密计算统一框架,性能提升55%以上。可喜的看到,得益于整个社区的持续投入和创新,openEuler系操作系统已经得到了国内客户的广泛认可。2023年新增算力市场份额第一,达到36.8%。openEuler社区版本全球下载量达到239万,社区日活开发者超过4000人,成为操作系统领域最活跃的开源社区。 未来十年是计算架构创新的黄金时代,计算架构快速演进,应用日趋复杂。如何编写高性能代码,使其匹配新的计算架构,充分发挥硬件能力,需要开发者对应用计算特征、指令集、微架构等了然于胸。这需要丰富的领域知识和开发经验,技术挑战非常大。DevKit最新推出的鲲鹏亲和代码优化功能,结合AI技术辅助编程,适配硬件架构,自动生成最优代码。典型场景下应用性能提升10%-30%,让普通开发者也能具备专家级优化能力。对于应用开发者而言,编写完代码后下一个挑战就是选择合适的编译选项对自己的程序进行编译优化,使其在不同计算平台上都能获得良好的性能。我们为鲲鹏编译器引入AI能力,学习程序特征,辅助编译优化。其中,编译选项自动调优,智能搜索编译选项空间,找到最佳组合,主流场景性能提升5%,相比人工调优,时间缩短50%。内存数据排布优化,通过AI模型识别冷热数据,匹配多级内存架构,实现数据的智能预取,将访存密集型应用提升10%以上。有了AI辅助的编译优化,开发者无需再理解复杂的编译选项,大幅降低了编译优化门槛。接下来是应用上线环节。过去,我们一次配置好系统参数,很少再调整,但整个计算任务对运行环境的要求不同,很难做到动态最优。在真实的场景下,很多数据中心服务器的利用率低于50%。BoostKit推出了负载感知加速系统WAAS,可以基于每个计算任务深度调优,启用最优的加速库,自动配置全栈最优参数。我们在华为云数据中心进行实测,在不修改代码的情况下把计算资源的利用率提升20%。针对计算密集型的场景,可以在同等物理资源配置的情况下,业务性能提升50%。高性能计算作为“计算金字塔尖上的明珠”,广泛存在于气象预测、油气探测、制造和生物等领域。它的工作特征是计算耗时长,问题复杂难以求解。传统的高性能计算是基于物理公式和数学方程精准的进行计算,具备可解释性,但耗时长。与此同时,很多客户拥有非常宝贵的海量历史数据,是否可以通过AI训练,以历史数据为样本,形成领域的专业模型,以推理替代部分复杂计算过程,从而实现高性能计算的应用加速。这是全新的高性能计算和AI融合计算模式,集成精准计算和AI快速推理的两个优势,计算效率大幅提升。融合计算模式以AI4S加速库的形式落入高性能计算加速套件中。通过一套标准API简单方便调用,可以一键部署,开箱即优。我们已经和自然资源部第一海洋研究所合作,将AI4S加速库应用到海浪的预测中。转自华为计算公众号
-
本月话题:大数据专题随着IT技术的不断发展,知识的不断更新迭代,大家讨论讨论说说看看大家对大数据方面的知识掌握多少,看看大家对目前大数据的了解
-
为了给多道程序提供良好的运行环境,操作系统应具有以下几方面的功能:处理机管理、存储器管理、设备管理和文件管理。为了方便用户使用操作系统,还必须向用户提供接口。同时,操作系统可用来扩充机器,以提供更方便的服务、更高的资源利用率。1、操作系统作为计算机系统资源的管理者(1)处理机管理 在多道程序环境下,处理机的分配和运行都以进程(或线程)为基本单位,因而对处理机的管理可归结为对进程的管理。并发是指在计算机内同时运行多个进程,因此进程何时创建、何时撤销、如何管理、如何避免冲突、合理共享就是进程管理的最主要的任务。进程管理的主要功能包括进程控制、进程同步、进程通信、死锁处理、处理机调度等。(2)存储器管理 存储器管理是为了给多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率,主要包括内存分配与回收、地址映射、内存保护与共享和内存扩充等功能。(3)文件管理 计算机中的信息都是以文件的形式存在的,操作系统中负责文件管理的部分称为文件系统。文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护等。(4)设备管理 设备管理的主要任务是完成用户的IO请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓冲管理、设备分配、设备处理和虚拟设备等功能。2.操作系统作为用户与计算机硬件系统之间的接口 为了让用户方便、快捷、可靠地操纵计算机硬件并运行自己的程序,操作系统还提供了用户接口。操作系统提供的接口主要分为两类:一类是命令接口,用户利用这些操作命令来组织和控制作业的执行;另一类是程序接口,编程人员可以使用它们来请求操作系统服务。(1)命令接口 使用命令接口进行作业控制的主要方式有两种,即联机控制方式和脱机控制方式。按作业控制方式的不同,可将命令接口分为联机命令接口和脱机命令接口。 联机命令接口又称交互式命令接口,适用于分时或实时系统的接口。它由一组键盘操作命令组成。用户通过控制台或终端输入操作命令,向系统提出各种服务要求。用户每输入一条命令,控制权就转给操作系统的命令解释程序,然后由命令解释程序解释并执行输入的命令,完成指定的功能。之后,控制权转回控制台或终端,此时用户又可输入下一条命令。 脱机命令接口又称批处理命令接口,适用于批处理系统,它由一组作业控制命令组成。脱机用户不能直接干预作业的运行,而应事先用相应的作业控制命令写成一份作业操作说明书,连同作业一起提交给系统。系统调度到该作业时,由系统中的命令解释程序逐条解释执行作业说明书上的命令,从而间接地控制作业的运行。(2)程序接口 程序接口由一组系统调用(也称广义指令)组成。用户通过在程序中使用这些系统调用来请求操作系统为其提供服务,如使用各种外部设备、申请分配和回收内存及其他各种要求。 当前最为流行的是图形用户界面(GUI),即图形接口。GUI最终是通过调用程序接口实现的,用户通过鼠标和键盘在图形界面上单击或使用快捷键,就能很方便地使用操作系统。严格来说,图形接口不是操作系统的一部分,但图形接口所调用的系统调用命令是操作系统的一部分。3、操作系统用作扩充机器 没有任何软件支持的计算机称为裸机,它仅构成计算机系统的物质基础,而实际呈现在用户面前的计算机系统是经过若干层软件改造的计算机。裸机在最里层,其外面是操作系统。操作系统所提供的资源管理功能和方便用户的各种服务功能,将裸机改造成功能更强、使用更方便的机器;因此,我们通常把覆盖了软件的机器称为扩充机器或虚拟机。
-
SSH=Struts+Spring+Hibernate 集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。 Struts 是一个很好的MVC框架,主要技术是Servlet和Jsp。Struts的MVC设计模式可以使我们的逻辑变得很清晰,让我们写的程序层次分明。基于Struts开发可以简化开发难度,提高开发效率。 Spring 提供了管理业务对象的一致方法,并鼓励注入对接口编程而不是对类编程的良好习惯,使我们的产品在最大程度上解耦。Hibernate 是用来持久化数据的,提供了完全面向对象的数据库操作。Hibernate对JDBC进行了非常轻量级的封装,它使得与关系型数据库打交道变得非常轻松。在Struts+Spring+Hibernate系统中,对象之间的调用流程如下: Struts——>Spring——>Hibernate JSP——>Action——>Service——>DAO——>Hibernate比如:1.Spring的配置文件bean.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd" xmlns:tx="http://www.springframework.org/schema/tx"> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/samblog?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true"> </property> <property name="user" value="root"></property> <property name="password" value="123456"></property> <property name="driverClass" value="org.gjt.mm.mysql.Driver"/> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource"/> </property> <property name="hibernateProperties"> <value> hibernate.dialect=org.hibernate.dialect.MySQL5Dialect hibernate.hbm2ddl.auto=update hibernate.show_sql=false hibernate.format_sql=false </value> </property> <property name="mappingResources"> <list> <value>site/sambloger/domain/Users.hbm.xml</value> <value>site/sambloger/domain/Blog.hbm.xml</value> <value>site/sambloger/domain/Category.hbm.xml</value> <value>site/sambloger/domain/Comment.hbm.xml</value> </list> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <tx:annotation-driven transaction-manager="transactionManager"/> <!-- 配置Blog spring进行管理 服务层直接调用实现与数据库的CRUD--> <bean id="blogDao" class="site.sambloger.dao.impl.BlogDAOImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <bean id="blogService" class="site.sambloger.service.impl.BlogServiceImpl" scope="prototype"> <property name="blogDao" ref="blogDao"/> </bean> <bean id="blogAction" class="site.sambloger.action.BlogAction"> <property name="blogService" ref="blogService"/> <property name="commentService" ref="commentService"/> </bean> <!-- 配置Comment --> <bean id="commentDao" class="site.sambloger.dao.impl.CommentDAOImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <bean id="commentService" class="site.sambloger.service.impl.CommentServiceImpl" scope="prototype"> <property name="commentDao" ref="commentDao"/> </bean> <bean id="commentAction" class="site.sambloger.action.CommentAction"> <property name="commentService" ref="commentService"/> <property name="blogService" ref="blogService"/> </bean> <!-- 配置Users --> <bean id="usersDao" class="site.sambloger.dao.impl.UsersDAOImpl"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <bean id="usersService" class="site.sambloger.service.impl.UsersServiceImpl" scope="prototype"> <property name="usersDao" ref="usersDao"/> </bean> <bean id="usersAction" class="site.sambloger.action.UsersAction"> <property name="userService" ref="usersService"></property> </bean></beans>2.Struts的配置文件 struts.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts> <package name="samblog" extends="struts-default" namespace="/"> <action name="init" class="blogAction" method="init"> <result name="success">/bloglist.jsp</result> </action> <action name="getBlog" class="blogAction" method="getBlog"> <result name="success">/displayBlog.jsp</result> </action> <action name="getAllNote" class="blogAction" method="getAllNote"> <result name="success">/notelist.jsp</result> </action> <action name="addComment" class="commentAction" method="addComment"> <result name="success" type="redirect">/getBlog</result> </action> </package></struts>3.Hibernate其中的一个配置文件:<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><!-- Mapping file autogenerated by MyEclipse Persistence Tools--><hibernate-mapping> <class name="site.sambloger.domain.Blog" table="blog"> <!--id标签表示映射到数据库中是作为主键 其他property表示普通键--> <id name="id" type="java.lang.Integer"> <column name="id" /> <generator class="increment" /> </id><!--该标签加N方 会有一个字段叫category_id作为外键参照1(Category)的主键字段 并且用来存储这个主键的信息--> <many-to-one name="category" class="site.sambloger.domain.Category" lazy="false" cascade="all"> <column name="category_id" not-null="true" /> </many-to-one> <property name="title" type="java.lang.String"> <column name="title" length="400" not-null="true" /> </property> <property name="content" type="java.lang.String"> <column name="content" length="4000" not-null="true" /> </property> <property name="createdTime" type="java.util.Date"> <column name="created_time" length="10" not-null="true" /> </property><!--在一对多的关联中,在一的一方(Blog)设置inverse=”true”让多的一方来维护关联关系更有助于优化,因为可以减少执行update语句--> <set name="comments" inverse="true"> <key> <column name="blog_id" not-null="true" /> </key> <one-to-many class="site.sambloger.domain.Comment" /> </set> </class></hibernate-mapping>Spring框架的作用和好处: Spring框架提供了一个容器,该容器可以管理应用程序的组件,还提供了IoC和AoP机制,实现组件之间解耦,提高程序结构的灵活性,增强系统的可维护和可扩展性。 在SSH整合开发中,利用Spring管理Service、DAO等组件,利用IoC机制实现Action和Service,Service和DAO之间低耦合调用。利用AoP机制实现事务管理、以及共通功能的切入等。 功能是整合,好处是解耦。Hibernate中操作并发处理(乐观锁和悲观锁) Hibernate框架可以使用锁的机制来解决操作并发。 a.悲观锁 在数据查询出来时,就给数据加一个锁,锁定。这样其他用户再执行删、改操作时不允许。当占用着事务结束,锁会自动解除。 Hibernate采用的是数据库锁机制实现悲观锁控制。 缺点:将并发用户操作同步开,一个一个处理。当一个用户处理时间比较长时,效率会比较低。 b.乐观锁 允许同时更新提交,但是最快的会成功,慢的失败。 在记录中追加一个字段值,用该字段值当做版本。当最先提交者提交后,会自动将版本字段值提升,这样其他用户提交,会发现版本低于数据库记录目前版本,因此抛出异常提示失败。 特点:允许用户同时处理,但只能有一个成功,其他失败,以异常方式提示。SSH工作流程 a.启动服务器,加载工程以及web.xml. (实例化Lisener,Filter等组件,将Spring容器和Struts2控制创建) b.客户端发送请求,所有请求进入Struts2控制器。控制器根据请求类型不同,分别处理。 (action请求,*.action会进入struts.xml寻找<action>配置. 其他请求,*.jsp会直接调用请求资源,生成响应信息) c.Struts2控制器根据<action>配置调用一个Action对象处理。 整合方法一:将Action交给Spring容器 (Action对象由struts2-spring-plugin.jar插件提供的 StrutsSpringObjectFactory负责去Spring容器获取) 整合方法二:将Action置于Spring容器之外 (Action对象由struts2-spring-plugin.jar插件提供的 StrutsSpringObjectFactory负责创建,然后到Spring容器中寻找与Action属性匹配的Bean对象,给Action对象注入。(默认采用名称匹配规则) d.Struts2控制器执行defaultStack拦截器、Action对象、Result等组件处理. e.执行Action的execute业务方法时,如果使用Service或DAO采用Spring的IoC机制调用。 f.执行Result生成响应信息,执行后续拦截器处理 g.将响应信息输出。
-
为了应对高并发的请求,目前GaussDB(DWS)提供了max_active_statements参数来限制单节点的并发情况,超出并发上限的作业会进行排队。另在语句执行时也支持配置资源池并发和内存上限,来联合控制资源池级别的并发情况。基于DWS并发控制逻辑看出,实际作业执行中,可能会在两种队列中排队:一种是全局队列(global queue)这种队列不区分简单和复杂作业,也不区分是DDL或者是普通语句,这种是每个cn生效。一种是资源池队列(resource pool queue),用户下发的一般语句会根据资源消耗估算以及复杂程度在这里进行判断是否排队。在两层队列的过滤下,DWS会筛选出当前能执行的语句,使其正常运行,运行时也会受到其所属资源池资源的限制(只能使用资源池配置的CPU、内存、IO配额)。在处理高并发访问的情况下,GaussDB(DWS)可以采用以下几种方式来提高数据库的性能和可扩展性:数据库集群:GaussDB(DWS)支持将多个数据库节点组成集群,以实现数据的负载均衡和高可用性。通过横向扩展数据库节点数量,可以提高数据库的并发处理能力和吞吐量。数据库分区:GaussDB(DWS)支持将大型表分割为多个分区,以实现数据的分片存储和查询。通过对分区进行水平扩展,可以提高数据库的并发处理能力和查询性能。数据库缓存:GaussDB(DWS)支持使用各种缓存技术,如Redis、Memcached等,以缓存常用的查询结果或数据。通过缓存热点数据,可以减少数据库的查询次数和响应时间。数据库优化:在代码编写和数据库设计方面,应该尽可能地避免使用不必要的查询和操作,优化SQL语句的性能并减少数据库的锁等待时间。可以通过使用索引、分区表等技术来提高查询和操作的效率。负载均衡:针对高并发访问情况,可以使用负载均衡器来分配请求到不同的数据库节点上,以实现请求的动态分配和负载均衡。可以使用Nginx等开源软件来实现负载均衡功能,或者选择专业的负载均衡器产品。
-
GaussDB(for Mongo)是华为云自主研发兼容 MongoDB4.0 接口的文档数据库。基于共享存储的存算分离架构,对于传统 MongoDB 社区版有如下优势:秒级添加 Secondary 节点(相比社区版 Mongo 小时级添加 Secondary 节点)基于 WAL 复制, Secondary 节点无写 IO,从根本上解决社区版 Seconary 节点 Oplog 脱节问题Primary/Seconary 无任何 IO 交互,Secondary 节点个数理论无上限, 支持百万 OPS 的读事务能力LSMTree Compaction 计算/IO 卸载到 Compaction 统一调度池,集中管理,不浪费用户读写 IO基于共享存储,Chunk 分裂/迁移动作不引起真实 IO,只更新路由元数据,秒级分裂/均衡GaussDB(for Mongo)技术架构1)容忍更多 Shard 宕机与社区版 MongoDB 的Share-Nothing模式不同的是,GaussDB(for Mongo)采用Share-Storage架构,计算存储分离。集群模式下,N 个 Shard 节点,可以容忍 N-1 个 Shard 宕机。2)更快的分裂与均衡能力此外,由于 Chunk 数据在存储池中,Chunk 的分裂与均衡不涉及到数据拷贝,可以做到分钟级分裂与扩容,分裂与扩容对用户的影响也远比社区版 MongoDB 小。3)百万级读 OPS 能力GaussDB(for Mongo)副本集模式下,Primary/Secondary 节点之间共享同一份数据库文件。Secondary 节点只复制 Primary 节点的 WriteAheadLog 以及 LSMTree 的结构变更信息,并应用到内存中。Secondary 节点没有 LSMTree 的 Compaction 和 Flush 任务,因此对用户的读业务影响很小。此外,由于Share-Storage的架构优势,添加 Secondary 节点并不需要拷贝数据,添加 Secondary 节点的动作可以秒级完成。而 Primary/Secondary 之间只传递元数据变更,不传递 WriteAheadLog,因此 Secondary 节点的个数即使变多,也不影响 Primary 节点的写性能。Secondary 节点可以水平扩展,支撑百万级的读 OPS。4)主节点 IO 卸载LSMTree 的写压力来源于三部分:用户的业务写入导致的 Memtable Flush后台 SST 文件 CompactionWAL 的持续写入根据线上业务的实际测算,三者的 IO 资源消耗占比为: 1:10:1。后台的 SST 文件 Compaction 占了绝大部分 IO 带宽,通过将 Compaction 任务集中化管理,从计算池卸载到存储池,进一步减少了用户计算节点的 CPU 和 IO 资源消耗。5)GaussDB(for Mongo) 只读节点设计传统社区版 MongoDB 副本集基于 Oplog 做数据复制,只读节点需要镜像主节点的所有写 IO 操作。GaussDB(for Mongo) 的只读节点和主节点共享同一份底层数据库文件(LSMTree 的 SST 文件),只读节点并不自己生成 SST 文件。随着业务数据的写入,Compaction 的不断执行,LSMTree 的当前版本(包含哪些 SST 文件)不断更新,LSMTree 的元数据更新(增删 SST 文件的记录)被同步到只读节点执行。RocksDB 中,数据的变更被持久化到 WAL 里,元数据的变更(增删文件的操作, 叫做 VersionEdit)被持久化到 Mainifest 里。RocksDB 的数据和元数据是分开的,WAL 流和 VersionEdit 流是并行的,没有严格的先后顺序。为了保证只读节点和主节点完全一致的事件回放顺序,WAL 和 VersionEdit 流必须要合并成一个流,在双流合并后,通过 LSN 就可以为每个事件(WAL 的写操作/VersionEdit)定序。基于 WAL+VersionEdit 复制,而不基于 Oplog 复制共享文件(sst/wal)的生命周期管理由主节点负责 sst 文件和 wal 的文件的生命周期由主节点负责。RocksDB 中,SST 文件通过层级的引用计数来维持不被删除。如下图,RocksDB 的每个游标会维持 SuperVersion,如下图中的 S0,S1,S2。每个 SuperVersion 会引用一个 Version,一个 Version 代表 LSMTree 在不断变形(通过增删 SST 文件变形)的过程中,某个时间点的形状,最新的 Version 就代表 LSMTree 当前的形状。在 GaussDB(for Mongo)中,主节点会记录所有只读节点在使用的 Version,并为这些 Version 增加引用计数从而维持 SST 文件的生命周期。对于 WAL,主节点会记录所有只读节点中最老的 LSN(oldestLsn),最老的 LSN 来自于复制最慢的只读节点。并删除比 oldestLsn 还旧的 WAL 文件。元数据变更通知,无论是 oldestLsn 还是只读节点的当前在用的活跃的 Version,都需要及时推进,这些元数据的变更是通过主从节点的定期心跳上报到主节点上的。主节点利用心跳数据对垃圾版本与 WAL 做清理。如下图所示,在经历一次心跳后,主节点发现 Secondary0 的 Version0 和 Secondary1 的 Version0 不再使用。删除这两个 Version 后,SST0 的引用计数为 0,表示 SST0 可以被删除。OldestLsn 也从 100 推进到了 250,可以清理掉 250 之前的 WAL。只读节点的 memtable 的释放:主节点的 Memtable 不会实时 Flush 为 SST 文件。如果只读节点不处理主节点的 Memtable 的话,只读节点的数据就不是实时的,且存在数据一致性问题。只读节点通过回放 WAL 到内存的 Memtable 中,来覆盖 SST 文件与主节点的 Memtable 的 Gap。上文介绍了只读节点是不往共享存储写入数据的, 所以只读节点上的 Memtable 最后的结局一定是被丢弃掉。但什么时候丢弃这个 Memtable 就是一个问题。过早的丢弃,会造成 SST 文件与 Memtable 之间的数据不连续,存在 Gap,过晚的丢弃会造成内存的浪费。只有当只读节点识别到 SST 的数据已经完全能够 Cover 某个 Memtable 时,这个 Memtable 才可以被丢弃。GaussDB(for Mongo)的只读节点在每次应用 VersionEdit 后,检查所有 SST 中的最大的 LSN 与 Memtable 的最小的 LSN 的关系,来决定是否要丢弃某个 Memtable。内存元数据的反向更新:传统的复制,数据流从 Oplog 来,走一遍完整的数据库 Server 层 CRUD 接口,再落到引擎层。这种逻辑和主节点上业务的写入逻辑是一致的,因此 Server 层的一些内存元数据结构,在这个过程中就自然而然的得到更新了。但是当采用基于 WAL 的复制后,整个 WritePath 并不经过只读节点的 Server 层。因此 Server 层的内存元数据更新,就是一个很大的挑战。在这里,只读节点对每一条 WAL 做分析,如果 WAL 的内容会影响 Mongo 内存元数据,就会 reload 对应的元数据模块。总结GaussDB(for Mongo) 基于 Share-Storage 架构,实现秒级 Chunk 分裂与均衡,对业务影响更小,水平扩展速度更快,能容忍更多节点宕机。只读节点功能,实现了一份数据多计算节点共用的功能。极大的提升了存储的利用效率,提高了计算节点的读取数据能力。为了让副本节点具有持续的读扩展能力,整个只读方案采用元数据的同步模式,在不降低主节点负载的情况下,极大的提升了整个系统的读数据的处理能力。为 3 节点,5 节点,乃至于 15 节点以上的副本集的工作提供了可能。
-
1:功能简介datakit是一款集四大核心功能:数据同步、数据比较、流程迁移、库表转换等数据使用工具,其核心设计目标:开发迅速、学习简单、轻量级、易扩展 数据同步:从数据源端按照数据字段映射规则导入数据目标端。 数据比较:数据源端和目标端差异比较,并支持针对差异以源端数据为准进行数据修复。 流程迁移:实现源端数据库多表关联业务流程数据迁移另一种目标端数据库中。 库表转换:不同类型数据库间表结构批量转换 配置管理:业务对象(表、文件、数据流)配置、任务配置注意: (1)数据源端和数据目标端可以是数据库表作为对象也可以是数据文件作为对象; (2)目前数据库支持oracle、mysql、postgres;文件支持文本文件、excel文件; (3)支持二次开发集成新的数据库和文件2:应用场景2.1 数据同步场景 格式化txt文本数据指定字段导入数据库 格式化excel数据指定字段导入数据库 数据库表指定字段导出成文本文件 数据库表指定字段导出成excel文件 不同数据库间表数据互相同步倒换 不同文件格式数据互相同步倒换2.2 数据比较场景 源端txt文件数据和目标端数据库表数据根据指定关键字段比较数据差异,并支持以源数据为准修复数据库表数据 源端excel文件数据和目标端数据库表数据根据指定关键字段比较数据差异,并支持以源数据为准修复数据库表数据 源端数据库表数据和目标端txt文件数据根据指定关键字段比较数据差异 源端数据库表数据和目标端excel文件数据根据指定关键字段比较数据差异 源端数据库表件数据和目标端数据库表数据根据指定关键字段比较数据差异,并支持以源数据为准修复数据库表数据 源端txt文件数据和目标端excel文件数据根据指定关键字段比较数据差异2.3 流程迁移场景 可以将某一数据库中指定流程数据批量迁移到另外一个数据库,比如:(1)把生产库中指定流程数据迁移到测试环境进行流程验证; (2) 按业务流程进行数据备份2.4 库表转换场景 可以指定一个数据库用户下表结构迁移至另外一个数据库中,可以同一类型数据库之间转换,也可以支持不同数据库之间做表结构转换
-
简介: 在Linux上使用Selenium和Python来控制浏览器进行自动化测试或者网页数据抓取是常见的需求。本文将介绍如何在Linux无图形界面环境下使用Selenium与Firefox浏览器以headless模式运行,并提供geckodriver、Xvfb和pyvirtualdisplay等工具的安装步骤。Selenium是一个自动化测试工具,它可以模拟用户在浏览器中的操作,例如点击、输入文本、验证元素等。selenium官网介绍:Home:https://selenium.devGitHub:https://github.com/SeleniumHQ/SeleniumPyPI:https://pypi.org/project/selenium/IRC/Slack:Selenium chat room https://www.selenium.dev/support/#ChatRoomselenium支持多种浏览器/驱动程序(Firefox,Chrome,Internet Explorer)以及远程协议。下表是各浏览器对应的驱动。Chromehttps://chromedriver.chromium.org/downloadsEdgehttps://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/Firefoxhttps://github.com/mozilla/geckodriver/releasesSafarihttps://webkit.org/blog/6900/webdriver-support-in-safari-10/本篇以Firefox为例-- 先安装geckodriver:geckodriver是Firefox浏览器的驱动程序,用于与Selenium通信。可以通过以下步骤在Linux上安装geckodriver。访问geckodriver的GitHub页面https://github.com/mozilla/geckodriver/releases,下载适合您系统的压缩包。如果使用其他浏览器对应上表下载对应浏览器驱动。解压下载的文件,并将geckodriver可执行文件所在的目录加入系统的PATH变量。或者直接move到bin目录:mv geckodriver /usr/bin-- 安装firefoxyum install gtk3 wget http://releases.mozilla.org/pub/firefox/releases/116.0.3/linux-x86_64/zh-CN/firefox-116.0.3.tar.bz2 tar jxpvf firefox-116.0.3.tar.bz2 sudo ln -s /root/firefox/firefox /usr/bin/firefox-- 安装selenium在python环境下安装:pip install selenium-- 安装XvfbXvfb是一种虚拟的X窗口服务器,可以模拟图形界面。Ubuntu使用以下命令安装Xvfb: sudo apt-get install Xvfb如果是centos:sudo yum search Xvfb 根据搜索结果找到合适的安装包,通常命名为xorg-x11-server-Xvfb sudo yum install xorg-x11-server-Xvfb.x86_64-- 安装pyvirtualdisplaypyvirtualdisplay是一个Python库,用于在无图形界面环境下触发Xvfb。使用以下命令安装pyvirtualdisplay:pip install EasyProcess pip install xvfbwrapper pip install pyvirtualdisplay-- 编写Python脚本测试现在可以编写一个Python脚本来使用Selenium和Firefox浏览器进行自动化测试或网页数据抓取。以下是一个简单的示例:from selenium import webdriver from selenium.webdriver.firefox.options import Options from pyvirtualdisplay import Display # 创建一个虚拟显示 display = Display(visible=0, size=(1280, 768)) display.start() # 配置Firefox选项 firefox_options = Options() firefox_options.headless = True # 以headless模式运行,具体代码如下: # 创建Firefox browser = webdriver.Firefox(options=firefox_options) # 在这里编写您的代码,例如访问网页、操作元素等 query = 'Selenium的使用' url = f"https://cn.bing.com/search?q={query}" browser.get(url) title = browser.title print("Page title: ", title) browser.save_screenshot('screenshot1.png') # 关闭WebDriver和虚拟显示 browser.quit() display.stop()在这个示例中,我们首先创建一个虚拟显示,然后配置Firefox选项,将其设置为headless模式。然后,创建一个Firefox WebDriver实例,通过它可以直接与浏览器进行交互。在最后,关闭WebDriver和虚拟显示。保存Python脚本尝试运行。可以看到浏览器访问bing搜索页面的title,同时生成了搜索页面的屏幕截图。以headless模式运行selenium,可以不显示浏览器窗口,适合Linux云主机场景,实现自动化测试或者网页数据抓取。这些工具的组合提供了一个可靠且高效的解决方案。
-
一、 虚拟机备份:注意:VM虚拟机并不是一个非常稳定的系统,在虚拟化情况下,有时候会出现一些非常莫名奇妙的错误,这就需要我们有足够的克隆备份,以用于错误出现的恢复和追溯,大家可以参考我的虚拟机建设方式。在基础平台中,一般都有一些搭建好的基础组件,例如我们在Hadoop基础平台搭建时候,需要的JDK 1.8 基础组件,我们可以先行搭建好,后在使用的时候,直接克隆,省时省力,在搭建好的基础组件里,我们可以挑选一部分重要的(或者复杂的)进行备份。我们配置到一半的虚拟机,在休息或者阶段性达成时,请在关机时直接进行一次克隆,然后编辑克隆后的虚拟机,按照自己舒服的方式编号即可。在完成配置后,将完成配置的虚拟机移到已完成的组别,然后在完成备份组进行一个备份。虚拟机默认安装系统在C盘,建议有一个大一点的C盘空间,至少100-300G。一、 虚拟机网络设置:虚拟机常用有三种连接网络模式,分别是桥接,NAT,本地,这三种模式都分别代表什么意思?有什么用呢?我用类比法给大家解释一下这个问题。1) 桥接模式:在这种模式下,物理主机好像是一个“交换机”所有的虚拟机都连接这个物理主机的交换机上,所有虚拟机之间的交流不受影响,外界带有DHCP功能的路由器会直接分配给虚拟机地址,需要注意的是,你虚拟机的网段和物理机应在同一个网段,不然无法访问。示意图如下:2) NAT模式:NAT(网络地址转,用于把内部的私有网络地址转换成可以通讯的公网地)NAT模式相当于在桥接的Vmnet0(虚拟交换机)上又加入了NAT设备和DHCP服务器来自行分配地址,也就是说,相当于在桥接模式的“交换机”上又加了个“路由器”,这样,物理主机和虚拟机的通讯就需要对于这个“路由器”进行配置才能实现和物理主机的通讯。示意图如下:3) 本地模式:本地模式,是NAT模式去掉了NAT设备(只剩DHCP服务器)通过共享网卡可以实现上网。示意图如下:我们在配置Hadoop平台的时候,使用NAT方式。三、 JDK环境配置1) 环境及需要软件:1. 物理机操作系统:windows 10 19032. VM版本:15.5 pro3. 虚拟机操作系统:CentOS 7 x86_64 18044. 软件需求:Xshell、Xftp、JDK1.8_2112) 虚拟机建立:省略3) 网络设置:1. 网段:192.168.127.02. 网关:192.168.127.13. V8网卡:192.168.127.884. 主机IP:192.168.127.314) 登录root用户:省略5) 开始配置:1. IP配置# 修改IP地址# 这步完成后需重新启动$ vim /etc/sysconfig/network-scripts/ifcfg-ens33TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="001ab3ed-d2b2-4697-ba77-a3a235682441" DEVICE="ens33" ONBOOT="yes" IPADDR="192.168.127.31" PREFIX="24" GATEWAY="192.168.127.1"2. Xshell到主机# 在Xshell上创建Shell连接# 在XFTP中的 /root文件夹下新建一个文件夹为apps,且将JDK1.8传输进去3. 解压缩JDK1.8$ tar -zxvf /root/apps/jdk-8u211-linux-x64.tar.gz# 把解压后的JDK 1.8.0_211通过XFTP拖回apps文件夹4. 设置并且加载JDK1.8# 在环境变量中加入JDK1.8.0_211$ vim /etc/profile#export JAVA_HOME=/root/apps/jdk1.8.0_211 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin重新加载环境变量$ source /etc/profile# 测试$ echo $JAVA_HOME $ java -version5. 关闭主机后,克隆到大数据平台一、 Hadoop平台单节点搭建1) 环境及需要软件:1. 物理机操作系统:windows 10 19032. VM版本:15.5 pro3. 虚拟机操作系统:CentOS 7 x86_64 18044. 软件需求:Xshell、Xftp、hadoop 2.7.72) 虚拟机建立:省略3) 登录root用户:省略4) 开始配置1. 修改主机名和IP映射2. IP地址和域名vi /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.127.31 hadoop313. 关闭防火墙$ systemctl stop firewalld.service $ systemctl disable firewalld.service关闭防火4. 配置SSH免密登录cd ~ ssh-keygen -t rsa #敲三次回车 ssh-copy-id hadoop31 #输入root密码 chmod 700 .ssh5. 正式安装Hadoop# 在文件夹下解压缩tar -zxvf /root/apps/hadoop-2.7.7.tar.gz# 将hadoop安装包移入apps文件夹中:省略,参照JDK# 配置依赖环境cd /root/apps/hadoop-2.7.7/etc/Hadoop vim hadoop-env.sh# 配置文件目录存放位置vim /root/apps/hadoop-2.7.7/etc/hadoop/core-site.xml<configuration> <property> <!--指定hdfs中namenode的地址--> <name>fs.defaultFS</name> <value>hdfs://hadoop31:9000</value> </property> <property> <!--指定hadoop运行时产生文件的存放目录--> <name>hadoop.tmp.dir</name> <value>/root/apps/work/hadoop/tmp</value> </property> </configuration># 配置HDFS副本vim /root/apps/hadoop-2.7.7/etc/hadoop/hdfs-site.xml<configuration> <property> <!--指定hdfs保存数据副本的数量,包括自己,默认为3--> <!--伪分布式模式,此值为1--> <name>dfs.replication</name> <value>1</value> </property> </configuration># 复制mapred组建使mapreduce可编辑cd /root/apps/hadoop-2.7.7/etc/hadoop mv mapred-site.xml.template mapred-site.xml配置Yarn关联MapReduce运行vim /root/apps/hadoop-2.7.7/etc/hadoop/mapred-site.xml<configuration> <property> <!--指定mapreduce运行在yarn上--> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration># 格式化NameNode(第一次启动需要,之后都不需要)cd /root/apps/hadoop-2.7.7 ./bin/hdfs namenode -format启动命令cd /root/apps/hadoop-2.7.7 ./sbin/start-dfs.sh ./sbin/start-yarn.sh测试地址http://hadoop31:50070http://hadoop31:8088
-
Q:这是一场什么样的比赛?“挑战杯”全国大学生课外学术科技作品竞赛是由共青团中央、中国科协、教育部、中国社会科学院和全国学联共同主办的全国性的大学生课外学术实践竞赛。“揭榜挂帅”作为“挑战杯”专项赛之一,企业提需求出题,面向高校广发“英雄帖”,学生团队竞争揭榜。旨在促进产教融合,打造校、企、研成果转化为“桥头堡”。Q:谁可以参加这个比赛?有学生赛道和青年科技人才两个赛道;学生赛道:2024年6月1日以前正式注册的全日制非成人教育的各类高等院校在校专科生、本科生、硕士研究生(不含在职研究生)均可申报作品参赛,以个人或团队形式参赛均可。本校硕博连读生(直博生)若在2024年6月1日以前未通过博士资格考试的,可以按研究生学历申报作品。没有实行资格考试制度的学校,前两年可以按硕士学历申报作品。本硕博连读生,按照四年、两年分别对应本、硕申报,后续则不可申报。青年科技人才赛道:在高等学校、科研院所、企业等各类创新主体中工作的、具有一定科研热情和科研能力的青年科技工作者或者在读博士。参赛人员年龄应在18至35周岁,即1989年6月1日至2006年6月1日期间出生。符合高校学生赛道报名条件的在读博士不得参加青年科技人才赛道比赛,高校青年教师在指导学生参赛的同时不得以参赛人员身份参加同一选题比赛,发榜单位及同发榜单位有相关隶属关系单位的青年不得参加本单位选题比赛。Q:怎么报名参加比赛?登录挑战杯官网(https://fxyh-t.bocmartech.com/jbgs/#/login),在线填写报名信息;点击“挑战杯”官网左侧“作品报名”选项,下载报名信息表打印,并加盖学校公章回传至官网;选手需登录华为云大赛平台(学生:cid:link_0;青年科技人才赛道:https://competition.huaweicloud.com/information/1000042071/introduction)进行实名校验;点击华为云大赛平台菜单栏中的“我的团队”,并点击“组建团队”,所有成员都必须完成实名校验并加入该团队。Q:有问题如何求助?论坛发帖求助:比赛过程中参赛选手可以在论坛中发帖,详细描述您遇到的问题,大赛组委会工作人员将会在工作日工作时间09:00-18:00在社区回复(为保证大赛公平公正原则,大赛官方仅针对报名方式、赛制、赛题、大赛安排等问题进行答疑)。赛事交流群求助:请扫描进入交流群,赛事相关资讯也会第一时间在群内同步,请所有报名选手务必加群。 (青年科技人才赛道) (学生赛道)联系大赛工作人员:如没有得到及时回复,可以添加大赛工作人员微信:15889847842(微信号:HW88886712)。Q:华为云AI开发平台的编程语言用的是华为独创的,还是python、C语言等其他编程语言都能兼容?AI开发,还是主流的Python、C++,没有独创的语言。Q:请问项目检测的样品必须是pcb板吗?可以是其他工业样品吗?是PCB板,数据样例集已给出,请见赛事页面。Q:本次比赛是只会提供这样一个小数据集吗?还是后面会有大数据集呢?本次大赛发放的是样例集,选手可以参考样例集缺陷自行寻找或制作开源数据集制作模型。Q:请问一下后期测试数据里是否也是五类缺陷,会不会有其他类别呢?不会了,缺陷种类是一样的。Q:我们需要检测的就是这块pcb板吗?还是说我们可以基于这个平台检测其他物品,缺陷由我们自己来定。赛题确定为PCB板检测,并且缺陷是样例集里固定的几种。Q:训练的材料也是公司这边提供吗?赛事页面已提供样例集,我们选手可以自行寻找合适的开源数据集。Q:评分用的数据集也是和样例数据集一样吗?一张pcb板只会有一种错误,还是说有几种错误同时在一张板子上的情况?是的,缺陷种类一样,初赛是一张板子一种缺陷。Q:大赛中使用的算法是否必须为本人提出的?使用开源的sota方案是否符合要求?初赛不做限制的,看最终的得分。Q:能够用自己买的910来训练吗?也可以,但不推荐,910很贵。Q:为什么我跑提供的初赛指导里面的yolov5,有调用了HAM,但是NPU AI那个调用一直是0%呀?其实 npu有调用,只是训练消耗的不多,有时候只有小一段时间会使用,所以会看到0这种情况。Q:打榜的分数是累计的吗这个每提交一次就有分,取最高分。Q:收费平台是训练的npu和储存两部分吗,代金券用完要分别在两个平台充钱吗收费是包括npu和存储两部分,但是代金券应该是都包含的,所以不用担心。Q:preprocess的入参date一次只包含一张图吗?是的。Q:请问老师样例集和训练集是同分布的吗,还是只有格式是一样的只能说格式一样。
-
我用STM32外接一个摄像头,拍照得到一个jpg图像文件,想通过外接的ESP8266(WiFi方式)把这个jpg文件上传到华为云OBS,请指点一下设计流程,有例程就更好了,谢谢!
上滑加载中
推荐直播
-
全面解析华为云EI-API服务:理论基础与实践应用指南
2024/11/29 周五 18:20-20:20
Alex 华为云学堂技术讲师
本期直播给大家带来的是理论与实践结合的华为云EI-API的服务介绍。从“主要功能,应用场景,实践案例,调用流程”四个维度来深入解析“语音交互API,文字识别API,自然语言处理API,图像识别API及图像搜索API”五大场景下API服务,同时结合实验,来加深开发者对API服务理解。
回顾中 -
企业员工、应届毕业生、在读研究生共探项目实践
2024/12/02 周一 19:00-21:00
姚圣伟 在职软件工程师 昇腾社区优秀开发者 华为云云享专家 HCDG天津地区发起人
大神带你一键了解和掌握LeakyReLU自定义算子在ONNX网络中应用和优化技巧,在线分享如何入门,以及在工作中如何结合实际项目进行学习
即将直播 -
昇腾云服务ModelArts深度解析:理论基础与实践应用指南
2024/12/03 周二 14:30-16:30
Alex 华为云学堂技术讲师
如何快速创建和部署模型,管理全周期AI工作流呢?本期直播聚焦华为昇腾云服务ModelArts一站式AI开发平台功能介绍,同时结合基于ModelArts 的实践性实验,帮助开发者从理论到实验更好地理解和使用ModelArts。
去报名
热门标签