【DTSE Tech Talk 精选问答】NO.54丨揭秘高可靠高性能的亿级物联网平台发展历程
对话华为20年资深测试老兵,从手工测试到自动化测试,到实现测试服务化的成长过程,揭秘亿级物联网平台高可靠性、高性能的发展历程。
直播链接:https://bbs.huaweicloud.cn/live/DTT_live/202403271630.html
Q:如何通过自动化测试验证物联网平台在极端环境(如强干扰、弱信号等)下的稳定性和可用性?
A:我们构建了网络时延、丢包等故障注入能力,仿真网络亚健康,集成到可靠性自动化框中例行检证Q:对于质量保障的看法和实践经验是什么?
A:测试活动是质量保障的一个关键环节,通过工程能力,提升测试活动的效率及全面是我们工作的关键牵引,每年都会分析测试策略、测试设计、测试执行、专项测试等活动的效率薄弱环境,针对性地设计工程能力,比如直播中描述的,就是性能、可靠性测试效率低的一个改进实践活动。Q:在物联网平台的安全性设计中,如何防范外部攻击和内部威胁?
A:华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的云安全挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。安全性是华为云与您的共同责任。华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的 IaaS、PaaS 和 SaaS 类云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。
租户:负责云服务内部的安全,安全地使用云。华为云租户的安全责任在于对使用的 IaaS、PaaS 和 SaaS 类云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、虚拟主机和访客虚拟机的操作系统,虚拟防火墙、API 网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。
Q:是否可以分享一些具体的案例,展示在大型软件系统测试中遇到的问题以及如何解决这些问题?
A:大型软件系统的微服务多,各微服务的数据也多,原始的DFX测试,是通过各种手工数据采集,通过EXL表汇聚后,人工进行分析,效率低。把性能采集到的数据,建模成测试报告格式,通过对报告中各个指标做基线,测试数据与基线比对,就可以实现自动化Q:测试效率提升的关键因素是什么?有哪些方法或技术可以显著提高测试的效率和质量?
A:效率的核心还是工程能力,不能过度依赖人员能力,工程能力决定了团队的效率的底线,人员能力决定的是队团的上限,测试人员一定要有开发能力和规划能力,不然只会被牵着鼻子走,成为打下手的角色;测试人员要懂代码,能写代码,当你了解产品是怎么写出来的,就会有更好的思路对其进行验证了Q:如何促进团队内部的有效沟通和协作,以确保测试工作的顺利进行?
A:规划好测试岗位,如测试经理、TSE、TE、田主等岗位,把测试各种活动划分到不同岗位,制定好各项工作的准责与输出件,确保大家都有明确的工作范围和目标Q:华为如何通过自动化测试实现亿级物联网平台在资源调度、任务分配、负载均衡等方面的优化?
A:性能测试采用分层看护的方式:一、性能调优,重点关注性能目标的达成,主要在产品初期及有重大特性合入时,通过手工测试,自动采集数据的方式开展;二、完成性能调优后,使用性能数据建模的方式,采集指标、建立基线,自动例行看护指标有没有劣化。此活动可通过综合话务模型和单业务性能两个活动例行看护Q:在测试方面采取了哪些特定的策略和方法?有没有一些关键指标或技术用于评估和保障平台的质量?
A:当前的研发流程普遍强调高效、快速,不论是多迭代开发模型还是devops流程,月度制定测试策略及月度评估风险都是必要的,及时应对研发过程的风险,调整测试活动,可以让策略更具备可执行性与评估有效性;产品的指标主要是业务SLA,如TPS、时延,以及资源占用情况,如CPU、内存、磁盘、数据库等Q:如何确保测试服务的质量和可靠性?是否有相关的技术和架构考量?
A:测试服务也是一个产品,也需要有测试活动看护,确保运行稳定;推荐通过灰度发布的方式提供新特性,如果新特性有问题,可以快速回退,不影响日常的测试工作Q:在实现自动化测试过程中遇到的挑战,以及如何克服这些挑战。是否有一些最佳实践或工具推荐?
A:性能、可靠性复用功能的自动化脚本,这是一个比较省人力的实践,但这比较考验测试架构师的能力,华为测试团队也有比较强的研发能力,现在也以服务的方式在华为云上提供使用,请参考https://support.huaweicloud.cn/cloudtest/index.htmlQ:如何通过自动化测试工具对亿级物联网平台进行大规模压力测试,以发现潜在的性能瓶颈?
A:性能测试采用分层看护的方式:一、性能调优,重点关注性能目标的达成,主要在产品初期及有重大特性合入时,通过手工测试,自动采集数据的方式开展;
二、完成性能调优后,使用性能数据建模的方式,采集指标、建立基线,自动例行看护指标有没有劣化。此活动可通过综合话务模型和单业务性能两个活动例行看护
Q:为啥要区分微服务和云服务的性能可靠性呢?对外体现云服务不可以么
A:如果只是考虑通过测试发现问题的角度,的确只做云服务性能测试就足够了,但因为测试手拿着产品数据,如何通过这些数据提升性能问题的解决效率,也是测试可以带来的价值,通过微服务的性能测试报告,可以协助开发快速对性能问题定界定位Q:物联网平台自动化测试的实施步骤有哪些?
A:首先需要有两个岗位,一是测试架构岗位,负责自动化框架制定,需要重点关注测试各项活动的能力复用,不能让测试人员各自为政,引入五花八门的测试工具开展测试,这样会导致严重的浪费;二是测试执行人员,及时分析测试工程能力需求,与测试架构师讨论自动化方案;这两个岗位配合好了,可以提升自动化效率。自动化的顺序建议是功能->性能->可靠性,因为功能可以为性能提升基础脚本,性能可以为可靠性提供背景流量。Q:针对高可靠性需求,物联网平台的关键技术选型有哪些?
A:华为云基础底座已提供了多AZ、容器、网格、数据库、消息中间件等服务,这些服务本身有专职团队在运维,可以提供高可靠性能力Q:能举例说明一下目前IOT应用场景及其表现出来的特性
A:可以参考IOT的产品文档:https://support.huaweicloud.cn/bestpractice-iothub/iot_bp_0022.htmlQ:平台是如何进行设备管理和配置的,以确保设备的稳定运行和高效通信?
A:可以参数IOT平台不同设备接入的实践案例,了解详细的设备管理、配置方案https://support.huaweicloud.cn/bestpractice-iothub/iot_bp_0022.htmlQ:IOT 采用消息中间件是固定的吗
A:IOT主要使用的消息中间件有KAFKA、PULSAR、AMQP,会按不同的业务特点进行选择Q:调用数据库的时延是通过哪个组件实现的
A:通过切面技术对数据库组件进行监控,统计调用时延Q:老师说的10秒作为一个周期,上传统计数据,那10秒内的数据存在设备端还是服务端
A:10秒上报的是各微服务接口统计数据,这些数据在上报前,是存在微服务的内容中的,因为只是统计数据,内存占用非常小Q:华为云是否有对应的测试服务,用于测试性能和可靠性
A:华为云的testservice可以提供性能测试:https://support.huaweicloud.cn/cloudtest/index.html 华为云的MAS可以提供混沌故障注入: https://support.huaweicloud.cn/mas/index.htmlQ:最终通过哪些指标,来判断这个系统是OK
A:产品的指标主要是业务SLA,如TPS、时延,以及资源占用情况,如CPU、内存、磁盘、数据库等Q:如何降低染色技术对性能的影响?
A:不过度采集数据,只对核心的、异步的流程进行数据采集;发现某业务SLA不达标,则对此业务进行染色,协助问题分析;性能场景下,不采集消息体内容,只对数据进行统计,如微服务1秒内收到10个请求,那就只上报10这个统计值,而不上报10个消息体Q:在物料或成本有限的情况下,如果进行亿级连接的性能测试,有没有好的模拟和替代验证方案
A:可以在微服务内部署AGENT的方式,对各种录制的流量进行回放;AGENT是使用切面技术实现Q:设备负载一般保持在多少比较合理
A:建议一倍规格下50%左右,过高无冗余,过低有浪费Q:在面对网络不稳定或设备故障时,平台有哪些容错和恢复机制?
A:平台提供了离线数据缓存能力,可以在设备上线后把数据下发给设备Q:平台是如何实现设备间的实时通信和协同工作的?
A:IoT平台提供了规则引擎能力,可以实现数据与设备之间的联动,详情可参考:https://support.huaweicloud.cn/usermanual-iothub/iot_01_0022.htmlQ:流量回放如何处理响应或者请求中需要修改的信息
A:测试服务提供了界面,可以对回放流程中的所有消息体进行编辑,包含引入变量Q:测试开发工程师,既要懂测试,又要懂代码开发,如何兼顾?
A:通过写测试服务代码,对被评估对象进行评估,而不是单纯地进行手工测试Q:调用连技术,对性能的影响如何降低?
A:不过度采集数据,只对核心的、异步的流程进行数据采集;发现某业务SLA不达标,则对此业务进行染色,协助问题分析;性能场景下,不采集消息体内容,只对数据进行统计,如微服务1秒内收到10个请求,那就只上报10这个统计值,而不上报10个消息体Q:在处理海量数据时,平台是如何进行高效存储和查询的?
A:华为云提供的RDS、DDS等数据库,支持高效的数据处理Q:平台支持哪些种的通信方式?wifi、蓝牙、网络?
A:IOT支持的接入协议可参考文档:https://support.huaweicloud.cn/usermanual-iothub/iot_01_01271.htmlQ:这个系统有结合AI吗
A:有的,可以参考案例描述:https://support.huaweicloud.cn/bestpractice-iothub/iot_bp_0224.htmlQ:300台设备,要实现您这样的自动化测试,大概需要多少台服务器,具体是什么样的配置
A:300台设备的模似,只需要一个性能测试执行机,当前执行机最小配置是2U4GQ:流量回放如何处理响应或者请求中需要修改的信息
A:测试服务提供了界面,可以对回放流程中的所有消息体进行编辑,包含引入变量Q:缓存故障,一般会导致数据丢失。为什么redis和mongo能互相替代?他们的数据是实时同步的吗
A:不是全部数据都缓存,需要支撑核心业务的数据会进行缓存,如租户的鉴权数据,不需要每次业务都去查鉴权数据,可以缓存到REDIS中,每10分钟去更新一次就可以了。如果REDIS故障了,可以把这个数据缓存到MONGO中。REDIS和MONGO互替是一种BYPASS思路,需要结合微服务支撑业务的实践,做一定的设计,而不是全量数据同步。Q:故障是如何注入到微服务中的,通过什么proxy桥接吗?
A:对的,通过proxy打通测试服务与容器网络的通信Q:自动生成的自动化测试的脚本是用python写的吗
A:我们这边的实践是全部用JAVA,如果你对PYTHON更熟练,也可以用PYTHONQ:华为如何利用测试服务化来提升平台的稳定性?对于质量保障的看法和实践经验是什么?
A:测试服务化的目地是可以提供接口启动不同的测试活动,并自动输出测试报告,这样可以方便与流水线进行对接Q:故障注入有哪些类型?
A:故障注入的目标是仿真云服务运行环境异常,有虚拟机(包含了虚拟机CPU、内存、磁盘、网络等资源)、容器(包含了虚拟机CPU、内存、磁盘、网络、协议组件等资源)、依赖云服务(包含数据库、消息中间件、鉴权等云服务)、整局故障(AZ下电、REGION重启等)Q:作为开发者在物联网平台测试中如何借鉴和引入行业内先进的测试理念和技术?
A:华为云有较多较好的测试实践,并以云服务方式开放出来供大家使用。华为云的testservice可以提供功能、性能测试:https://support.huaweicloud.cn/cloudtest/index.html 华为云的MAS可以提供混沌故障注入: https://support.huaweicloud.cn/mas/index.htmlQ:怎么获取丢包率?能详细说一下吗
A:通过切面技术,对微服务流量入口方法,针对染色数据进行调用统计打点,对微服务流量出口方法,也针对染色数据进行调用统计打点。从而形成微服务入口、出口流量的数量统计,如果微服务出现了丢包,说明微服务丢数据了,也可以对比两个微服务的统计数据,从而得出微服务间是否有传输丢失Q:在面对不同通信模组和网络质量差异的情况下,平台如何设计网络架构和通信协议,以确保网络稳定性和数据传输效率?
A:针对低功耗、小带宽要求的设备,我们会建使用DTLS+进行加密通信,这样可以简化协议交互流程,减少功耗与带宽开销Q:是否可以分享一些具体的案例,展示在大型软件系统测试中遇到的问题以及如何解决这些问题?
A:最主要还是通过数据监控被测系统,拿到越多数据,就可以对被测系统评估得越充份,通过切面技术,对微服务进行方法级的数据获取,是一个非常好的思路,建议可以了解一下切面技术,通过这个点,来拓展数据获取思路Q:测试开发工程师,既要懂测试,又要懂代码开发,如何兼顾?
A:通过写测试服务代码,对被评估对象进行评估,而不是单纯地进行手工测试Q:在确保物联网平台高性能的同时,如何控制成本?
A:对平台进行性能测试时,我们会关注资源开销情况,对开销过高或过低,我们都会关注,开销过高,会通过云服务及微服务性能测试报告分析优化点;开销过低,我们会建议通过微服务合并的方式,减少微服务容器过多带来的无效开销。Q:如何解决物联网平台的海量数据处理和实时响应难题?
A:几个比较经典的实践:1、微服务业务无状态化处理,借助华云CCE扩容微服务实例,提升平台的设备接入能力以及并发处理能力;
2、使用华为云KAFKA作为微服务间数据总线,微服务通过异步流程处理业务,减少因业务响应时延过大,导致微服务线程占用时长过长,降低业务处理效率的风险,同时可以快速先响应,再处理数据,处理结果可以通过异步查询,或者结果订阅的方式获取;
3、通过REDIS缓存依赖数据,避免多实例高频调用依赖服务接口做数据查询,减少数据查询开销和微服务性能负担
Q:TraceId在微服务之间是怎么传递的
A:HTTP、KAFKA等协议可以通过把traceid放到头域进行跨微服务传递,微服务内部,可以通过threadlocal变量做线程间传递Q:在华为实现测试服务化的过程中,哪些关键技术和架构调整发挥了至关重要的作用?您如何评价这些变革对于提高测试效率和准确性的影响?
A:我们的实践中,最关键的技术,我觉得是把切面技术应用到了微服务数据采集上,通过这个技术我们可以采集到微服务方法级数据,可以协助我们做更详细的数据分析;另外,我们还把采集到的数据做到了可回放,这让我们可以用少量物料就开展微服务级性能、可靠性测试;数据越多,对我们的评估肯定会越准确,且可以协助开发进行更准确的问题定位Q:测试效率提升的关键因素是什么?有哪些方法或技术可以显著提高测试的效率和质量?
A:效率的核心还是工程能力,不能过度依赖人员能力,工程能力决定了团队的效率的底线,人员能力决定的是队团的上限,测试人员一定要有开发能力和规划能力,不然只会被牵着鼻子走,成为打下手的角色。Q:调用链染色技术,对性能有影响,如何降低这个影响?
A:不过度采集数据,只对核心的、异步的流程进行数据采集;发现某业务SLA不达标,则对此业务进行染色,协助问题分析;性能场景下,不采集消息体内容,只对数据进行统计,如微服务1秒内收到10个请求,那就只上报10这个统计值,而不上报10个消息体Q:能否详细描述华为从手工测试转向自动化测试过程中遇到的最大挑战是什么?在解决这些挑战的过程中,哪些策略或实践最为有效?
A:最大的挑战是如何让测试人员不论水平高低,都可以写自动化脚本。我们的实践是核心测试人员,有能力写代码的测试人员,把自动化功能模块化,可以通过界面拖拽的方式,编辑自动化流程,降低自动化门槛Q:什么叫数据染色?是打印日志吗
A:数据染色,是对外部接口带上trace id,并且这个trace id可以在全业务流程上传递,这样可以通过各微服务对trace id的感知,上报染色数据的相关数据,如消息体、接口调用时延等Q:随着设备数量的快速增长,平台是如何进行水平扩展和弹性伸缩的?
A:我们是通过测试执行机容器化,横向扩容容器的方案,提升测试执行机整体性能Q:为了确保数据的安全性和隐私性,平台采用了哪些加密和认证机制?
A:主要有DTLS、DTLS+、MQTTS,更详细介绍可参考产品文档https://support.huaweicloud.cn/productdesc-iothub/iot_04_00115.htmlQ:在测试过程中是如何去定位测试BUG发生的位置的
A:可以通过调用链和日志进行问题定界定位Q:如何模拟千万级设备连接测试?
A:我们是通过性能测试执行机容器化,横向扩容容器的方案,提升测试执行机整体设备模拟性能Q:华为云IoT支持多少通讯协议的接入?和OceanConnect的关系是什么?
A:IOT支持的接入协议可参考文档:https://support.huaweicloud.cn/usermanual-iothub/iot_01_01271.html,OceanConnect是华为云IOT以前的一个品牌名称,现在统一为华为云IoTQ:华为云物联网平台在服务不同行业、不同应用场景时,是如何进行个性化定制和优化的?
A:华为云IOT与各行业已有或新进入的IT伙伴,共同使能行业智能升级,同时,华为云IOT会把行业实践经验总结到行业平台套件中,如工业物联网平台、智慧交通平台等,提升行业智能化效率Q:Iot数据质量把控如何确保,数据安全性机制如何实现
A:IOT的数据安全保障机制可参考文档:https://support.huaweicloud.cn/productdesc-iothub/iot_04_00115.htmlQ:染色数据的特质是什么?
A:数据染色,是对外部接口带上trace id,并且这个trace id可以在全业务流程上传递,这样可以通过各微服务对trace id的感知,上报染色数据的相关数据,如消息体、接口调用时延等Q:您们的iot云系统,能不能和其它电云系统,互为冗余运行
A:华为云IOT支持数据订阅,其他电云系统可以通过数据订阅的方式,获取华为云IOT采集到的数据,同时其他电云系统也可以将数据推送到华为云IOT系统,从而实现数据的互备想要了解更多华为云IoT 相关知识,欢迎观看DTSE Tech Talk 系列技术直播
- 点赞
- 收藏
- 关注作者
评论(0)