华为云用户手册

  • 如何进行分段下载?(Java SDK) 在下载对象时,您可以指定下载对象的某一范围内的数据进行分段下载,步骤如下: 您需要以AK、SK、Endpoint先初始化一个客户端ObsClient; 指定桶名和对象名初始化一个GetObjectRequest请求,您可以通过GetObjectRequest.setRangeStart和GetObjectRequest.setRangeEnd接口设置将要下载的对象数据的开始和结束范围; 通过ObsClient.getObject接口发送步骤2的GetObjectRequest请求来进行分段下载。 详细操作可参见范围下载。 父主题: 常见问题(Java SDK)
  • 对于加密类型的对象如何使用URL进行下载?(Java SDK) 如果是SSE-KMS方式进行加密的对象,使用URL下载时服务端会自动解密;如果对象是SSE-C方式进行加密的对象,由于解密需要设置请求头域,所以不能通过浏览器直接访问该对象,如果您是在编写代码来访问加密类型的对象,只需要为请求设置相应的头域信息即可,可参见代码示例:下载SSE-C加密类型的对象。 访问服务端加密对象必须使用HTTPS协议。 父主题: 常见问题(Java SDK)
  • 公网环境下如何提高上传大文件速度?(Java SDK) 在公网环境下对于超过100MB的大文件建议通过分段上传方式上传。分段上传是将单个对象拆分为一系列段分别上传。每个段都是对象数据的连续部分。您可以按照任意顺序上传段。如果其中某个段传输失败,可以重新传输该段且不会影响其他段。通过多线程并发上传同一对象的多个段,可大大提高传输效率。 具体代码样例可参见分段上传。 父主题: 常见问题(Java SDK)
  • 常见的Content-Type 常见的Content-Type(MIME)列表如下: 表1 常见的Content-Type(MIME)列表 文件扩展名 Content-Type(Mime-Type) 文件扩展名 Content-Type(Mime-Type) .*(二进制流,未知的文件类型) application/octet-stream .tif image/tiff .a11 application/x-a11 .acp audio/x-mei-aac .ai application/postscript .aif audio/aiff .aifc audio/aiff .aiff audio/aiff .anv application/x-anv .apk application/vnd.android.package-archive .asa text/asa .asf video/x-ms-asf .asp text/asp .asx video/x-ms-asf .au audio/basic .avi video/avi .awf application/vnd.adobe.workflow .biz text/xml .bmp application/x-bmp .bot application/x-bot .c4t application/x-c4t .c90 application/x-c90 .cal application/x-cals .cat application/vnd.ms-pki.seccat .cdf application/x-netcdf .cdr application/x-cdr .cel application/x-cel .cer application/x-x509-ca-cert .cg4 application/x-g4 .cgm application/x-cgm .cit application/x-cit .class java/ .cml text/xml .cmp application/x-cmp .cmx application/x-cmx .cot application/x-cot .crl application/pkix-crl .crt application/x-x509-ca-cert .csi application/x-csi .css text/css .csv text/csv .cut application/x-cut .dbf application/x-dbf .dbm application/x-dbm .dbx application/x-dbx .dcd text/xml .dcx application/x-dcx .der application/x-x509-ca-cert .dgn application/x-dgn .dib application/x-dib .dll application/x-msdownload .doc application/msword .docx application/vnd.openxmlformats-officedocument.wordprocessingml.document .dot application/msword .dotx application/vnd.openxmlformats-officedocument.wordprocessingml.template .drw application/x-drw .dtd text/xml .dwf Model/vnd.dwf .dwf application/x-dwf .dwg application/x-dwg .dxb application/x-dxb .dxf application/x-dxf .edn application/vnd.adobe.edn .emf application/x-emf .eml message/rfc822 .ent text/xml .epi application/x-epi .eps application/x-ps .eps application/postscript .etd application/x-ebx .exe application/x-msdownload .fax image/fax .fdf application/vnd.fdf .fif application/fractals .fo text/xml .frm application/x-frm .g4 application/x-g4 .gbr application/x-gbr . application/x- .gif image/gif .gl2 application/x-gl2 .gp4 application/x-gp4 .hgl application/x-hgl .hmr application/x-hmr .hpg application/x-hpgl .hpl application/x-hpl .hqx application/mac-binhex40 .hrf application/x-hrf .hta application/hta .htc text/x-component .htm text/html .html text/html .htt text/webviewhtml .htx text/html .icb application/x-icb .ico image/x-icon .ico application/x-ico .iff application/x-iff .ig4 application/x-g4 .igs application/x-igs .iii application/x-iphone .img application/x-img .ins application/x-internet-signup .ipa application/vnd.iphone .isp application/x-internet-signup .IVF video/x-ivf .java java/* .jfif image/jpeg .jpe image/jpeg .jpe application/x-jpe .jpeg image/jpeg .jpg image/jpeg .jpg application/x-jpg .js application/x-javascript .jsp text/html .la1 audio/x-liquid-file .lar application/x-laplayer-reg .latex application/x-latex .lavs audio/x-liquid-secure .lbm application/x-lbm .lmsff audio/x-la-lms .ls application/x-javascript .ltr application/x-ltr .m1v video/x-mpeg .m2v video/x-mpeg .m3u audio/mpegurl .m4e video/mpeg4 .mac application/x-mac .man application/x-troff-man .math text/xml .mdb application/msaccess .mdb application/x-mdb .mfp application/x-shockwave-flash .mht message/rfc822 .mhtml message/rfc822 .mi application/x-mi .mid audio/mid .midi audio/mid .mil application/x-mil .mml text/xml .mnd audio/x-musicnet-download .mns audio/x-musicnet-stream .mocha application/x-javascript .mov video/quicktime .movie video/x-sgi-movie mp1 audio/mp1 .mp2 audio/mp2 .mp2v video/mpeg .mp3 audio/mp3 .mp4 video/mp4 .mpa video/x-mpg .mpd application/vnd.ms-project .mpe video/x-mpeg .mpeg video/mpg .mpg video/mpg .mpga audio/rn-mpeg .mpp application/vnd.ms-project .mps video/x-mpeg .mpt application/vnd.ms-project .mpv video/mpg .mpv2 video/mpeg .mpw application/vnd.ms-project .mpx application/vnd.ms-project .mtx text/xml .mxp application/x-mmxp .net image/pnetvue .nrf application/x-nrf .nws message/rfc822 .odc text/x-ms-odc .out application/x-out .p10 application/pkcs10 .p12 application/x-pkcs12 .p7b application/x-pkcs7-certificates .p7c application/pkcs7-mime .p7m application/pkcs7-mime .p7r application/x-pkcs7-certreqresp .p7s application/pkcs7-signature .pc5 application/x-pc5 .pci application/x-pci .pcl application/x-pcl .pcx application/x-pcx .pdf application/pdf .pdb chemical/x-pdb .pdx application/vnd.adobe.pdx .pfx application/x-pkcs12 .pgl application/x-pgl .pic application/x-pic .pko application/vnd.ms-pki.pko .pl application/x-perl .plg text/html .pls audio/scpls .plt application/x-plt .png image/png .png application/x-png .pot application/vnd.ms-powerpoint .potx application/vnd.openxmlformats-officedocument.presentationml.template .ppa application/vnd.ms-powerpoint .ppm application/x-ppm .pps application/vnd.ms-powerpoint .ppsx application/vnd.openxmlformats-officedocument.presentationml.slideshow .ppt application/vnd.ms-powerpoint .ppt application/x-ppt . pptx application/vnd.openxmlformats-officedocument.presentationml.presentation .pr application/x-pr .prf application/pics-rules .prn application/x-prn .prt application/x-prt .ps application/x-ps .ps application/postscript .ptn application/x-ptn .pwz application/vnd.ms-powerpoint .r3t text/vnd.rn-realtext3d .ra audio/vnd.rn-realaudio .ram audio/x-pn-realaudio .ras application/x-ras .rat application/rat-file .rdf text/xml .rec application/vnd.rn-recording .red application/x-red .rgb application/x-rgb .rjs application/vnd.rn-realsystem-rjs .rjt application/vnd.rn-realsystem-rjt .rlc application/x-rlc .rle application/x-rle .rm application/vnd.rn-realmedia .rmf application/vnd.adobe.rmf .rmi audio/mid .rmj application/vnd.rn-realsystem-rmj .rmm audio/x-pn-realaudio .rmp application/vnd.rn-rn_music_package .rms application/vnd.rn-realmedia-secure .rmvb application/vnd.rn-realmedia-vbr .rmx application/vnd.rn-realsystem-rmx .rnx application/vnd.rn-realplayer .rp image/vnd.rn-realpix .rpm audio/x-pn-realaudio-plugin .rsml application/vnd.rn-rsml .rt text/vnd.rn-realtext .rtf application/msword .rtf application/x-rtf .rv video/vnd.rn-realvideo .sam application/x-sam .sat application/x-sat .sdp application/sdp .sdw application/x-sdw .sis application/vnd.symbian.install .sisx application/vnd.symbian.install .sit application/x-stuffit .slb application/x-slb .sld application/x-sld .sldx application/vnd.openxmlformats-officedocument.presentationml.slide .slk drawing/x-slk .smi application/smil .smil application/smil .smk application/x-smk .snd audio/basic .sol text/plain .sor text/plain .spc application/x-pkcs7-certificates .spl application/futuresplash .spp text/xml .ssm application/streamingmedia .sst application/vnd.ms-pki.certstore .stl application/vnd.ms-pki.stl .stm text/html .sty application/x-sty .svg image/svg+xml .swf application/x-shockwave-flash .tdf application/x-tdf .tg4 application/x-tg4 .tga application/x-tga .tif image/tiff .tif application/x-tif .tiff image/tiff .tld text/xml .top drawing/x-top .torrent application/x-bittorrent .tsd text/xml .txt text/plain .uin application/x-icq .uls text/iuls .vcf text/x-vcard .vda application/x-vda .vdx application/vnd.visio .vml text/xml .vpg application/x-vpeg005 .vsd application/vnd.visio .vsd application/x-vsd .vss application/vnd.visio .vst application/vnd.visio .vst application/x-vst .vsw application/vnd.visio .vsx application/vnd.visio .vtx application/vnd.visio .vxml text/xml .wav audio/wav .wax audio/x-ms-wax .wb1 application/x-wb1 .wb2 application/x-wb2 .wb3 application/x-wb3 .wbmp image/vnd.wap.wbmp .wiz application/msword .wk3 application/x-wk3 .wk4 application/x-wk4 .wkq application/x-wkq .wks application/x-wks .wm video/x-ms-wm .wma audio/x-ms-wma .wmd application/x-ms-wmd .wmf application/x-wmf .wml text/vnd.wap.wml .wmv video/x-ms-wmv .wmx video/x-ms-wmx .wmz application/x-ms-wmz .wp6 application/x-wp6 .wpd application/x-wpd .wpg application/x-wpg .wpl application/vnd.ms-wpl .wq1 application/x-wq1 .wr1 application/x-wr1 .wri application/x-wri .wrk application/x-wrk .ws application/x-ws .ws2 application/x-ws .wsc text/scriptlet .wsdl text/xml .wvx video/x-ms-wvx .xap application/x-silverlight-app .x_b application/x-x_b .xdp application/vnd.adobe.xdp .xdr text/xml .xfd application/vnd.adobe.xfd .xfdf application/vnd.adobe.xfdf .xhtml text/html .xls application/vnd.ms-excel .xls application/x-xls .xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet .xltx application/vnd.openxmlformats-officedocument.spreadsheetml.template .xlw application/x-xlw .xml text/xml .xpl audio/scpls .xq text/xml .xql text/xml .xquery text/xml .xsd text/xml .xsl text/xml .xslt text/xml .xwd application/x-xwd .x_t application/x-x_t .yaml text/vnd.yaml .yml text/vnd.yml .webp image/webp .tar application/x-tar .zip application/zip
  • 获取账号、IAM用户、项目的名称和ID 从控制台获取账号名、账号ID、用户名、用户ID、项目名称、项目ID 在华为云首页右上角,单击“控制台”。 在右上角的用户名中选择“我的凭证”。 图1 进入我的凭证 在“我的凭证”界面,API凭证页签中,查看账号名、账号ID、用户名、用户ID、项目名称、项目ID。 每个区域的项目ID有所不同,需要根据业务所在的区域获取对应的项目ID。 图2 查看账号名、账号ID、用户名、用户ID、项目名称、项目ID 调用API获取用户ID、项目ID 获取用户ID请参考:管理员查询IAM用户列表。 获取项目ID请参考:查询指定条件下的项目列表。
  • 方案优势 华为云AI云存储解决方案的主要优势如下表所示。 表1 华为云AI云存储解决方案的主要优势 序号 主要优势 详细描述 1 存算分离,资源利用率高 GPU/NPU算力和SFS Turbo存储解耦,各自按需扩容,资源利用率提升。 2 SFS Turbo高性能,加速训练过程 训练数据集高速读取,避免GPU/NPU因存储I/O等待产生空闲,提升GPU/NPU利用率。 大模型TB级Checkpoint文件秒级保存和加载,减少训练任务中断时间。 3 数据导入导出异步化,不占用训练任务时长,无需部署外部迁移工具 训练任务开始前将数据从OBS导入到SFS Turbo,训练过程中写入到SFS Turbo的Checkpoint数据异步导出到OBS,均不占用训练任务时长。 SFS Turbo和OBS存储服务之间数据直接导入导出,无需部署外部数据拷贝机器及工具。 4 冷热数据自动流动,降低存储成本 SFS Turbo支持自定义数据淘汰策略,冷数据自动分级到OBS,释放高性能存储空间用于接收新的热数据。 访问冷数据时SFS Turbo从OBS自动加载数据提升访问性能。 5 多AI开发平台、生态兼容 pytorch、mindspore等主流AI应用框架,kubernetes容器引擎、算法开发场景通过文件语义访问共享数据,无需适配开发。 如果您想了解更多本方案相关信息,或在方案使用过程中存在疑问,可通过方案咨询渠道,寻求专业人员支持。
  • 方案架构 针对AI训练场景中面临的问题,华为云提供了基于对象存储服务OBS+高性能文件服务SFS Turbo的AI云存储解决方案,如图所示,华为云高性能文件服务SFS Turbo HPC型支持和OBS数据联动,您可以通过SFS Turbo HPC型文件系统来加速对OBS对象存储中的数据访问,并将生成的结果数据异步持久化到OBS对象存储中长期低成本保存。 图1 基于OBS+SFS Turbo的华为云AI云存储解决方案
  • 应用场景 近年来,AI快速发展并应用到很多领域中,AI新产品掀起一波又一波热潮,AI应用场景越来越多,有自动驾驶、大模型、AIGC、科学AI等不同行业。AI人工智能的实现需要大量的基础设施资源,包括高性能算力,高速存储和网络带宽等基础设施,即“大算力、大存力、大运力”的AI基础大设施底座,让算力发展不要偏斜。 从过去的经典AI,到今天人人谈论的大模型,自动驾驶,我们看到AI模型的参数及AI算力规模呈现出指数级的爆发增长,对存储基础设施也带来全新的挑战。 高吞吐的数据访问挑战:随着企业使用 GPU/NPU 越来越多,底层存储的 IO 已经跟不上计算能力,企业希望存储系统能提供高吞吐的数据访问能力,充分发挥 GPU/NPU 的计算性能,包括训练数据的读取,以及为了容错做的检查点(以下简称Checkpoint)保存和加载。训练数据的读取要尽量读得快,减少计算对 I/O 的等待,而 Checkpoint主要要求高吞吐、减少训练中断的时间。 文件接口方式的数据共享访问:由于 AI 架构需要使用到大规模的计算集群(GPU/NPU服务器),集群中的服务器访问的数据来自一个统一的数据源,即一个共享的存储空间。这种共享访问的数据有诸多好处,它可以保证不同服务器上访问数据的一致性,减少不同服务器上分别保留数据带来的数据冗余等。另外以 AI 生态中非常流行的开源深度学习框架PyTorch为例,PyTorch默认会通过文件接口访问数据,AI算法开发人员也习惯使用文件接口,因此文件接口是最友好的共享存储访问方式。
  • 配置SFS Turbo数据自动导出到OBS桶 配置自动导出后,训练过程中周期性写入SFS Turbo文件系统的Checkpoint模型文件会自动以异步方式导出到关联的OBS桶中进行长期保存,无需手工导出,异步导出方式不会占用上层训练任务时间。 SFS Turbo的自动导出功能当前处于受限使用状态,请提交工单联系技术支持人员进行配置。 文件导出速度受OBS服务的写入带宽上限影响,默认是16Gbit/s,如果大模型训练生成的Checkpoint文件过大、导出速度过慢,可提交工单申请调大OBS服务的写入带宽。 父主题: 基本配置
  • 配置SFS Turbo数据淘汰策略 SFS Turbo HPC型文件系统绑定OBS后端之后,建议配置缓存数据淘汰功能。SFS Turbo会自动释放设定时间内没有访问过的文件数据内容,仅保留文件元数据,数据内容释放后不占用SFS Turbo文件系统上的存储空间,再次访问该文件时,将重新从OBS中加载文件数据内容。 登录SFS管理控制台。 在文件系统列表中,单击创建的HPC型文件系统名称,进入文件系统详情页面。 在“基本信息”页签,设置冷数据淘汰时间。 图1 设置冷数据淘汰时间 只有已经导出到OBS且满足淘汰时间的数据才会被淘汰。 父主题: 基本配置
  • SFS Turbo容量监控及告警 如果SFS Turbo HPC型文件系统存储空间被写满,会影响业务运行,您可以在CES云监控服务上监控SFS Turbo文件系统的容量使用情况,并创建告警规则,当容量使用率超过一定阈值,可以发送邮件、短信等告警到运维人员。当收到容量监控告警时,您需要及时清理SFS Turbo存储空间、或缩短冷数据淘汰时间加速冷数据淘汰、或对SFS Turbo进行空间扩容。详情可参见SFS Turbo监控指标说明和创建告警规则。
  • 操作流程 本文档介绍面向AI场景如何使用OBS+SFS Turbo的存储加速,流程如图1所示。 图1 面向AI场景使用OBS+SFS Turbo的存储加速方案步骤 表1 面向AI场景使用OBS+SFS Turbo的存储加速流程说明 序号 步骤 说明 1 规划组网和资源 此步骤请提交工单联系技术支持人员进行支撑配置。 2 创建资源 创建VPC:创建1个虚拟私有云和子网。 创建SFS Turbo HPC型文件系统:创建1个SFS Turbo文件系统,文件系统类型选择“HPC型”,存储类型请根据存储容量和性能需求选择,AI场景建议选择250MB/s/TiB及以上的存储类型。 创建OBS桶:创建1个OBS桶,存储类别为“标准存储”,桶策略为“私有”。 创建ModelArts资源池:创建1个专属资源池。 3 基本配置 配置ModelArts和SFS Turbo间网络直通。 创建委托授权ModelArts云服务使用SFS Turbo。 配置ModelArts网络关联SFS Turbo。 配置SFS Turbo和OBS联动。 配置SFS Turbo数据自动导出到OBS桶。 配置SFS Turbo数据淘汰策略。 4 训练 上传数据至OBS并预热到SFS Turbo中。 创建训练任务。 5 例行运维 使用OBS+SFS Turbo的存储加速方案的过程中,您可以进行采取以下运维措施,保证系统正常高效运行: SFS Turbo容量监控及告警。 SFS Turbo性能监控。 调整SFS Turbo数据淘汰策略。 SFS Turbo容量及性能扩容。 OBS性能监控。 如果您想了解更多本方案相关信息,或在方案使用过程中存在疑问,可通过方案咨询渠道,寻求专业人员支持。 父主题: 面向AI场景使用OBS+SFS Turbo的存储加速实践
  • 资源和成本规划 本节介绍最佳实践中资源规划情况,包含以下内容: 表1 资源和成本规划内容说明 维度 说明 资源规划 OBS:存放训练数据集、预训练模型等数据资源的桶,桶存储类别为“标准存储”,桶策略为“私有”。 SFS Turbo:文件系统类型为“HPC型”,存储类型请根据存储容量和性能需求选择,AI场景建议选择250MB/s/TiB及以上的存储类型。 ModelArts:AI开发平台,采用多机多卡分布式训练。 VPC:虚拟私有云和子网。 算法及数据:准备AI训练需要的算法及数据集,如Swin-Transformer算法,及ImageNet21K数据集。 说明: 为了提供最佳加速性能,建议SFS Turbo HPC文件系统和ModelArts资源池就近选择在同一个Region的同一个可用区(AZ)。 成本规划 OBS费用:详见OBS计费说明。 SFS Turbo费用:详见SFS计费说明。 ModelArts费用:详见ModelArts计费说明。 须知: 本文提供的成本预估费用仅供参考,资源的实际费用以华为云管理控制台或价格计算器显示为准。 如果您想了解更多本方案相关信息,或在方案使用过程中存在疑问,可通过方案咨询渠道,寻求专业人员支持。 父主题: 面向AI场景使用OBS+SFS Turbo的存储加速实践
  • 常见问题 可以只使用SFS Turbo HPC型文件系统支撑AI训练吗? 当数据规模较小,不存在冷热数据分级降本诉求,又希望能方便快捷的构建AI训练系统时,可以选择只使用SFS Turbo高性能文件存储支撑AI训练。 可以基于OBS对象存储支撑AI自动驾驶、大模型训练吗? OBS为容量型存储,在时延、带宽等存储性能上无法满足高性能AI训练,建议使用SFS Turbo HPC型高性能文件系统加速AI训练任务,训练速度加快可以节省AI算力费用。 文件系统使用空间不足,可以扩容吗? SFS Turbo文件系统支持在线扩容,扩容过程中挂载文件系统可能失败,建议业务低峰期扩容。 父主题: 面向AI场景使用OBS+SFS Turbo的存储加速实践
  • 使用模拟器接入 下载模拟器(默认是64位操作系统),并启动模拟器,如下图: 界面展示 模拟器提供了界面显示,填写Server地址、设备ID、设备密钥。请根据实际创建的设备信息填写。 Server地址:即域名,参考平台对接信息获取; 设备ID和设备密钥:在这里获取。 不同的Server地址SSL加密接入时要与对应的证书文件匹配使用,证书获取请参考获取资源,需要替换certificate文件夹下的证书,如下图: 用户可以选择设备侧建链时是否为SSL加密,选择Qos方式是0还是1,当前不支持Qos2,可参考使用限制。 新建连接 设备或网关在接入物联网平台时首先需要和平台建立连接,从而将设备或网关与平台进行关联。开发者通过传入设备信息,将设备或网关连接到物联网平台。点击新建连接按钮,域名、设备ID和秘钥正确的情况下,可以看到日志设备连接成功,可在平台查看设备状态,如下图: 订阅Topic 订阅某topic的设备才能接收broker发布的关于该topic的消息,关于平台预置topic可参考Topic定义。 建链后,如果成功订阅Topic,主界面日志栏显示如下信息: 发布Topic 发布Topic是指设备主动向平台上报自己的属性或消息,详细见设备属性上报接口文档。 在模拟器中实现了上报Topic、属性上报功能。 发布Topic后,Demo界面显示如下: 设备上报属性成功后可在“设备详情”页面查看到上报的属性: 接收下发命令 模拟器支持接收平台下发命令的功能,在MQTT建链完成并成功订阅Topic后,可以在控制台设备详情中对该设备进行同步命令下发。下发成功后,在MQTT的回调函数中接收到平台下发给设备的命令。 例如下发参数名为smokeDetector: SILENCE,参数值为50的命令。 同步命令下发成功后,Demo界面显示如下:
  • 使用AT指令定位模组通信问题 IoT Link在与物联网平台连接使用时,可使用AT指令快速定位模组与云端连通性问题,提高开发效率。本节将以“小熊派开发板”为例,介绍如何使用AT指令检测通信模组常见问题,如设备无法上线,数据上报不成功等。 小熊派开发板和电脑已正常连接(确保驱动已安装),并将开发板右上角的拨测开关切换到AT-PC模式。 单击VSCode底部工具栏的“Serial”。 选择2中查看的端口号,波特率设置为9600,然后单击“打开”。 输入“AT+CGATT?”,然后单击“发送”,若返回“+CGATT:1”,表示网络附着成功(附着成功代表NB-IoT联网正常),返回“+CGATT:0”表示网络附着失败(附着失败代表NB-IoT联网异常),请查看SIM卡是否插入正确,或联系运营商检查网络状态。 使用AT指令检测完模组通信后,请将拨测开关拨到AT-MCU模式,以便完成控制台的开发后,将采集到的传感器数据通过通信模组发送到平台。 PC模式是开发板与电脑串口通信,AT指令读写开发板的状态等数据;MCU模式是开发板通过模组上插的SIM连接网络,实现NB-IoT通信。
  • 更多参考 开发产品模型 在产品详情“模型定义”页面,单击“自定义模型”,配置产品的服务。 产品模型设计思路: 表1 设备服务列表 服务类型(ServiceID) 服务描述 Button 实时按键检测 LED LED灯控制 Sensor 实时检测光照强度 Connectivity 实时检测信号质量 服务能力如下表所示。 表2 Button 能力描述 属性名称 数据类型 数据范围 属性列表 toggle int 0 ~ 65535 表3 LED命令列表 能力描述 命令名称 命令字段 字段名称 类型 数据长度 枚举 命令列表 Set_LED 下发命令 LED string 3 ON、OFF 响应命令 Light_state string 3 ON、OFF 表4 Sensor 能力描述 属性名称 数据类型 数据范围 属性列表 luminance int 0 ~ 65535 表5 Connectivity 能力描述 属性名称 数据类型 数据范围 属性列表 SignalPower int -140 ~ -44 ECL int 0 ~ 2 SNR int -20 ~ 30 CellID int 0 ~ 65535 新增服务类型Button 进入“添加服务”页面,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。 “服务ID”:Button “服务类型”:建议和服务ID保持一致 “服务描述”:实时按键检测 在“Button”的下拉菜单下单击“添加属性”,填写相关信息,单击“确定”。 “属性名称”:toggle “属性描述”:不填写 “数据类型”:int(整型) “访问权限”:可读、可写 “取值范围”:0~65535 “步长”:0 “单位”:不填写 新增服务类型LED 在“模型定义”下单击“添加服务”,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。 “服务ID”:LED “服务类型”:建议和服务ID保持一致 “服务描述”:LED灯控制 在“LED”的下拉菜单下单击“添加命令”,输入命令名称“Set_LED”。 图14 新增命令 在“新增命令”弹框,分别单击“新增输入参数”和“新增响应参数”,填写相关信息后,单击“确定”。 图15 新增输入参数LED 图16 新增响应参数Light_state 新增服务类型Sensor 在“模型定义”下单击“添加服务”,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。 “服务ID”:Sensor “服务类型”:和服务ID保持一致 “服务描述”:实时检测光照强度 在“Sensor”的下拉菜单下单击“添加属性”,填写相关信息,单击“确定”。 “属性名称”:luminance “属性描述”:不填写 “数据类型”:int(整型) “访问权限”:可读、可写 “取值范围”:0~65535 “步长”:不填写 “单位”:lux 新增服务类型Connectivity 在“模型定义”下单击“添加服务”,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。 “服务ID”:Connectivity “服务类型”:建议和服务ID保持一致 “服务描述”:实时检测信号质量 在“Connectivity”的下拉菜单下依次单击“添加属性”,分别添加SignalPower,ECL,SNR,CellID属性,填写相关信息,单击“确定”。 图17 新增SignalPower属性 图18 新增ECL属性 图19 新增SNR属性 图20 新增CellID属性 开发编解码插件 在产品详情插件开发页面,选择“图形化开发”,单击“图形化开发”。 在“在线开发插件”区域,单击“新增消息”。 请按照本文档提供的操作开发编解码插件,确保添加字段的顺序和本文档提供的顺序保持一致。 新增消息Report_Connectivity,配置示例如下: 消息名:Report_Connectivity 消息类型:数据上报 添加响应字段:是 响应数据:AAAA0000(默认) 图21 配制示例 在“新增消息”页面,单击“添加字段”,勾选“标记为地址域”,添加地址域字段messageId,然后单击“确认”。 图22 添加地址域字段 单击“添加字段”,添加SignalPower字段,填写相关信息后,单击“确认”。 名字:SignalPower 数据类型:int16s(16位有符号整型) 图23 添加SignalPower字段 单击“添加字段”,添加ECL字段,填写相关信息后,单击“确认”。 名字:ECL 数据类型:int16s(16位有符号整型) 图24 添加ECL字段 单击“添加字段”,添加SNR字段,填写相关信息后,单击“确认”。 名字:SNR 数据类型:int16s(16位有符号整型) 图25 添加SNR字段 单击“添加字段”,添加CellID字段,填写相关信息后,单击“确认”。 名字:CellID 数据类型:int32s(32位有符号整型) 图26 添加CellID字段 完成消息Report_Connectivity的配置后,单击“确认”。 新增消息Report_Toggle,配置示例如下: 消息名:Report_Toggle 消息类型:数据上报 添加响应字段:是 响应数据:AAAA0000(默认) 图27 新增消息 在“新增消息”页面,单击“添加字段”,勾选“标记为地址域”,添加地址域字段messageId,然后单击“确认”。 图28 添加字段 单击“添加字段”,添加toggle字段,填写相关信息后,单击“确认”。 名字:toggle 数据类型:int16u(16位无符号整型) 图29 添加toggle字段 完成消息Report_Toggle的配置后,单击“确认”。 新增消息Report_Sensor,配置示例如下: 消息名:Report_Sensor 消息类型:数据上报 图30 新增消息 在“新增消息”页面,单击“添加字段”,勾选“标记为地址域”,添加地址域字段messageId,然后单击“确认”。 图31 添加字段 单击“添加字段”,添加data字段,填写相关信息后,单击“确认”。 名字:data 数据类型:int16u(16位无符号整型) 图32 添加data字段 完成消息Report_Sensor的配置后,单击“确认”。 新增消息Set_LED,配置示例如下: 消息名:Set_LED 消息类型:命令下发 添加响应字段:是 图33 新增消息 在“新增消息”页面,单击“添加字段”,勾选“标记为地址域”,添加地址域字段messageId,然后单击“确认”。 图34 添加字段 单击“添加字段”,勾选“标记为响应标识字段”,添加响应标识字段 mid,然后单击“确认”。 图35 添加字段 单击“添加字段”,添加“LED”字段,然后单击“确认”。 名字:LED 数据类型:string 长度:3 图36 添加字段 在“新增消息”页面,单击“添加响应字段”,勾选“标记为地址域”,添加地址域字段 messageId,然后单击“确认”。 单击“添加响应字段”,勾选“标记为响应标识字段”,然后单击“确认”。 单击“添加响应字段”,勾选“标记为命令执行状态字段”,添加命令执行状态字段 errcode,然后单击“确认”。 图37 添加字段 单击“添加响应字段”,添加Light_state响应字段,填写相关信息,单击“确认”。 字段名称:Light_state 数据类型:string 长度:3 图38 添加字段 完成消息 Set_LED 的配置后,单击“确认”。 拖动右侧“设备模型”区域的属性字段、命令字段和响应字段,与数据上报消息、命令下发消息和命令响应消息的相应字段建立映射关系。 单击“保存”,并在插件保存成功后单击“部署”,将编解码插件部署到物联网平台。
  • 概述 M2M(Machine-to-Machine),物联网平台支持基于MQTT协议实现设备间的消息通信。设备的连接和通信请求都交由平台承担,客户只需要关注自己的业务实现。可以实现设备间1到1、1到N、N到N的使用。IoT环境具有规模巨大的特点,设备之间通信没有限制、通信混乱,将产生巨大的安全隐患;特别是在比较复杂的环境下,没有对设备进行发布与订阅的权限配置,将导致设备处理数据困难、设备间通信管理难等问题;而策略的使用可以解决该问题,因此建议最好与设备策略一同使用。
  • Topic分类 表1 topic分类 Topic类别 描述 系统Topic 平台预先定义了各种设备和平台通信的Topic,具体Topic列表和功能说明可参考Topic定义。 自定义Topic 用户可以自定义Topic,设备和平台间可以基于用户自定义的Topic进行通信。 自定义topic分类: 在产品中定义需要使用的Topic,这类Topic有$oc/devices/{device_id}/user/前缀,消息上报或者消息下发时平台会校验Topic是否在产品中定义,未在产品中定义的Topic会被平台拒绝。使用方式可以参考链接使用自定义Topic进行通信的最佳实践。 使用非$oc开头的自定义Topic,如/aircondition/data/up进行消息通信,这类Topic平台不校验Topic权限,根据MQTT协议定义的规则进行Topic的消息上下行通信。使用方式可以参考链接设备自定义Topic迁移上云。
  • 概述 在云端规则中,用户创建的规则的解析及执行均在云端完成,云平台需要判断条件是否满足并触发相应的设备联动操作。端侧规则是指用户在云平台创建的设备联动规则,可以下发到端侧设备,该设备上会运行端侧规则引擎,对云端下发的规则进行解析并执行。端侧规则可以在网络中断或设备无法与云端交互情况下,继续在端侧执行指定规则。端侧规则可以扩展用户应用场景,提升端侧设备运行的稳定性及执行效率等。例如:设置室内光照强度低于20lx时,打开灯控总开关,自动照明,实现不依赖网络设备的智能控制。 典型场景 公路隧道中的监控设备种类较多,数量较大,并且隧道内网络环境复杂,网络质量也不稳定。然而,在应急处理时对网络实时性要求较高,因此无法将应急设备间的联动完全依赖于云端规则处理,需要借助端侧规则引擎实现预案联动。在实施时,可以预先针对火灾、交通事故等不同情况制定相应的设备联动预案。监控人员可以根据隧道内发生的情况,一键启动设备预案,通过端侧规则引擎实现多种相关设备同步进行状态变化,从而降低对网络质量的依赖,提高整体设备联动效率。例如,当烟道温度过高时,可以联动排水阀控制器打开排水阀实现降温;当一氧化碳浓度过高时,可以联动covi设备控制风机来通风。 前提条件 (1)相对云端规则,目前端侧规则的执行动作只支持命令下发; (2)设备需适配指定的SDK:Device SDK C_v1.1.2及以上版本; (3)设备需通过上述SDK提供的API,主动上报SDK版本号至华为云IoT平台。 图1 端侧规则架构图
  • 什么是产品模型 产品模型用于描述设备具备的能力和特性。开发者通过定义产品模型,在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的服务、属性、命令等信息,如颜色、开关等。当定义完一款产品模型后,再进行创建设备时,就可以使用在控制台上定义的产品模型。 产品模型包括产品信息和服务能力: 产品信息 描述一款设备的基本信息,包括设备类型、协议类型。 例如:设备类型为“WaterMeter”,协议类型为“CoAP”。 服务能力 描述设备具备的业务能力。将设备业务能力拆分成若干个服务后,再定义每个服务具备的属性、命令以及命令的参数。 以水表为例,水表具有多种能力,如上报水流、告警、电量、连接等各种数据,并且能够接受服务器下发的各种命令。产品模型文件在描述水表的能力时,可以将水表的能力划分五个服务,每个服务都需要定义各自的上报属性或命令。说明如下: 服务类型 描述 基础(WaterMeterBasic) 用于定义水表上报的水流量、水温、水压等参数,如果需要命令控制或修改这些参数,还需要定义命令的参数。 告警(WaterMeterAlarm) 用于定义水表需要上报的各种告警场景的数据,必要的话需要定义命令。 电池(Battery) 定义水表的电压、电流强度等数据。 传输规则(DeliverySchedule) 定义水表的一些传输规则,必要的话需要定义命令。 连接(Connectivity) 定义水表连接参数。 具体定义几个服务是非常灵活的,如上面的例子可以将告警服务拆分成水压告警服务和流量告警服务,也可以将告警服务合入到水表基础服务中。
  • 产品模型开发方法 物联网平台提供了多种开发产品模型的方法,您可以根据自己需求,选择对应的方法开发产品模型。 自定义模型(在线开发):从零自定义构建产品模型。详细参考在线开发产品模型。 上传模型文件(离线开发):将本地写好的产品模型上传到平台。详细请参考离线开发产品模型。 Excel导入:通过导入文件的方式快速开发产品模型。详细请参考Excel导入。 导入库模型(平台预置产品模型):您可以使用平台预置的产品模型,快速完成产品开发。当前平台提供了标准模型和厂商模型。标准模型遵循行业标准的产品模型,适用行业内绝大部分厂商设备,而厂商模型针对设备类型发布的产品模型,适用于用行业内少量厂家设备。您可以根据实际需求选择相应的产品模型。
  • IoTDA控制台功能依赖的身份策略 表7 IoTDA控制台依赖服务的身份策略 控制台功能 依赖服务 需配置角色/策略权限 规则-数据转发 BCS bcs:huaweiCloudChainInstance:list bcs:huaweiCloudChainEndpoint:list bcs:huaweiCloudChainChain:getChain cs:huaweiCloudChainInstance:get bcs:huaweiCloudChainContract:list 规则-数据转发 FunctionGraph FunctionGraph:function:list 规则-设备联动 SMN smn:topic:list 规则-数据转发 IAM iam:projects:listProjects iam:permissions:listRolesForAgency iam:permissions:listRolesForAgencyOnProject iam:permissions:checkRoleForAgencyOnProject iam:permissions:grantRoleToAgencyOnProject iam:roles:listRoles iam:agencies:createAgency iam:agencies:listAgencies 规则-数据转发 DMS(Kafka) dms:instance:list dms:instance:get 设备-软固件升级 OBS obs:bucket:ListAllMyBuckets obs:bucket:ListBucket 运维监控-统计报表 AOM aom:alarm:list aom:metric:list 运维监控-运行日志 LTS lts:topics:list lts:groups:list lts:groups:create lts:topics:create 企业版实例-泛协议接入 SWR swr:repository:listNamespaces swr:instance:listCenters IoTDA实例-购买实例 VPC vpc:vpcs:list vpc:subnets:get vpc:securityGroups:get IoTDA实例-购买实例 VPCEP vpcep:endpointServices:list vpcep:endpointServices:get 实例详情-标签 TMS tms:predefineTags:list
  • 身份策略权限管理 IoTDA服务支持身份策略授权,如表5所示,包括了IoTDA身份策略中的所有系统身份策略。身份策略授权场景的系统身份策略与角色与策略授权场景的并不互通。 表5 IoTDA系统身份策略 系统身份策略 描述 策略类别 IoTDAFullAccessPolicy 拥有对设备接入服务的所有执行权限 系统身份策略 IoTDAReadOnlyPolicy 拥有对设备接入服务的只读权限 系统身份策略 表6 IoTDA常用操作与系统权身份策略的关系列出了IoTDA常用操作与系统身份策略的授权关系,您可以参照该表选择合适的系统身份策略。 表6 IoTDA常用操作与系统权身份策略的关系 操作名称 IoTDAFullAccessPolicy IoTDAReadOnlyPolicy 创建产品 √ x 查询产品列表 √ √ 查询产品 √ √ 修改产品 √ x 删除产品 √ x 创建设备 √ x 查询设备列表 √ √ 查询设备 √ √ 修改设备 √ x 删除设备 √ x 重置设备密钥 √ x 冻结设备 √ x 解冻设备 √ x 重置设备指纹 √ x 灵活搜索设备列表 √ √ 下发设备消息 √ x 查询设备消息 √ √ 查询指定消息id的消息 √ √ 下发广播消息 √ x 下发设备命令 √ x 下发异步设备命令 √ x 查询指定id的命令 √ √ 修改设备属性 √ √ 下发设备消息 √ x 查询指定消息id的消息 √ √ 查询产品列表 √ √ 创建产品 √ x 查询产品 √ √ 修改产品 √ x 删除产品 √ x 查询设备列表 √ √ 注册设备 √ x 查询设备 √ √ 修改设备 √ x 删除设备 √ x 重置设备密钥 √ x 查询设备影子数据 √ √ 配置设备影子预期数据 √ x 下发设备命令 √ x 查询设备属性 √ √ 修改设备属性 √ x 查询设备属性 √ √ 查询设备影子数据 √ √ 配置设备影子预期数据 √ x 创建AMQP队列 √ x 查询AMQP列表 √ √ 查询单个AMQP队列 √ √ 删除AMQP队列 √ x 生成接入凭证 √ x 创建规则触发条件 √ x 查询规则条件列表 √ √ 查询规则条件 √ √ 修改规则触发条件 √ x 删除规则触发条件 √ x 创建规则动作 √ x 查询规则动作列表 √ √ 查询规则动作 √ √ 修改规则动作 √ x 删除规则动作 √ x 创建规则 √ x 查询规则列表 √ √ 修改规则 √ x 查询规则 √ √ 删除规则 √ x 修改规则状态 √ x 添加设备组 √ x 查询设备组列表 √ √ 查询设备组 √ √ 修改设备组 √ x 删除设备组 √ x 管理设备组中的设备 √ √ 查询设备组设备列表 √ √ 绑定标签 √ x 解绑标签 √ x 按标签查询资源 √ √ 查询资源空间列表 √ √ 创建资源空间 √ x 查询资源空间 √ √ 删除资源空间 √ x 创建批量任务 √ x 查询批量任务列表 √ √ 查询批量任务 √ √ 批量任务重试 √ x 批量任务停止 √ x 删除批量任务 √ x 上传批量任务文件 √ x 查询批量任务文件列表 √ √ 删除批量任务文件 √ x 上传设备CA证书 √ x 获取设备CA证书列表 √ √ 删除设备CA证书 √ x 验证设备CA证书 √ x 创建OTA升级包 √ x 查询OTA升级包列表 √ √ 获取OTA升级包详情 √ √ 删除OTA升级包 √ x 查询隧道列表 √ √ 创建设备隧道 √ x 删除设备隧道 √ x 查询隧道详情 √ √ 修改设备隧道 √ x
  • ServiceComb错误码 当您调用API时,如果遇到“APIGW”开头的错误码,请参见API网关错误码进行处理。 分类 状态码 错误码 错误信息 描述 处理措施 公共错误码 400 400001 Invalid parameter(s) 非法参数 根据错误提示中的规则,修改提示中的参数。 404 404001 ErrRecoudNotExists 该资源不存在 输入正确的查找条件。 409 409001 ErrRecordAlreadyExists 该资源已存在 请勿创建相同的记录。 500 500003 Internal server error 内部错误 内部错误请联系运维支持。 微服务 400 400002 ErrUnhealthy 服务处于不健康状态 请稍后重试或联系技术支持工程师。 400010 Micro-service already exists 服务已存在 修改创建微服务body体中的serviceId或微服务描述信息。 400011 ErrUnavailableBackend 没有可提供的后台实例 请稍后重试或联系技术支持工程师。 400012 Micro-service does not exist 服务不存在 请输入有效的serviceId。 400013 Micro-service has deployed instance(s) 无法删除该微服务,该微服务已部署实例 请先将实例下线,再删除微服务;或强制删除微服务(url中添加query参数“force=true”)。 400014 Undefined schema id schemaId不存在 请输入有效的schemaId。 400015 Not allowed to modify schema schema不允许修改 该schema已注册,不支持修改。 400016 Schema does not exist schema不存在 请先注册schema再查询。 400017 Instance does not exist 实例不存在 请输入有效的instanceId。 400018 ErrTagNotExists 标签不存在 通常出现在查询接口,表明标签不存在,业务根据返回值做恰当后续处理。 400019 ErrRuleAlreadyExists 规则已经存在 重复创建规则,通常可以忽略该错误。 400020 ErrBlackAndWhiteRule 错误的黑白名单 根据错误提示修改参数。 400021 ErrModifyRuleNotAllow 不允许更改规则 必须修改版本号才允许更改微服务信息。 400022 ErrRuleNotExists 规则不存在 通常出现在查询接口,表明规则不存在,业务根据返回值做恰当后续处理。 400023 Cosumer(s) depends on this micro-service 无法删除该微服务,该微服务被其他微服务依赖 可选择强制删除微服务(url中添加query参数“force=true”)。 400024 ErrPermissionDeny 权限不允许 使用合理的账号进行操作。 400025 ErrEndpointAlreadyExists 端口已存在 建议排查端口是否被其它实例占用。 400026 Micro-service version does not exist 微服务版本不存在 请输入正确的版本号或版本号范围。 400100 Not enough quota 配额不足 对应的资源(如微服务、实例、schema)配额不足,请删除部分资源再创建。 401 401204 No authorization header 认证不通过 若微服务引擎开启了安全认证,此参数必填。否则,无此参数。 开启了安全认证的微服务引擎Token,格式为: Authorization:Bearer {Token} Token获取方法,请参考获取ServiceComb引擎专享版用户Token。 401201 Request unauthorized 认证不通过 输入的Authorization不合法. 403 403001 ErrForbidden 操作受限 使用合理的账号进行操作。 500 500011 Registry service is unavailable 后端错误 内部错误请联系运维支持。 500101 ErrUnavailableQuota 没有提供配额 请稍后重试或联系技术支持工程师。 500605 NA 配置中心Etcd连接失败 请稍后重试或联系技术支持工程师。 认证 401 401202 User name or password is wrong 账号名称或密码错误 输入正确的账号名称和密码。 父主题: 错误码
  • 场景示例:核对资源用量是否与实际相符 假设用户在2023/04/08 10:09:06购买了一个按需计费GeminiDB Redis实例,并在2023/04/08 12:09:06时刻将其删除。 GeminiDB Redis实例流水账单 按需计费GeminiDB Redis实例按秒计费,每一个小时整点结算一次费用,您可以在流水账单中核对每一个计费周期的信息是否和实际相符,流水账单中计费资源是分开计费的,以“GeminiDB Redis存储”为例,具体如表1所示。 表1 GeminiDB Redis流水账单 产品类型 GeminiDB Redis 产品 GeminiDB Redis存储 计费模式 按需 消费时间 2023/04/08 10:09:06 ~ 2023/04/08 12:09:06时段计费系统将生成6笔流水账单,对应每一个计费周期,分别如下: 2023/04/08 10:09:06 ~ 2023/04/08 11:00:00 2023/04/08 11:00:00 ~ 2023/04/08 12:00:00 2023/04/08 12:00:00 ~ 2023/04/08 12:09:06 官网价 官网价=使用量*单价*容量 本例中,在第一个计费周期内GeminiDB Redis的使用量为3054秒,单价可在云数据库 GeminiDB价格详情中查询,以0.00378元/GB/小时为例,容量为40GB,那么官网价=(3054 ÷ 3600) * 0.00378 * 40 = 0.128268 元。同理,您可以计算剩余计费周期内资源的官网价。 优惠金额 用户使用云服务享受折扣优惠如商务折扣、伙伴授予折扣以及促销优惠等减免的金额。基于官网价的优惠金额。 抹零金额 华为云产品定价精度为小数点后8位(单位:元),因此在计费过程中会产生小数点后8位的资源使用费用。而在实际扣费时,仅扣除到小数点后2位,小数点后第3位到第8位部分金额会被舍弃,这种舍弃部分的金额称作抹零金额。 以第一个计费周期为例,抹零金额为:0.008268 元 应付金额 应付金额=官网价-优惠金额-抹零金额 以第一个计费周期为例,假设优惠金额为0,那么应付金额=0.128268 - 0 - 0.008268 = 0.12 元。 GeminiDB Redis实例明细账单 明细账单可以通过多维度展示客户账单的详细信息。一般通过设置统计维度为“按使用量”,统计周期为“按账期”来统计资源在某个月份的总开销,以“GeminiDB Redis存储”为例,建议您核对表2所示的信息是否和实际相符。 表2 GeminiDB Redis明细账单 产品类型 GeminiDB Redis 产品 GeminiDB Redis存储 计费模式 按需 资源名称/ID GeminiDB Redis的名称和ID 例如:nosql-b388,21e8811a64bf4de88bc2e2556da17983in12 规格 GeminiDB Redis存储 使用量类型 按需计费GeminiDB Redis的使用量类型为“时长” 单价 按需计费模式为简单定价(使用量*单价)时提供单价信息,其他的定价(如EIP公网带宽的阶梯定价)等不提供单价。 按需计费GeminiDB Redis属于简单定价,您可以在云数据库 GeminiDB价格详情中查中查询单价。 单价单位 在云数据库 GeminiDB价格详情中查中查询到的单价单位:元/GB/小时 使用量 按产品单价单位显示使用量,GeminiDB Redis的单价单位为元/GB/小时,因此使用量以小时为单位。本例中,2023/04/08 10:09:06 ~ 2023/04/08 12:09:06时段总计使用量为2小时。 使用量单位 小时 官网价 官网价=使用量*单价*容量 本例中,使用量为2小时,单价可在云数据库 GeminiDB价格详情中查中查询,以0.00378元/GB/小时为例,容量为40GB,那么官网价=2 * 0.00378 * 40 = 0.3024 元。 优惠金额 用户使用云服务享受折扣优惠如商务折扣、伙伴授予折扣以及促销优惠等减免的金额。基于官网价的优惠金额。 应付金额 用户使用云服务享受折扣优惠后需要支付的费用金额。
  • 分析服务能力 经过前面数据库正在执行的请求和慢请求的分析和优化,所有的请求都使用了合理的索引,CPU的使用率相对趋于稳定。如果经过前面的分析排查,CPU使用率仍然居高不下,则可能是因为当前实例已达到性能瓶颈,不能满足业务需要,此时您可以通过如下方法解决。 通过查看监控信息分析实例资源的使用情况,详情请参见查看监控指标。 对GeminiDB Mongo进行规格变更或者添加分片数量。具体操作请根据当前的实例类型参考如下文档。 添加节点数据量。 变更实例的CPU和内存。
  • 分析GeminiDB Mongo数据库的慢请求 GeminiDB Mongo数据库服务默认开启了慢请求Profiling ,系统自动将请求时间超过500ms的执行情况记录到对应数据库下的“system.profile”集合中。 通过Mongo Shell连接GeminiDB Mongo实例。 执行以下命令,进入指定数据库,以“test”为例。 use test 查看是否生成慢sql集合“system.profile”。 show collections; 回显中有“system.profile”,说明产生了慢SQL,继续执行下一步。 回显中没有“system.profile”,说明未产生慢SQL,该数据库不涉及慢请求分析。 查看数据下的慢请求日志。 db.system.profile.find().pretty() 分析慢请求日志,查找CPU使用率升高的原因。 下面是某个慢请求日志示例,可查看到该请求进行了全表扫描,扫描了1561632个文档,没有通过索引进行查询。 { "op" : "query", "ns" : "taiyiDatabase.taiyiTables$10002e", "query" : { "find" : "taiyiTables", "filter" : { "filed19" : NumberLong("852605039766") }, "shardVersion" : [ Timestamp(1, 1048673), ObjectId("5da43185267ad9c374a72fd5") ], "chunkId" : "10002e" }, "keysExamined" : 0, "docsExamined" : 1561632, "cursorExhausted" : true, "numYield" : 12335, "locks" : { "Global" : { "acquireCount" : { "r" : NumberLong(24672) } }, "Database" : { "acquireCount" : { "r" : NumberLong(12336) } }, "Collection" : { "acquireCount" : { "r" : NumberLong(12336) } } }, "nreturned" : 0, "responseLength" : 157, "protocol" : "op_command", "millis" : 44480, "planSummary" : "COLLSCAN", "execStats" : { "stage" : "SHARDING_FILTER", [3/1955] "nReturned" : 0, "executionTimeMillisEstimate" : 43701, "works" : 1561634, "advanced" : 0, "needTime" : 1561633, "needYield" : 0, "saveState" : 12335, "restoreState" : 12335, "isEOF" : 1, "invalidates" : 0, "chunkSkips" : 0, "inputStage" : { "stage" : "COLLSCAN", "filter" : { "filed19" : { "$eq" : NumberLong("852605039766") } }, "nReturned" : 0, "executionTimeMillisEstimate" : 43590, "works" : 1561634, "advanced" : 0, "needTime" : 1561633, "needYield" : 0, "saveState" : 12335, "restoreState" : 12335, "isEOF" : 1, "invalidates" : 0, "direction" : "forward", "docsExamined" : 1561632 } }, "ts" : ISODate("2019-10-14T10:49:52.780Z"), "client" : "xxx.xxx.xxx.xxx", "appName" : "MongoDB Shell", "allUsers" : [ { "user" : "__system", "db" : "local" } ], "user" : "__system@local" } 在慢请求日志中,您需要重点关注以下关键字。 全集合(全表)扫描:COLLSCAN 当一个操作请求(如QUERY、UPDATE、DELETE)需要全表扫描时,将大量占用CPU资源。在查看慢请求日志时,发现COLLSCAN关键字,很可能是这些查询占用了CPU资源。 如果该类操作请求较为频繁,建议您对查询的字段建立索引进行优化。 全集合(全表)扫描:docsExamined 通过查看参数“docsExamined”的值,可以查看一个查询扫描了多少文档。该值越大,请求的CPU使用率越高。 不合理的索引:IXSCAN、keysExamined 索引不是越多越好,过多索引会影响写入和更新的性能。 如果您的应用偏向于写操作,建立索引可能会降低写操作的性能。 通过查看参数“keysExamined”的值,可以查看一个使用了索引的查询,扫描了多少条索引。该值越大,请求的CPU使用率越高。 如果索引建立不太合理,或者匹配的结果很多。该场景下,即便使用了索引,请求的CPU使用率也不会降低很多,执行的速度也会很慢。 示例:对于某个集合的数据,a字段的取值很少(只有1和2),而b字段的取值很多。 如下所示,要实现 {a: 1, b: 2} 这样的查询。 db.createIndex( {a: 1} ) 效果不好,因为a相同取值太多 db.createIndex( {a: 1, b: 1} ) 效果不好,因为a相同取值太多 db.createIndex( {b: 1 } ) 效果好,因为b相同取值很少 db.createIndex( {b: 1, a: 1 }) 效果好,因为b相同取值少 关于{a: 1}与{b: 1, a: 1}的区别,可参考官方文档。 大量数据排序:SORT、hasSortStage 当查询请求中包含排序时,“system.profile”集合中的参数“hasSortStage”的值为“true”。如果排序无法通过索引实现,将在查询结果中进行排序。由于排序将占用大量CPU资源,该场景下,需要通过对经常排序的字段建立索引进行优化。 当您在“system.profile”集合中发现SORT关键字时,可以考虑通过索引来优化排序。 其他操作如建立索引、Aggregation(遍历、查询、更新、排序等动作的组合)也可能占用大量CPU资源,但本质上也适用以上几种场景。更多Profiling的设置,请参见官方文档。
  • 分析GeminiDB Mongo数据库正在执行的请求 通过Mongo Shell连接GeminiDB Mongo实例。 执行以下命令,查看数据库当前正在执行的操作。 db.currentOp() 回显如下: { "raw" : { "shard0001" : { "inprog" : [ { "desc" : "StatisticsCollector", "threadId" : "140323686905600", "active" : true, "opid" : 9037713, "op" : "none", "ns" : "", "query" : { }, "numYields" : 0, "locks" : { }, "waitingForLock" : false, "lockStats" : { } }, { "desc" : "conn2607", "threadId" : "140323415066368", "connectionId" : 2607, "client" : "xxx.xxx.xxx.xxx:xxx", "appName" : "MongoDB Shell", "active" : true, "opid" : 9039588, "secs_running" : 0, "microsecs_running" : NumberLong(63), "op" : "command", "ns" : "admin.", "query" : { "currentOp" : 1 }, "numYields" : 0, "locks" : { }, "waitingForLock" : false, "lockStats" : { } } ], "ok" : 1 }, ... } client:发起请求的客户端。 opid:操作的唯一标识符。 secs_running:该操作已经执行的时间,单位:秒。如果该字段返回的值特别大,需要查看请求是否合理。 microsecs_running:该操作已经执行的时间,单位:微秒。如果该字段返回的值特别大,需要查看请求是否合理。 op:操作类型。通常是query、insert、update、delete、command中的一种。 ns:操作目标集合。 其他参数详见db.currentOp()命令官方文档。 根据命令执行结果,分析是否有异常耗时的请求正在执行。 如果业务日常运行的CPU使用率不高,由于执行某一操作使得CPU使用率过高,导致业务运行缓慢,该场景下,您需要关注执行耗时久的请求。 如果发现异常请求,您可以找到该请求对应的opid,执行db.killOp(opid)命令终止该请求。
  • 任务状态说明 实时灾备提供了多种任务状态,以便区分不同阶段的灾备任务。 实时灾备任务的状态和说明,请参见表1。 表1 实时灾备任务状态和说明 状态 说明 创建中 正在创建数据复制服务需要用到的灾备实例。 配置 灾备实例创建成功,但还没有启动任务,可以继续配置任务。 冻结 账户余额小于或等于0元,系统对该用户下的实例进行冻结。 等待启动 已经下发了定时启动任务到灾备实例上,等待灾备实例启动任务。 启动中 正在启动灾备任务。 启动失败 实时灾备任务启动失败。 初始化 正在进行业务数据库到灾备数据库的全量数据初始化。 初始化完成 已完成灾备任务的初始化。 灾备中 持续进行从业务数据库到灾备数据库的增量数据灾备。 倒换中 正在进行灾备任务的主备倒换。 已暂停 实时灾备步任务已暂停。 灾备异常 灾备阶段中,任务出现异常。 结束任务 释放该灾备实例和资源。 结束任务中 正在释放灾备任务所使用的灾备实例和资源。 结束任务失败 释放灾备任务所使用的实例和资源失败。 已结束 灾备任务所使用的灾备实例释放成功。 对于创建失败的任务,DRS默认保留3天,超过3天将会自动结束任务。 对于未启动、状态为配置中的任务,DRS默认保留3天,超过3天DRS会自动删除后台资源,当前任务状态不变。当用户再次配置时,DRS会重新申请资源。 已删除的灾备任务在状态列表中不显示。 父主题: 任务生命周期
共100000条