-
1、AT+MLWULDATAEX 命令描述:终端设备通过该命令将数据发送给 NB 模组,模组在向 NB-IoT 平台发送 CON 或 NON 消息时携带释放辅助指示(RAI)命令格式:AT+MLWULDATAEX=<length>,<data>,<mode>[,<seq参数说明:< length >:发送数据的长度 <data>:16 进制形式的字符串<mode>: 0x0000: 发送 NON 消息 0x0001: 发送 NON 消息,且携带RELEASE 释放辅助指示 0x0100: 发送 CON 消息 0x0101: 发送 CON 消息,且携带RELEASE_AFTER_REPLY 释放辅助指示<seq_num>:0~255该命令发送最多 512 字节数据。如果未注册或未收到 19/0/1 资源的订阅,则只会触发模组注册,并将发送的数据丢弃。 如果使用该命令发送 CoAP 数据时携带了非 0 的 seq_num,且当前有携带相同 seq_num 的 NON 或者 CON类型 CoAP 数据未发送完成,那么,会将数据丢弃并返回错误。2、示例:AT+MLWULDATAEX=11,B6A0A1A2A3A4A5A6A7A8A9,0x0000OKAT+MLWULDATAEX=11,B6A0A1A2A3A4A5A6A7A8A9,0x0001OKAT+MLWULDATAEX=11,B6A0A1A2A3A4A5A6A7A8A9,0x0100OK+MLWULDATASTATUS:4AT+MLWULDATAEX=11,B6A0A1A2A3A4A5A6A7A8A9,0x0101OK+MLWULDATASTATUS:4MLWULDATASTATUS值如下表:ParameterDescription0未发送1等待响应2发送失败3发送超时4发送成功5收到 RST 响应测试结果如下:
-
IoT平台支持批量设备命令下发啦~能很好的满足租户对批量设备的控制噢!批量命令下发分以下5种:按设备列表发送命令(DeviceList)按设备类型发送命令(DeviceType)按区域发送命令(DeviceArea)按设备组发送命令(GroupList)命令广播发送(Boradcast)如何实现的?批量命令下发中各模块功能详述:划重点:批量命令下发的是缓存命令,所以该特性和命令下发机制的缓存下发相关。具体请 【每天五分钟,精通全联接】【NB-IoT系列】——命令下发机制:立即下发还是缓存下发?任君选择~好啦,今天的五分钟就到这里啦,对于NB-IoT其他的介绍,请关注后续【NB-IoT系列】。如果您想了解更多的全联接内容,欢迎关注【每天五分钟,精通全联接】噢~
-
震惊了!面对数量庞大的设备管理问题,它是这样做的。IoT平台支持对批量设备下发命令功能,解决租户批量管理设备的需求。批量命令下发种类目前IoT平台支持对批量设备下发以下5种命令:按设备列表发送命令(DeviceList)按设备类型发送命令(DeviceType)按区域发送命令(DeviceArea)按设备组发送命令(GroupList)命令广播发送(Boradcast)总流程图接口介绍涉及各接口详细介绍,请登录华为support网站,搜索版本文档“IoM Platform VXXXRXXXCXX_ReleaseDoc_CN”,获取接口文档查看。“VXXXRXXXCXX”为当前版本的版本号。
-
(转自 https://developer.huawei.com/ict/forum/thread-49197.html )1.1 软件包平台对升级的软件有格式要求,厂商需要根据软件制作规范制作软件包,并上传到IoT平台。1.1.1 软件包制作1、 准备升级软件包文件设备厂商自行发布用于设备升级的软件包版本文件。【说明】:需要将所有要在升级传给设备的软件文件都打成一个升级文件。【注】:软件包文件名称不支持包含中文字符。2、 制作设备升级版本包步骤1 新建文件夹命名为“DM”,在DM文件夹下创建设备系统类型文件夹,例如嵌入式设备通常采用“linux”,将厂商发布的软件包描述文件“UpgradeDesc.josn”文件至于“linux”目录下,参见下图:UpgradeDesc.json文件模板如下:{ "specVersion": "1.0", "fileName":"ExamplePackage.bin", "packageType": "softwarePackage", "version": "V1.0", "deviceType":"MuliSensor", "manufacturerName":"eSDK_Huawei", "model": "v01", "protocolType":"CoAP", "description":"Test software package", "versionCheckCode":"1", "date":"2018-04-20", “supportSourceVersionList”:[ {"swVersion":"*"}]}注意:specVersion描述文件版本号,固定值:"1.0";packageType软件包必须设为:"softwarePackage",“supportSourceVersionList”和“versionCheckCode”为必填参数,并且versionCheckCode不宜过长步骤2 在与“DM”同级目录下创建平台类型文件夹,例如“linux”,该文件夹名称必须与步骤1中平台类型文件夹一致,将厂商软件包至于该目录,参见下图步骤3 选中“DM”和“linux”文件夹,使用winRAR等压缩工具打包成ZIP格式的压缩包package.zip(注意package.zip下不能包含package这层目录)。3、 对版本包进行离线签名使用离线签名工具对软件版本包进行签名,操作步骤如下:1) 使用浏览器登录SP Portal。2) 下载离线签名工具。a. 单击左侧 图标,打开管理页面。b. 单击左侧导航栏“工具”,在右侧区域单击“下载”,下载离线签名工具。3) 在下载路径找到压缩包“signtool.zip”,右键菜单中选择“Extract to signtool\”解压缩至文件夹“signtool”。4) 进入signtool文件夹,运行“signtool.exe”。操作界面如下所示。5) 生成数字签名公私钥对。a. 根据实际情况选择签名算法。目前提供两种签名算法:ECDSA_256K1+SHA256RSA2048+SHA256b. 设置“私钥加密口令”。§ 口令复杂度说明:§ 口令长度至少为6个字符§ 口令必须包含如下至少两种字符的组合:ü至少一个小写字母ü至少一个大写字母ü至少一个数字ü至少一个特殊字符:`~!@#$%^&*()-_=+\|[{}];:'",<.>/?和空格c. 单击“生成公私密钥”,在弹出的窗口中选择需要保存的目录,单击“确定”。 可在保存的目录下查看生成的公私密钥文件。 § 公钥文件:public.pem § 私钥文件:private.pem6) 对升级包进行数字签名。离线签名工具只能对.zip格式的压缩包进行数字签名。a. 在“软件包数字签名”区域,单击“导入私钥文件”,选择步骤5.3中生成的私钥文件,单击“打开”。b. 在弹出的对话框中,输入步骤5.2中设置的口令,单击“确定”。c. 在“需要数字签名的软件包”区域,选择需要进行数字签名的升级包。单击“打开”。d. 单击“进行数字签名”。签名成功后,在原软件包所在目录生成名为“XXX_signed.XXX”的带签名的升级包。7) 升级包签名验证。a. 在“软件包签名验证”区域,单击“导入公钥文件”,选择步骤5.3中生成的公钥文件,单击“打开”。b. 在“需要验签的软件包”区域,选择步骤6中生成的名为“XXX_signed.XXX”的带签名的升级包。单击“打开”。c. 单击“进行软件包验签”。§ 验证成功则弹出“验证签名成功!”提示框。§ 验证失败则弹出“验签异常!”提示框。 ----结束1.1.2 软件包升级1、 公钥上传上传软件包之前需要上传对应的公钥信息,公钥来源离线签名时生成的public.pem文件登陆SP Portal,选择应用管理,点击进入对应的应用下,在升级认证管理页面上传公钥。2、软件包上传在设备管理页面,选择对应的应用,点击包管理,在软件包管理页面点击添加软件包,选择签名后的软件包,点击确认执行软件包上传。1.2 profile如果设备需要软件升级,需要在设备profile里增加软件升级能力的定义,升级协议选择“PCP”。参考附件devicetype-capability文件中的omCapability.upgradeCapability定义。1.3平台升级协议平台升级协议(PCP协议)规定了设备和平台之间升级的通信内容与格式,从起始标识到数据区的最后一个字节的CRC16校验值。计算前先把校验码字段置为0,使用CRC16_CCITT计算校验值把结果写到此字段。 字段名 字段类型 描述和要求 起始标识 WORD 起始标识,固定为0XFFFE 版本号 BYTE 高四位预留;低四位表示协议版本号,当前为1 消息码 BYTE 标识一个请求消息,应答消息的消息码和请求消息相同 校验码 WORD 从起始标识到数据区的最后一个字节的CRC16校验值,计算前先把校验码字段置为0,计算完成后把结果写到校验码字段。 数据区长度 WORD 数据区的长度 数据区 BYTE[n] 参见具体指令的定义 升级CRC校验部分代码:u16do_crc(u16 reg_init,u8 *message, u16 length){u16crc_reg = reg_init; u16 i; for (i = 0 ; i < length; i ++ ) {crc_reg= (crc_reg >> 8) ^ crc_table1[(crc_reg ^ message) & 0xff]; } returncrc_reg;}u16Get_Crc16(u8 *d, u16 len){ u16 crc_reg = 0x0000; return do_crc(crc_reg, d,len); } 1.4创建软件升级任务在SP portal“设备管理/批量任务/软件批量任务”中选择“软件升级”,点击右上角的“创建批量任务”升级CRC校验.rardevicetype-capability.rar
-
对于大多数NB-IoT开发者来说,如果能在正式开发之前,快速体验NB-IoT的上报数据和命令下发流程,有利于加深对华为NB-IoT解决方案的理解,对于后续的开发、调试工作将是事半功倍的。按照本帖的操作流程指导,开发者可以利用已有Demo快速接入华为OceanConnect平台,零代码体验NB-IoT的数据上报和命令下发全流程。基于模组进行NB-IoT业务流程体验,要求具备以下条件:1. 已购买NB模组,对硬件有一定的了解。2. 调试地有NB网络覆盖。声明:由于利用NB模组调试涉及网络等不确定性问题,定位起来较为困难。如果在操作过程中无法确保入网成功,可提供模组日志给华为开发人员帮您排查。1 准备资源1.1 平台资源申请OceanConnect平台资源的方式:https://www.huaweicloud.com/product/iot.html11.2 NB模组需自行向NB模组厂商购买。目前NB-IOT模组(集成华为NB-IOT芯片)由两家合作伙伴提供,分别是上海移远和杭州利尔达。您可以直接向他们咨询获取模组,详细规格信息可以访问对应网站。移远:http://www.quectel.com/cn/product/list/LPWAIoTModule.htm利尔达: http://www.lierda.com/product/id/94/list.html1.3 SIM卡核心网注册的SIM卡一张,找运营商获取。1.4 Profile文件DemoMultiSensor_eSDK_v01.zip,请下载附件后上传至OceanConnect平台使用,无须修改。1.5 编解码插件Demo与MultiSensor_eSDK_v01.zip配套的编解码插件已由华为人员上传至OceanConnect平台,可直接使用 ,无须关注。1.6 GUI Demo模拟北向应用。下载&使用方法:https://bbs.huaweicloud.com/forum/thread-13266-1-1.html 1.7 串口助手串口助手——SSCOM,可自行百度下载。NB-IoT方案,创建应用时,以下选项不能有误:“所属行业”必须选择“公用事业(NB-IoT)”。“关联API包”必须勾选“基础API包”和“公用事业(NB-IoT)API包”,建议全部勾选。“应用能力”必须选择“规则引擎”。注意:1. 如果下发OceanConnect资源邮件时,系统已创建好应用,可直接使用。2. 如果创建应用时以上某项选择错误,需要删除应用后重新创建,修改无效。 注册设备至平台2 上传开发组件 2.1 上传profile文件至OceanConnect平台将已下载的profile文件MultiSensor_eSDK_v01.zip上传至OceanConnect平台。具体方法如下:Step 1 使用邮件中的“平台Portal链接”和“登录账号/密码”信息登录OceanConnect平台,选择菜单“Profile开发 > 导入Profile”。 Step 2 单击右上角“导入”图标,上传文件时选中Profile资源文件MultiSensor_eSDK_v01.zip,设备类型、厂家ID和设备型号无须修改,单击“上传”。 2.2 上传编解码插件至OceanConnect平台与MultiSensor_eSDK_v01.zip配套的编解码插件已上传至IoT平台,您可直接使用,无须重复上传。注意:在后续业务开发过程中,您需要根据业务需要开发自己的编解码插件并上传至OceanConnect平台 3 注册设备Step 1 登录OceanConnect平台,单击“我的设备 > 注册设备”,即可看到应用下所有已上传的Profile,单击选中需要注册设备对应的Profile。 Step 2 在Profile详情页,填写“设备名称”和“设备标识码”,单击“注册”按钮注册设备。设备名称:用于区分不同设备,名称可自定义(如MultiSensor-02)。设备标识码:设备唯一标识。使用NB模组对接时,填写模组的IMEI号码。IMEI号为15位数,一般以86开头,贴于NB模组标签上,或可通过AT+CGSN=1指令查询得到。注册设备成功后返回的设备ID和PSK码请牢记。Step 3 单击“我的设备”,查看对应设备是否注册成功。如果注册成功,可以看到设备处于“OFFLINE”状态。4 终端入网实现终端入网,需要在SSCOM中通过一系列AT指令来控制NB模组。SSCOM中的各项设置说明如下:串口号:选择与NB模组进行通信的实际物理com口,并确保打开串口。波特率:选择9600。NB模组内置的华为NB芯片仅支持波特率9600。发送AT指令时确保勾选“发送新行”,不勾选“DTR”和“RTS”。其他参数保持默认。终端入网的详细步骤如下所示:Step 1:终端上电,执行“AT+NRB”复位终端。如果返回OK,表示终端正常运行。Step 2:执行“AT+CFUN=0”关闭功能开关。如果执行成功,返回OK。 Step 3:执行“AT+NTSETID=1,设备ID”设置设备ID。设备ID为NB模组的IMEI号,如果执行成功,返回OK。 Step 4:执行“AT+NCDP=IP, PORT”设置需要对接IoT平台的地址,端口为5683。如果执行成功,返回OK。 Step 5:执行“AT+CFUN=1”开启功能开关。如果执行成功,返回OK。 Step 6:执行“AT+NBAND=频段”设置频段。如果执行成功,返回OK。频段信息可以咨询NB模组厂商。 Step 7:执行“AT+CGDCONT=1,“IP”,“APN”设置核心网APN。如果执行成功,返回 OK。核心网APN可联系运营商(与运营商网络对接时)或者OpenLab负责人(与OpenLab网络对接时)进行获取。Step 8:执行“AT+CGATT=1”进行终端入网。如果执行成功,返回OK。 Step 9:执行“AT+CGPADDR”查询终端是否获取到核心网分配的IP地址,如果获取到IP地址,表示终端入网成功。 Step 10:执行“AT+NNMI=1”设置下行数据通知功能,如果执行成功,返回OK。5 数据上报 5.1 串口工具中上报数据执行“AT+NMGS=5,00012E1F63”发送上行数据,如果上行数据发送成功,返回OK。由于设置了 “AT+NNMI=1”,如果编解码插件中写了OceanConnect平台对上报数据的应答,则上行数据发送成功后会自动获取应答数据。上报数据的AT命令为:AT+NMGS=5,00012E1F63。具体解析如下:1. AT+NMGS=N,XXXXXXXXXX为上报数据的AT命令格式,其中“N”表示一共上报几个字节,后面为具体的上报字节内容,以十六进制字符串表示。这些需要提前在编解码插件中写好。2. 本例中,一共上报5个字节,分别为“00”、“01”、“2E”、“1F”、“63”。其中,第一个字节“00”表示上报数据,第二个字节“01”表示上报数据对应的serviceId为Humidity(湿度),第三个字节“2E”表示HumidityCur(当前湿度),第四个字节“1F”表示HumidityMinToday(当天湿度最小值),第五个字节“63”表示HumidityMaxToday(当天湿度最大值)。这些内容与profile文件和编解码插件是一一对应的。由于本例中的编解码插件写了上报数据应答,在上报数据成功后会收到“+NNMI 1,01”的应答。5.2 OceanConnect平台中查看数据 Step 1 登录OceanConnect平台,点击“我的设备”进入设备列表页,根据deviceId选择对应注册的在线设备,单击进入。Step 2 在设备详情页,选择”历史数据”项,即可看到已经上报且被解析后的json数据。 在实际应用中,数据到达OceanConnect平台后,可以通过两种方式在北向应用服务器中接收数据:1. 调用数据查询类接口,查询OceanConnect平台中缓存的数据。2. 调用订阅接口,设置好推送地址,数据到达OceanConnect平台后会按照既定的IP地址主动将数据推送至北向应用服务器。6 命令下发 Step 1 解压IoT_OceanConnect_North_GUI_APPDemo.zip(简称GUI Demo)压缩包,打开application文件夹,直接双击运行Demo.jar文件。 Step 2 根据华为下发的OceanConnect平台资源邮件内容填写对应配置项后,单击“Login”按钮登录。注意:如果Demo.jar文件无法打开,请确认本机是否配置了JDK开发环境。 Step 3 在“Module Choose”选项框中,“Solution”选择“NB-IoT”,“Module”选择“Command Manager”。 在“Post Asyne Command”选项框中,输入deviceId,单击“Get Command”按钮,获取该deviceId对应设备所具备的服务和命令。说明:这些服务和命令是在profile中定义好的。 Step 4 设置具体参数,选择需要下发的服务和命令后,单击“Post Command“。各参数含义及设置方法如下: Service:设备提供的服务ID,只能从下拉框中选择。以“Temperature“为例。 Command:该服务所具备的命令,只能从下拉框中选择。选定后会出现该命令可选的参数名(如Period或Value)。以“HIGH_TEMPERATURE_WARNING“为例,参数选择”Value”。 Value:参数名对应的参数值。以设置“50“为例。 Expire Time:命令的超期时间,单位为秒。如果在设置时间内,命令还缓存在平台没有下发就会超期作废。以设置“200“为例。 Step 5 登录OceanConnect平台,在设备详情页的“历史命令“项中,可以查看刚下发的命令状态。分为两种情况:1) 如果此时NB模组处于connect态,命令会立即下发,命令状态为“已送达”。2) 如果此时NB模组处于非connect态,命令会缓存下发,命令状态为“等待”。这种情况下,需要上报一条数据激活设备,才能收到下发的命令。Step 6 参照“5.1 SSCOM中发送数据“,发送一条AT命令:AT+NMGS=5,00012E1F63,此时刷新历史命令,可以看到命令状态切换为“已送达”,表明命令已下发。关于IoT平台的各命令状态,请参阅:https://bbs.huaweicloud.com/forum/thread-13244-1-1.html 7 着手开发 在利用Demo熟悉数据上报和命令下发流程,并理解业务后,可以着手进行自身业务的开发。主要需要开发的四大组件包括:profile,编解码插件,南向设备,北向应用。具体开发方法和参考文档、Demo请查阅:https://support.huaweicloud.com/devg-IoT/iot_02_3003.html 在Demo体验或实际开发过程中,遇到任何技术问题,建议通过论坛寻求帮忙,都会有专业的华为技术人员帮您解答。8 附件MultiSensor_eSDK_v01.zip
-
本人也是一个写应用的,但我配置的平台的时候不想去使用硬件,NB设备需要发AT调试设备,上传数据,模组的说明文档看不全还常常报错,有时候一个小错误找不出来烦半天。这里就不得不说一下ocean平台的模拟器功能的强大了,他能帮您快速配置oceanconnct平台。 平台上面是着么说的这里正式开始。。。。。。编写Profile编解码插件 这个Profile是设备描述的文件 描述设备包括他的名称 厂商 设备类型 数据格式 等等。。。1,Profile开发点击profile在线开发,自定义产品(点击自定义产品->创建全新产品)这里写入的是一个描述设备的信息,就是描述你要创建的设备是什么名字 ,什么型号 ,哪里产的,特别注意的是看下图的CoAP协议 ,我们接下来的使用的NB硬件也必须通过CoAP发数据 点击确定之后我们下拉到服务列表(新建服务->新增属性->新增字段)一个NB设备可以有多个服务 一个服务又包括上传数据的格式描述和下发数据的格式描述这里我们点击新增属性,这个新增属性即是你要上传数据的描述 如下图我们简单的添加两个数据 分别是描述压强的一个属性和描述电压的一个属性 点击确定后我们在添加一个描述下发指令的一个值点击新增命令:保存点击新增字段后又一个命令下发字段和一个命令响应字段 下发字段又ON或者OFF 2.插件开发编解码插件的用处:就是让你发上来的数据以什么格式显示在平台上面,说白了就是在平台上面解释模组发上来的数据点击(插件开发->开始设计->新建插件)选择我们刚刚新建的插件这里我们新建一个上传数据服务和下发数据服务将左边的控件拉过来对应下图为插件的数据类型,参数:3,注册设备填写设备名称 设备IMEI这里注册随便写一个比较复杂的 这个平台是不允许相同的IMEI号注册的 即是每个IMEI号在平台上面只能同时存在一次点击注册注册成功4.发送数据1.上报数据这里不点击我们平台上面的模拟器选择模拟设备(点击模拟器->绑定设备) 这里的IMEI号和我们的注册设备的时候一样写入3个字节的数据 在编解码插件上面也是设定3个字节的平移数据 平台只能解析3个 点击发送我们在去看平台数据为3 和 48 2.命令下发选择我的设备这个命令下发的标识符这个我们选择ON发送一次和OFF发送一次右边对话宽会出现如下图我们再次点击模拟设备 如下图看到4F4646为ASCLL码 就是OFF 4F4E就是ASCLL码ON
-
一、云时代的应用性能测试挑战二、华为云性能测试实践方案如何更加系统的开展性能测试活动被测对象分析测试场景分析建模测试需求分析工具选型与搭建测试执行性能测试分析与调优1. 被测对象分析(某社交类APP)从系统架构分析可能出现的瓶颈点,作为重点测试场景Feed流会频繁操作后台的Redis等服务,每次操作会产生100+次网络操作,200+次key/Value运算,因此会成为系统的主要性能瓶颈备注:Feed是将用户主动订阅的消息源组合在一起形成内容聚合器,帮助用户持续地获取最新的订阅源内容,在社交类应用中被广泛使用若干2. 测试场景分析建模业务特点:用户增长迅速、突发事件高流量并发Step1:以使用场景为主线,构建性能模型(使用角色、使用阶段等)Step2:分析每个操作场景的影响因子,如好友、关注数量等,建立每个场景的测试模型 单场景一级接口测试单场景二级接口测试如需测试某个对性能的影响,可递增方式改变因子值进行测试 按照页面权重分配压力模型,实际在生产环境比例会不断变化,因此在性能摸底过程中需要不断调整摸底示例:全页面混合压测模型3. 测试工具需求分析识别关键场景测试需求1) HTTP协议/Rest接口 2) 用户登陆认证 ,模拟多用户操作 3) 支持接口串联场景,需要上下文关联4) 性能暂无基线,需要支持递增模式快速摸底 5) 各页面用户量未知,需要灵活调整混合模型配比 6) 由于社交类应用业务增长迅速,因此需要支持按需使用,随时扩大工具的并发量7) 需要支持10万以上的并发8) 测试结果易于观察、保存9) 提供监控能力,便于快速定位 4. 测试服务选型与搭建测试服务选项原则:功能满足、效率高(即开即用)、成本低云服务更适合测试高扩展性的大规模分布式系统 5. 测试执行分层开展性能测试,在集成阶段确保性能测试活动可开展 测试执行的一些典型问题性能是一个逐步提升的过程,测试过程中需要找到扩容的模型,从不足50的TPS提升至万级 6. 测试结果分析1.1 如何从测试工具侧快速分析被测对象可能存在的问题· 存在部分响应超时:a) 服务器繁忙,如某个服务节点CPU利用率高b) 网络IO超过VM/EIP带宽c) 等待后端微服务、数据库的超时时间设置过长· 运行一段时间后全部响应超时或者检查点校验不通过:a) 大压力导致系统中某个微服务奔溃b) 后端数据库无响应· TPS未随着并发数增长而上升:a) 系统性能到达瓶颈,持续并发加压过程中响应时延增加(可观察响应区间统计)b) 可通过进一步加压是否会出现非正常响应验证· TP90响应时延较短,TP99时延高:a) 系统性能接近瓶颈b) 可通过进一步加压是否会出现非正常响应验证 1.2 一些通用优化建议1) 扩容,链路中的某一应用可能出现cpu使用率较高或者连接池资源不够用(rpc、jdbc、redis连接池等)但本身对于拿到连接的请求处理又很快,这一类需要横向扩展资源。2) 应用逻辑优化,比如存在慢sql、 逻辑的不合理如调用db或者redis次数过多、没有做读写分离造成写库压力过大。3) 超时时间的合理设置,对于应用之间的rpc调用或者应用与其他基础组件之间的调用,均需要设置合理的超时时间,否则过长的等待将造成整个链路的故障。4) 缓存的应用,请求尽可能从前端返回,而不是每一个都要让后端应用处理后再返回,减轻后端应用及数据库压力,提高系统吞吐能力。5) 限流,对于超出承载能力的QPS或并发,可以进行拦截并直接返回提示页面。6) 降级,对于非核心链路上的应用,允许故障关闭而不影响核心链路7) 扩容和优化也是有限度的,在评估容量内,保障核心交易链路正常是重中之重,对于非核心功能模块考虑降级场景 三、某互联网平台案例业务特点:突发事件高流量突发,如瞬间由百级用户增长到万级对于网络架构复杂的应用,可以通过网络架构上的分段验证,如分别从最外端的CDN入口(1)中间的ELB(2)业务层(3)分别做测试,验证网络架构上的瓶颈和影响应用内部的性能瓶颈如何提升定位效率? 四、性能测试的最后一公里集成APM,解决性能问题定位最后一公里问题,大幅提升性能测试效率如:xxx并发情况下,服务A调用服务B的事务1出现问题,并直接定位至出错函数在上线和活动前期通过云性能测试服务进行压力测试,发现部分接口的响应时间比较长,会出现比对失败和响应超时,通过APM的调用链分析,发现有部分SQL语句比较耗时,针对这些SQL查询语句,建立了索引,快速定位问题并迅速解决。最终经过两轮测试优化后,官网首页访问响应超时与正常返回比提升了43.3%,预约试驾场景响应超时与正常返回比降低到0,提升了100%。性能瓶颈定位时间,从官网未使用APM时需要1周,缩短到俱乐部使用APM后的0.5天,效率提升90%应用拓扑事务监控调用链跟踪 五、性能测试服务关键能力要求华为云性能测试服务CPTS官网:https://www.huaweicloud.com/product/cpts.html
-
在华为云市场下单申请沃通SSL证书,沃通客服会联系您协助完成域名验证等身份认证流程,需要用户配合完成相关的验证操作,才能最终获取SSL证书。本文重点介绍如何完成域名验证操作? 域名验证有三种方式:邮箱验证、DNS验证、网站控制权验证。注意在做域名验证的时候,不要直接点击验证,先根据您选择的验证方式,做完以下操作再点击邮箱中的验证按钮,否则会提示 一、邮箱验证只能验证以下几个邮箱,如果没有,需要在邮箱系统中创建该企业邮箱,不支持指定特定邮箱做验证(以wosign.com为例)。webmaster@wosign.com postmaster@wosign.comhostmaster@wosign.com admin@wosign.com administrator@wosign.com域名验证选择邮箱验证,选择以上邮箱中的一种,打开对应的邮箱,点击验证。出现以下图示,表示验证通过,否则,请联系您的专属客服。 二、DNS验证设置特定TXT记录值来验证域名有效性。申请证书订单,点击域名验 --> 选择dns方式验证 --> 等待接收验证邮箱中的txt值 --> 添加TXT记录(以阿里云DNS为例)。 1. 用域名商管理账号 登录 域名管理后台(阿里云,新网等),进入产品管理 --> 管理控制台 --> 域名 ,在列表中选择需要解析的域名。单击 解析链接,根据系统提示完成对域名的解析。 2. 进入域名解析 界面,单击 添加解析 选项。 记录类型选择:TXT主机记录:@ (如果是子域名验证,请填写具体子域名前缀)记录值:邮箱中的TXT值其他值默认。当您添加解析以后,系统会自动进行校验,这个过程通常会在2个小时左右,请耐心等待。通过:nslookup -qat=txt wosign.com 查询 Text的值和设置的TXT值一致。最后点击邮件中的验证链接,点击verify,出现以下图示,表示验证通过,否则,请联系您的专属客服。 三、网站控制权验证如果您选择的是网站控制权验证,按收到的验证邮箱,创建指定的html文件,并编辑为指定值,放在网站根目录的.well-known\pki-validation\目录下,访问路径: http://domain/.well-known/pki-validation/fea490871ececa6c55e0c7c402fef86aea635a0f301459966178958109c56d6e.html 下图是文件放置完成后,访问效果图。(请注意目录名称中的点) 如何在根网站目录创建.well-known/pki-validation/目录文件 linux操作系统:创建.well-known/pki-validation目录(如网站根目录在/usr/local/root) [*]mkdir -p /usr/local/root/.well-known/pki-validation [color=rgb(51, 102, 153) !important]复制代码 然后通过vi编辑器创建指定的XXX文件名,并赋予指定的值XXX(XXX为邮件中给定的64个字符)。 windows操作系统:windows环境无法直接以桌面方式创建带点的文件目录,需要在dos下创建(如网站根目录在D:\root): [*]mkdir d:\root\.well-known\pki-validation [color=rgb(51, 102, 153) !important]复制代码 然后在桌面进入d:\root\.well-known\pki-validation目录,创建指定的XXX文件名,并赋予指定的值XXX(XXX为邮件中给定的64个字符)。 1、 NginxNginx分代理和非代理模式。(1) Nginx代理模式代理服务器(nginx.conf)配置如下:(XXX.html放到nginx服务器 html/.well-known/pki-validation 目录下)location ~* ^/.well-known/pki-validation/XXX.html { root html;}检查nginx配置是否有问题nginx –t重启nginx服务器nginx –s reload输入一下地址验证:http://域名/.well-known/pki-validation/xxx.html(2) Nginx非代理模式根据Nginx.conf找到主域名http的server配置文件,查看root定义的路径,如 :location/ { root html; index index.html index.htm; }将文件XXX.html放到nginx服务器html/.well-known/pki-validation目录下输入以下地址验证:http://域名/.well-known/pki-validation/xxx.html 2、 Apache根据Apache服务器/conf/httpd.conf,找到对应域名的http配置,如:DocumentRoot "conf/htdocs"ServerName wosign.com将XXX.html放到apache服务器 conf/htdocs/.well-known/pki-validation目录下。输入以下地址验证:http://域名/.well-known/pki-validation/xxx.html 3、TomcatTomcat服务器,默认根目录在tomcat服务器/webapps/ROOT,将XXX.html文件放在/webapps/ROOT/.well-known/pki-validation/目录下。如果有调整过根路径,可查看conf/server.xml文件,如。 xmlValidation="false" xmlNamespaceAware="false"> ...... 通过docBase指定根目录,将XXX.html 复制到/usr/local/tomcat/site/.well-known/pki-validation/目录下:输入以下地址验证:http://域名/.well-known/pki-validation/xxx.html 4、IISIIS服务器,找到对域名站点,右键-->浏览,可弹出网站根目录,然后根据上面提到的方法创建.well-known/pki-validation目录,将XXX.html复制在此目录即可。 输入以下地址验证:http://域名/.well-known/pki-validation/xxx.html最后点击邮件中的验证链接,点击verify,出现以下图示,表示验证通过,否则,请联系您的专属客服。
-
本帖最后由 达康书记 于 2017-10-28 11:10 编辑问题描述对于密码鉴权方式创建的Windows2012弹性云服务器,使用初始密码以MSTSC方式登录时,登录失败,系统显示“第一次登录之前,你必须更改密码。请更新密码,或者与系统管理员或技术支持联系”。 可能原因用户本地使用的计算机(即客户机)操作系统为Windows 10。由于Windows 10操作系统的自身限制,不能以初始密码直接远程连接操作系统为Windows2012的弹性云服务器。 处理方法l 方法一更换使用Windows 7操作系统的计算机作为客户机,远程连接操作系统为Windows 2012的弹性云服务器。l 方法二继续使用Windows 10客户机远程登录,但是,需先修改弹性云服务器的初始密码。a. 首次登录,以VNC方式登录操作系统为Windows2012的弹性云服务器。b. 登录成功后,按照界面提示修改弹性云服务器的密码。c. 使用修改后的密码,以MSTSC方式远程登录。l 方法三继续使用Windows 10客户机,并以初始密码远程登录。a. 单击“开始”菜单,在“搜索程序和文件”中,输入“mstsc”。系统进入“远程桌面连接”界面。b. 依次输入弹性IP、用户名“administrator”以及创建弹性云服务器时设置的登录密码进行连接。连接失败,系统提示“第一次登录之前,你必须更改密码。请更新密码,或者与系统管理员或技术支持联系”。c. 单击“远程桌面连接”页面左下角的“选项”。d. 在“常规”页签,单击“连接设置”栏的“另存为”,保存“.rdp”格式的远程桌面文件。e. 使用Notepad++打开d中保存的远程桌面文件。f. 编辑远程桌面文件,在文件的最后一行,添加如下语句并保存。enablecredsspsupport:i:0g. 双击更新后的“.rdp”文件,打开远程桌面连接。单击“连接”,重新连接操作系统为Windows 2012的弹性云服务器。
-
本帖最后由 yd_35718668 于 2017-10-26 16:18 编辑从角色扮演游戏到即时策略游戏,从冒险解谜游戏到动作射击游戏,甚至是只有一兆大小的迷你游戏,都有起着核心作用的技术组成部分。本文将介绍十大好用的开源游戏引擎和框架,希望能给你的游戏开发带来帮助。 1、网易游戏服务器框架 Pomelo 3821 Pomelo 是由网易开发的基于 Node.js 开发的高性能、分布式游戏服务器框架, 也可作为高实时 Web 应用框架。 Pomelo 包括三部分: [*]框架,Pomelo 的核心, 与以往单进程的游戏框架不同, 它是高性能、分布式的游戏服务器框架,并且使用很简单 [*]库,包括了开发游戏的常用工具库, 如人工智能(AI)寻路, AOI 等 [*]工具包,包括管理控制台,命令行工具,压力测试工具等 2、开源跨平台游戏开发框架 Cocos2d-x 3822 Cocos2D-X 是全球知名的开源跨平台游戏引擎,易学易用,目前已经支持 iOS、Android、Windows 桌面、Mac OS X、Linux、BlackBerry、Windows Phone 等平台。Cocos2d-JS 统一了使用 JS 进行开发的开发体验,将 HTML5 引擎与 JSB 的 API 高度统一起来。 3、C++ 纸牌游戏引擎 Wagic 3824 Wagic 是一个自制的 C++ 纸牌游戏引擎,支持的平台包括:Android (手机和平板), the Sony PSP, Windows, Linux, Maemo, Meego, iOS (iPhone/iPad) and MacOS. 该游戏引擎可高度定制,并允许修改规则创建自己的扑克和主题。 4、HTML5 开源免费游戏框架 Egret 3825 Egret Framework 是一款使用 JavaScript(TypeScript) 编写的 HTML5 开源免费游戏框架。Egret Framework 的核心定位是开放,高效,优雅。基于它,你可以快速轻松地构建属于自己的 HTML5 移动游戏。 5、HTML5 互动游戏引擎 Hilo 3827 Hilo 是阿里巴巴集团开发的一款 HTML5 跨终端游戏解决方案,它可以帮助开发者快速创建 HTML5 游戏。 6、分布式游戏服务端引擎 KBEngine 3828 KBEngine 是一款开源 mmog 服务端引擎, 使用统一协议能够轻松与前端对接,能轻松使用 unity3d、 ogre、 cocos2d、 html5 等作为前端表现。 底层框架由 C++编写, 逻辑层使用 Python(支持热更新), 开发者无需重复实现一些通用的底层服务端技术, 使开发者能够真正集中精力到游戏开发上来, 快速打造各种游戏。 7、2D 和 3D游戏引擎 Godot 3829 Godot 是一个全新开发的游戏引擎,其功能集类似知名的跨平台游戏引擎 Unity,可用于开发 PC、主机、移动和Web游戏。开发者声称引 擎的2D和动画支持要强于 Unity,表示在功能和特性上没有其它开源游戏引擎能相媲美。 Godot 引擎内置了类似Unity的编辑器,GUI 工具包,2D/3D 物理支持,支持 OpenGL ES 2.0 功能集的 3D渲染器,易于学习的语言和 API,支持用 ASM.js 或 Google Native Client 输出 HTML5 代码,支持 Linux、Windows 和 OSX 开发平台。 8、Android 游戏引擎 Libgdx 3830 Libgdx 是一个跨平台的开发框架。它目前支持的平台有 Windows,Mac OS X,Android,IOS 和 HTML5。 Libgdx 允许你可以将代码不经任何修改的部署到多个平台。而不是修改你的代码适应不同的平台或者直接编译到 HTML5。你可以在一个桌面开发环境中迅速部署你的代码。你可以使用所有的 Java 生态系统中的开发工具。 9、HTML5 开源游戏引擎 LayaAirLayaAir 提供 Canvas 和 Webgl 同时渲染,如果 Webgl 不可用,则可自动切换到 Canvas 模式。引擎为高性能游戏设计,支持 AS,TS,JS三种语言开发,一套代码三端齐发(Flash,HTML5,APP)。 10、HTML5 2D 游戏开发框架 Phaser 3831 Phaser 是一个开源的桌面和移动 HTML5 2D 游戏开发框架,支持 JavaScript 和 TypeScript。
-
本帖最后由 码小玩 于 2017-10-13 15:31 编辑作者:Palak Shah来源:Linux中国HTML5 是第五个且是当前的 HTML 版本,它是用于在万维网上构建和呈现内容的标记语言。本文将帮助读者了解它。HTML5 通过 W3C 和Web 超文本应用技术工作组Web Hypertext Application Technology Working Group之间的合作发展起来。它是一个更高版本的 HTML,它的许多新元素可以使你的页面更加语义化和动态。它是为所有人提供更好的 Web 体验而开发的。HTML5 提供了很多的功能,使 Web 更加动态和交互。HTML5 的新功能是:[*]新标签,如 和 [*]用于 2D 绘图的 元素 [*]本地存储 [*]新的表单控件,如日历、日期和时间 [*]新媒体功能 [*]地理位置HTML5 还不是正式标准(LCTT 译注:HTML5 已于 2014 年成为“推荐标准”),因此,并不是所有的浏览器都支持它或其中一些功能。开发 HTML5 背后最重要的原因之一是防止用户下载并安装像 Silverlight 和 Flash 这样的多个插件。新标签和元素[*]语义化元素: 图 1 展示了一些有用的语义化元素。 [*]表单元素: HTML5 中的表单元素如图 2 所示。 [*]图形元素: HTML5 中的图形元素如图 3 所示。 [*]媒体元素: HTML5 中的新媒体元素如图 4 所示。 [*]2894 [*]2895 [*]HTML5 的高级功能地理位置这是一个 HTML5 API,用于获取网站用户的地理位置,用户必须首先允许网站获取他或她的位置。这通常通过按钮和/或浏览器弹出窗口来实现。所有最新版本的 Chrome、Firefox、IE、Safari 和 Opera 都可以使用 HTML5 的地理位置功能。地理位置的一些用途是:[*]公共交通网站 [*]出租车及其他运输网站 [*]电子商务网站计算运费 [*]旅行社网站 [*]房地产网站 [*]在附近播放的电影的电影院网站 [*]在线游戏 [*]网站首页提供本地标题和天气 [*]工作职位可以自动计算通勤时间工作原理: 地理位置通过扫描位置信息的常见源进行工作,其中包括以下:[*]全球定位系统(GPS)是最准确的 [*]网络信号 - IP地址、RFID、Wi-Fi 和蓝牙 MAC地址 [*]GSM/CDMA 蜂窝 ID [*]用户输入该 API 提供了非常方便的函数来检测浏览器中的地理位置支持:[*]2896[*]getCurrentPosition API 是使用地理位置的主要方法。它检索用户设备的当前地理位置。该位置被描述为一组地理坐标以及航向和速度。位置信息作为位置对象返回。[*]语法是:[*]2897[*] [*]showLocation:定义了检索位置信息的回调方法。 [*]ErrorHandler(可选):定义了在处理异步调用时发生错误时调用的回调方法。 [*]options (可选): 定义了一组用于检索位置信息的选项。我们可以通过两种方式向用户提供位置信息:测地和民用。[*]描述位置的测地方式直接指向纬度和经度。 [*]位置信息的民用表示法是人类可读的且容易理解。如下表 1 所示,每个属性/参数都具有测地和民用表示。[*]2898[*]图 5 包含了一个位置对象返回的属性集。[*]2899[*]网络存储在 HTML 中,为了在本机存储用户数据,我们需要使用 JavaScript cookie。为了避免这种情况,HTML5 已经引入了 Web 存储,网站利用它在本机上存储用户数据。与 Cookie 相比,Web 存储的优点是:[*]更安全 [*]更快 [*]存储更多的数据 [*]存储的数据不会随每个服务器请求一起发送。只有在被要求时才包括在内。这是 HTML5 Web 存储超过 Cookie 的一大优势。有两种类型的 Web 存储对象:[*]本地 - 存储没有到期日期的数据。 [*]会话 - 仅存储一个会话的数据。如何工作: localStorage 和 sessionStorage 对象创建一个 key=value 对。比如: key="Name", value="Palak"。这些存储为字符串,但如果需要,可以使用 JavaScript 函数(如 parseInt() 和 parseFloat())进行转换。下面给出了使用 Web 存储对象的语法:[*]存储一个值: [*]localStorage.setItem("key1", "value1"); [*]localStorage["key1"] = "value1"; [*]得到一个值: [*]alert(localStorage.getItem("key1")); [*]alert(localStorage["key1"]); [*]删除一个值: -removeItem("key1"); [*]删除所有值: [*]localStorage.clear();应用缓存(AppCache)使用 HTML5 AppCache,我们可以使 Web 应用程序在没有 Internet 连接的情况下脱机工作。除 IE 之外,所有浏览器都可以使用 AppCache(截止至此时)。应用缓存的优点是:[*]网页浏览可以脱机 [*]页面加载速度更快 [*]服务器负载更小cache manifest 是一个简单的文本文件,其中列出了浏览器应缓存的资源以进行脱机访问。 manifest 属性可以包含在文档的 HTML 标签中,如下所示:[*]2900[*]它应该在你要缓存的所有页面上。缓存的应用程序页面将一直保留,除非:[*]用户清除它们 [*]manifest 被修改 [*]缓存更新视频在 HTML5 发布之前,没有统一的标准来显示网页上的视频。大多数视频都是通过 Flash 等不同的插件显示的。但 HTML5 规定了使用 video 元素在网页上显示视频的标准方式。目前,video 元素支持三种视频格式,如表 2 所示。[*]2901[*]下面的例子展示了 video 元素的使用:[*]2902[*]例子使用了 Ogg 文件,并且可以在 Firefox、Opera 和 Chrome 中使用。要使视频在 Safari 和未来版本的 Chrome 中工作,我们必须添加一个 MPEG4 和 WebM 文件。video 元素允许多个 source 元素。source 元素可以链接到不同的视频文件。浏览器将使用第一个识别的格式,如下所示:[*]2903[*]
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签