其他
关于热力图数据上报清洗,我们做了一个有意思的尝试
前言
场景特点与要求
备选的技术方案分析
数据通道的连接能力
1、自建 Kafka
优点:
Kafka 作为通用的数据收集信息通道,使用面广泛,接入方式多样化。社区完善,学习成本低。
Kafka 本身搭建容易,与下游的大数据处理产品协调方案成熟。
缺点:
动态处理 Kafka 的扩容复杂。
需要搭建额外处理集群的稳定性配套方案。
外网网络流量管理需要配合额外的方案。
主流方案是作为连接应用的收集能力,对于终端的连接能力没有规模级别的案例验证。
2、消息队列 MQTT 方案
优点:
支持百万级别的连接,完成可以覆盖业务发展的诉求,为业务留足了扩展空间。
MQTT 的协议非常简洁,在端与服务间的传输中有优势。支持各种消息触达的 QoS 质量。
支持各种客户端接入实现语言。
可实时观测客户端的连接情况,方便发现异常情况。
缺点:
处理大数据的实践没有 Kafka 成熟,下游产品选型受一定的限制。
弹性数据清洗的能力
1、大数据方案(Storm、Spark、Flink等)
优点:
开源的通用方案,资料众多,方案成熟。
缺点:
搭建运维复杂,需要提供额外的监控与恢复手段。
需要学习接受各种组件方式(下图是以 Storm 为例)。
提前评估资源使用情况,无法按照实时数据量进行相应的扩缩使用。
2、函数计算方案
优点:
按需进行扩缩,毫秒级的伸缩能力,适合数据量的脉冲峰谷变化。
不需要进行清洗环境的管理。
概念简单,学习成本低。
其它优点参考下图:
函数计算是各个云厂商的产品,要求一定需要在云上运行。
弹性数据访问的能力
1、传统应用的方案
作为业务的一部分嵌在某个应用实现中,技术成熟,学习成本低。
需要自实现根据业务请求量来进行弹缩处理,或者很多时候采用评估的方式进行资源冗余处理。
2、API Gateway+ 函数计算方案
根据客户的请求量实时进行弹缩处理。按需使用,不为高峰时段烦恼,不会闲置付费。 自动附带专业的访问监控大盘。
需要少量的学习成本。
综述
重点接入步骤
MQTT 到函数计算的介绍
API 网关通过函数计算提取数据的介绍
module.exports.handler = function(event, context, callback) {
var event = JSON.parse(event);
var content = {
path: event.path,
method: event.method,
headers: event.headers,
queryParameters: event.queryParameters,
pathParameters: event.pathParameters,
body: event.body
// 您可以在这里编写您自己的逻辑。
// 从Redis提取数据的逻辑
}
var response = {
isBase64Encoded: false,
statusCode: '200',
headers: {
'x-custom-header': 'header value'
},
body: content
};
callback(null, response)
};
后注
﹀
﹀
﹀