为了跟踪小区级的微环境质量,腾讯内部发起了一个实验性项目:细粒度的分布式大气监测,希望基于腾讯完善的产品与技术能力,与志愿者们共建一套用于监测生活环境大气的系统。
由于项目平台持续建设中,当前已开源信息为二期版本,所以本篇内容均基于此版本能力进行说明。此版本架构进一步优化了数据鉴权及数据库保护。
二期版本首页效果
在建三期版本首页效果
而在建的三期版本中,加入了日志服务 、对象存储、小程序等功能。提供了灵活的日志存储与高速检索能力、 低成本的数据库备份+恢复+迁移同步能力、移动端交互及其它能力。
整个二期版本的架构组成如下图所示,其中浅蓝色标明的部分是相对一期的架构变更重点。
二期架构图
以平台设计的基本组成部分,来进行逻辑拆分,并依架构层的设计需求,配套选型的具体产品。
具体功能与选型说明如下:
整体系统,以数据为核心,进行了相关设计,所以本部分分为两个组成部分:
以 API 网关推送进来,由云函数在环境变量 event 中提取到的原始数据。其中主要的部分如下:
{
"body": "{\"payload\":\"eyJtZXRob2QiOiJyZXBvcnQiLCJjbGllbnRUb2tlbiI6IjIwMjAtMDgtMThUMTE6MTc6NDkuNDAzWiIsInBhcmFtcyI6eyJQTTFfQ0YxIjo1LCJQTTJkNV9DRjEiOjYsIlBNMTBfQ0YxIjo3LCJQTTEiOjUsIlBNMmQ1Ijo2LCJQTTEwIjo3LCJwYXJ0aWNsZXNfMGQzIjo3OTIsInBhcnRpY2xlc18wZDUiOjI1NCwicGFydGljbGVzXzEiOjE1LCJwYXJ0aWNsZXNfMmQ1IjozLCJwYXJ0aWNsZXNfNSI6MywicGFydGljbGVzXzEwIjowLCJ2ZXJzaW9uIjoxNTEsIkVycm9yIjowfX0=\", \"seq\":18639, \"timestamp\":1597749469,\"topic\":\"$thing/up/property/?????/?????\", \"devicename\":\"?????\", \"productid\":\"?????\"}",
"headerParameters": {},
"headers": {
"accept-encoding": "gzip",
"content-length": "511",
"content-type": "application/json",
"endpoint-timeout": "15",
"host": "service-???-???.gz.apigw.tencentcs.com",
"user-agent": "Go-http-client/1.1",
"x-anonymous-consumer": "true",
"x-api-requestid": "???03a993936ae191f44651???",
"x-b3-traceid": "???03a993936ae191f44651???",
"x-qualifier": "$LATEST"
},
"httpMethod": "POST",
"path": "/??????",
"pathParameters": {},
"queryString": {},
"queryStringParameters": {},
"requestContext": {
"httpMethod": "POST",
"identity": {},
"path": "/??????",
"serviceId": "service-?????",
"sourceIp": "?.?.?.?",
"stage": "release"
}
}
'body' 经 base64 编码后:
{
"clientToken": "2020-08-18T11:17:49.403Z",
"method": "report",
"params": {
"Error": 0,
"PM1": 5,
"PM10": 7,
"PM10_CF1": 7,
"PM1_CF1": 5,
"PM2d5": 6,
"PM2d5_CF1": 6,
"particles_0d3": 792,
"particles_0d5": 254,
"particles_1": 15,
"particles_10": 0,
"particles_2d5": 3,
"particles_5": 3,
"version": 151
}
}
数据库详细格式,请参考 github-sql:
https://github.com/eckygao/ampservice_demo/blob/master/amservice.sql
各表用途:
二期成本展示
上图表数为每节点每 15 秒上报一次的计算结果。
硬件部分由于厂商与采购量的差异,价格不同。此处以云服务成本计算,如果 10000 节点规模,每节点每分钟上报一次,单节点云服务年成本如下:
1. 二期架构单节点成本
(数据库/年+云图/年)/10000+(API 网关+云函数)/4=(468+48)/10000+(9+2.1)/4=3.335 元。
2. 三期架构单节点成本
(消息队列/年+数据库/年\*2+云图/年)/10000+(云函数+日志服务+对象存储)/4=(3228+468*2+48)/10000+(2.1+2.24+0.02)/4=1.09 元。
其中,二期无对象存储及日志服务模块,但当前的在建三期中已使用数月,故有实际数据可列入统计。
预计完成三期建设,计划内容涉及:
三期架构预告如下所示,浅蓝色标明的是相对二期的架构变更重点。
三期架构
三期版本部分完成效果展示如下:
WEB 端展示
小程序端 Demo
头图:Unsplash
作者:高树磊
原文:https://mp.weixin.qq.com/s/AopuDdm44JVWrAcr6AIccA
原文:鹅厂分布式大气监测系统:以 Serverless 为核心的云端能力如何打造?
来源:TencentServerless - 微信公众号 [ID:ServerlessGo]
转载:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
领取专属 10元无门槛券
私享最新 技术干货