转载自:数蛙科技
压测背景:
LPWAN是当前物联网行业中最重要的技术之一,以年复合增长率90%的惊人速度增长。NB-IOT、LoRa、ZETA以及Sigfox是当前市场上主流的几种LPWAN通信技术。
ZETA LPWAN协议以超窄带、低功耗双向通信和多跳组网的特点,彻底改善了传统的LPWAN协议不足之处,大大增加了LPWAN技术在物联网应用的空间。 ZETag云标签是纵行科技基于ZETA技术开发的传感柔性标签,具有公里级超广覆盖,低功耗特性等优势,与同类技术相比,成本可降低至1/3-1/10,并能支持大容量并发,使用寿命最长可达5年。与此同时,ZETag云标签通过减小尺寸和功耗并改善性能来消除常规有源标签的闲置,除却物流仓储和货物追踪,还可作为一次性标签广泛应用在资产定位和危化、危废管理的万亿级市场。 目前,ZETag云标签已在京东物流、中国邮政、日邮物流、上海睿池、上海派链等上下游物流企业物流载具及贵重包裹上实现应用,也是全球首例在速递邮件上实现实时轨迹跟踪的服务的物联网云标签。 数蛙科技是工业物联网千万级设备接入与管理的专业平台提供商,目前业务场景已覆盖电力、交通、物流、工业制造等多领域的商业应用。 涛思时序数据库TDengine是目前针对时序数据库的性能最优的开源数据库平台,广泛运用于工业、电力、车联网、大数据领域。 数蛙科技结合纵行科技的ZETag云标签与涛思数据的高容量时序数据库,为物流领域未来高增长、高并发的物流标签场景,进行了1000万接入、百亿级时序数据的运营级全业务模拟压力测试。 ZETag物流标签组网如下:压测目的:
本次压力测试通过模拟1万ZETA AP、千万ZETA TAG标签的在线运行,精准高效完成ZETA AP、ZETA TAG的在线协议解析、解析数据实时入库、海量数据在线查询与展示等流程。同时,对真实物流业务场景进行抽象,实现批次ZETA TAG在不同线路上发生轨迹改变,移动过程中利用不同的ZETA AP实现定位。ZETA TAG在线运行过程中,每隔15分钟发送心跳包,被临近的单个或者多个ZETA AP报送至服务端。服务端会按照策略选择信号最好的上报数进行存库,并利用上报信号最好的AP对ZETA TAG进行定位。
通过压力测试,判断当前应用环境情况下系统的负载能力,为今后应用范围扩大,用户量上升后,服务器扩容、升级等提供必要的技术支撑,及服务器规划等。 本次测试目的是为了验证基于数蛙连接与设备管理平台的ZETA物流跟踪管理能够实现千万级ZETA TAG标签同时在线稳定运行、数据及时回传、正常入库、高效查库。 本次测试场景的压力与复杂度远高于真实场景,在保障ZETA物流跟踪当前业务可以正常开展的同时,也可以有效支撑ZETA相关业务应用的拓展与深化应用。压测环境:
由于压力测试是对系统负载能力的测试,无法通过真实的环境来进行获取相关指标,因此通过测试机与测试服务,模拟1万AP、千万ZETA TAG与服务器高频数据交互,利用算法虚拟真实业务场景下实际的操作来进行测试。
测试机部署虚拟云设备服务,及进行压力测试的客户端机器,一般采用高配置的机器来进行测试。在压力测试过程中,一般忽略测试机对压力测试结果的影响。服务端:
硬件配置 | 服务器类型 | 腾讯云服务器 |
处理器 | 12核CPU 2.0GHz | |
内存 | 48G | |
硬盘 | 500G | |
…… | ||
操作系统 | LINUX centos7.3 64位 | |
数据库系统 | Tdengine 1.6.3 | |
应用软件 | 连接平台+应用服务器+数据库服务器 |
测试机:
硬件配置 | 服务器类型 | 腾讯云服务器 |
处理器 | 4核CPU 2.0GHz | |
内存 | 8G | |
硬盘 | 200G | |
…… | ||
操作系统 | LINUX centos7.3 64位 | |
应用软件 | 虚拟基站+虚拟卡车+虚拟Zeta标签 |
压测场景:
ZETA设备运行模拟:
客户端场景模拟描述:
服务端业务描述:
压测技术:
系统监控
{"name": "ap","help": "ap数量","type": "counter","labels": ["from"]
},{"name": "tag","help": "tag的包数量","type": "counter","labels": ["from"]
},{"name": "zetag","help": "zetag info","type": "gauge","labels": ["status"]
}
]
[{"name": "shuwa_group_metrics","help": "数蛙任务调度与消息汇聚消息统计","type": "counter","labels": ["di","tid","rid","cid","type"]
}
]
时序数据
zetag() ->
#{<<"stable">> => #{<<"__database__">> => <<"t">>,
<<"__stable__">> => <<"t">>,
<<"tags">> => #{<<"zetag">> => shuwa_tdengine_bridge_dialect:binary(2)
},
<<"value">> => #{<<"ts">> => shuwa_tdengine_bridge_dialect:timestamp(),
<<"zetagid">> => shuwa_tdengine_bridge_dialect:binary(4),
<<"timetolive">> => shuwa_tdengine_bridge_dialect:int(),
<<"lat">> => shuwa_tdengine_bridge_dialect:float(),
<<"long">> => shuwa_tdengine_bridge_dialect:float(),
<<"version">> => shuwa_tdengine_bridge_dialect:tinyint(),
<<"status">> => shuwa_tdengine_bridge_dialect:tinyint(),
<<"rssi">> => shuwa_tdengine_bridge_dialect:float()
}
},
<<"table">> => #{<<"type">> => <<"function">>,
<<"mod">> => <<"shuwa_zeta_model">>,
<<"function">> => <<"zeta_tag_subtable">>,
<<"args">> => #{<<"__database__">> => <<"t">>,
<<"__stable__">> => <<"t">>,
<<"tags">> => [<<"FF">>]
}
}
}.
240亿数据存储空间占用230G磁盘空间
数据存储目录时序数据入库示例:
-module(shuwa_td_test).-author("shuwa").-export([rand_tag/0, t/0]).rand_tag() ->
integer_to_binary(4278190080 + round(rand:uniform() * 16777215), 16).t() ->
shuwa_tdengine_format:insert_zeta(#{<<"zetagID">> => rand_tag(),
<<"times">> => 1,
<<"lat">> => 2,
<<"long">> => 3,
<<"version">> => 4,
<<"status">> => 5,
<<"rssi">> => 6,
<<"ts">> => shuwa_utils:now_ms()
}
).
时序数据入库策略
:
本次模拟了1300多万的物流标签15分钟一个心跳,平均1.4万多的QPS,峰值QPS很容易超过
Tdengine
的入库QPS阀值,导致
Tdengine
崩溃。
在消息路由层设计了一个基于令牌桶算法的消息缓存层进行削峰处理,在保证时序数据的顺序性的同时,也能让时序数据以比较平稳的速率批量入库。
由于
Tdengine
没有提供erlang的连接池程序,最开始用默认的http客户端来入库,长时间运行不稳定,最后我们把
Tdengine
原生的c语言的连接池程序进行了改造,添加了mqtt订阅功能,通过mqtt协议来转发批量存库时序数据。
时序数据出库策略:
由于对子表进行虚拟分组设计,查找任何一个物流标签数据的物流轨迹数据都有非常便捷的寻址算法,快速查找到用户层期望的时序数据,在百亿级数据规模的情况下,查询速度也可以到毫秒级。
ZetaEtag即时数据查询接口
:/zeta/etag/{tag}
超时时间为5秒
随机读tag,数据库内数据58169933条
tag 生成方式:
FF开头后六位随机生成
请求次数/次 | 200000 |
测试总时间/秒 | 269.583 |
返回200数 | 120116 / 200000 |
返回404数 | 79884 / 200000 |
返回其他状态码 | 0 / 200000 |
返回成功率 / % | 100 |
每秒请求数 / 次/秒 | 741.88 |
请求次数/次 | 200000 |
测试总时间/秒 | 298.123 |
返回200数 | 200000 / 200000 |
返回其他状态码 | 0 / 200000 |
返回成功率 / % | 100 |
每秒请求数 / 次/秒 | 670.86 |
消息路由
影子设备
任务调度
压测结果:
参考网站:
数蛙科技:http://www.iotn2n.com/
纵行科技:https://www.zifisense.com/
涛思数据:https://www.taosdata.com/
-End-ZETA中国联盟启动大会暨第一届中国联盟日在沪成功召开
解决行业痛点,纵行科技携ZETA联盟成员发布设施设备管理通用平台
日邮物流(中国)与纵行科技正式签署战略合作协议,共创智能物流新时代
本土LPWA标准对外输出首开先河,纵行科技与日本凸版集团签署ZETA技术授权协议
ZETA Server成功落地日本,纵行科技、TECHSOR与日本云服务商IT Access达成授权签约
ZiFiSense纵行科技
连接智能,无处不在