在写这篇稿子之前,对thingsboard这个开源项目使用有一段时间了。今天主要想和大家分享基于它的docker集群部署的压力测试效果。
thingsboard的docker 集群部署,大家可以参考官方文档。
链接:
https://thingsboard.io/docs/user-guide/install/cluster/docker-compose-setup/
这是我做测试的服务器配置摘要:
1、2颗 Intel(R) Xeon(R) CPU E5-2643 v4 @ 3.40GHz 共:24核
2、8根,总共 128G内存
3、CentOS Linux release 7.9.2009 (Core)
thingsboard基于微服务架构设计,因此所有服务都可以独立部署,服务和服务之间通过kafka和thingsboard node微服务进行通信。
微服务架构说明链接:https://thingsboard.io/docs/reference/msa/
参照官方部署文档的所有步骤执行完毕后,在启动主服务前我修改了一些基础配置:
增加了tb-core、tb-rule-engine的节点资源数量,队列服务改用外部的kafka集群(三台服务器搭建的kafka集群)
时序数据库分别测试了两个方案:
cassandra集群(三台服务搭建的cassandra集群)
postgresql单节点;
集群服务启动截图
测试用例:
用nodejs模拟设备的实时数据向thingsboard 推送mqtt数据,thingsboard平台用于接收mqtt消息、入库同时通过websocket在前台提供实时数据查看功能;
测试数据包:
每秒10000个设备,每个设备不少于1个 key、value数据;
测试效果:
1、cassandra 3台集群数据库,最多可以满足同时10000设备,每秒两个数据,也就是每秒2w条记录入库,并且前端页面查看实时数据不卡顿。每天17.3亿条数据入库,cassandra数据库文件大小在 2.5G左右。
2、postgresql 11.6 单台数据库,最多可以满足同时10000设备,每秒五个数据,也就是每秒5w条记录入库,并且前端页面查看实时数据不卡顿。每天43.2亿条数据入库,postgres数据库中时序表文件大小在 660G左右。
问题:postgres表占用空间大的有些夸张
设备数据统计:
postgres 数据丢失率:0.05% /小时