热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

怎么使用MQTT与函数计算做热力图

本篇内容主要讲解“怎么使用MQTT与函数计算做热力图”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习

本篇内容主要讲解“怎么使用MQTT与函数计算做热力图”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用MQTT与函数计算做热力图”吧!

场景特点与要求:

1. 数据通道的连接能力:数据通道随着业务的扩展,机器人的投放也会同步增加,对于数据通道有足够的扩展灵活性,可以按需进行扩展,同时连接的级别能够支持10W+级别的扩展。

2. 简洁数据清洗的能力:对于数据的处理,本质上就是对数据的归纳统计,逻辑实现上并不复杂。对于数据本身的峰谷变化,能有最简单有效的匹配扩缩处理能力即可,在清洗上不希望为此引入复杂的传统大数据级别的笨重方案。

3. 弹性数据访问的能力:这里提到的的热力图信息,以后会考虑开放给终端用户访问,访问量都是动态变化的,随着不同的时间、节日、突发事件等都会有不可预知的幅度变化,所以在此业务中要求有弹性的访问能力。业务方不希望通过限流方式来实现,因为会对业务量本身造成影响。

4. 性能优越的存储能力:此场景下,数据写入与读取并发量都高,客户希望使用NoSQL的方式进行存储。NoSQL 类型能最好支持排序的功能,本文介绍的方案中使用Redis,不再做更多的分析介绍。

备选的技术方案分析

数据通道的连接能力

自建Kafka

优点:

  • Kafka作为通用的数据收集信息通道,使用面广泛,接入方式多样化。社区完善,学习成本低。

  • Kafka本身搭建容易,与下游的大数据处理产品协调方案成熟。

缺点:

  • 动态处理Kafka的扩容复杂。

  • 需要搭建额外处理集群的稳定性配套方案。

  • 外网网络流量管理需要配合额外的方案。

  • 主流方案是作为连接应用的收集能力,对于终端的连接能力没有规模级别的案例验证。

消息队列MQTT方案

优点:

  • 支持百万级别的连接,完成可以覆盖业务发展的诉求,为业务留足了扩展空间。

  • MQTT的协议非常简洁,在端与服务间的传输中有优势。支持各种消息触达的QoS质量。

  • 支持各种客户端接入实现语言。

  • 可实时观测客户端的连接情况,方便发现异常情况。

缺点:

  • 处理大数据的实践没有Kafka成熟,下游产品选型受一定的限制。

弹性数据清洗的能力

大数据方案(Storm、Spark、Flink等)

优点:

  • 开源的通用方案,资料众多,方案成熟。

缺点:

  • 搭建运维复杂,需要提供额外的监控与恢复手段。

  • 需要学习接受各种组件方式(下图是以Storm为例)。

  • 提前评估资源使用情况,无法按照实时数据量进行相应的扩缩使用。

怎么使用MQTT与函数计算做热力图

怎么使用MQTT与函数计算做热力图

函数计算方案

优点:

  • 按需进行扩缩,百毫秒级的伸缩能力,适合数据量的脉冲峰谷变化。

  • 不需要进行清洗环境的管理。

  • 概念简单,学习成本低。

  • 其它优点参考下图:

怎么使用MQTT与函数计算做热力图

缺点:

  • 函数计算是各个云厂商的产品。要求一定需要在云上运行。

弹性数据访问的能力

传统应用的方案

优点:

  • 作为业务的一部分嵌在某个应用实现中,技术成熟,学习成本低。

缺点:

  • 需要自实现根据业务请求量来进行弹缩处理,或者很多时候采用评估的方式进行资源冗余处理。

API Gateway+函数计算方案

优点:

  • 根据客户的请求量实时进行弹缩处理。按需使用,不为高峰时段烦恼,不会闲置付费。

  • 自动附带专业的访问监控大盘。

缺点:

  • 需要少量的学习成本。

综述

在这个热力图信息收集清选与访问业务中,可以参考使用下图的解决方案完美实现。

怎么使用MQTT与函数计算做热力图

重点接入步骤

MQTT到函数计算的介绍

请参考函数计算的微消息队列MQTT服务集成方案。

怎么使用MQTT与函数计算做热力图

API网关通过函数计算提取数据的介绍

详情请参考API网关函数触发实例。

以Node.js为例:

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)
};

到此,相信大家对“怎么使用MQTT与函数计算做热力图”有了更深的了解,不妨来实际操作一番吧!这里是编程笔记网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


推荐阅读
  • 构建高性能Feed流系统的设计指南
    随着移动互联网的发展,Feed流系统成为了众多社交应用的核心组成部分。本文将深入探讨如何设计一个高效、稳定的Feed流系统,涵盖从基础架构到高级特性的各个方面。 ... [详细]
  • MVC框架下使用DataGrid实现时间筛选与枚举填充
    本文介绍如何在ASP.NET MVC项目中利用DataGrid组件增强搜索功能,具体包括使用jQuery UI的DatePicker插件添加时间筛选条件,并通过枚举数据填充下拉列表。 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 开发心得:利用 Redis 构建分布式系统的轻量级协调机制
    开发心得:利用 Redis 构建分布式系统的轻量级协调机制 ... [详细]
  • 为何Serverless将成为未来十年的主导技术领域?
    为何Serverless将成为未来十年的主导技术领域? ... [详细]
  • 本文详细介绍了在 Windows 7 上安装和配置 PHP 5.4 的 Memcached 分布式缓存系统的方法,旨在减少数据库的频繁访问,提高应用程序的响应速度。 ... [详细]
  • 本文介绍了两个重要的Node.js库——cache-content-type和mime-types,它们在处理HTTP响应头时非常有用。cache-content-type是基于mime-types构建的,并且实现了缓存机制以提高性能。 ... [详细]
  • 本文详细解析 Skynet 的启动流程,包括配置文件的读取、环境变量的设置、主要线程的启动(如 timer、socket、monitor 和 worker 线程),以及消息队列的实现机制。 ... [详细]
  • 本文探讨了在使用Apache HttpClient 4.x(作为commons-httpclient 3.x的后续版本)时,如何配置默认的HttpContext,以确保每次执行请求时无需显式传递上下文。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • NoSQL数据库,即非关系型数据库,有时也被称作Not Only SQL,是一种区别于传统关系型数据库的管理系统。这类数据库设计用于处理大规模、高并发的数据存储与查询需求,特别适用于需要快速读写大量非结构化或半结构化数据的应用场景。NoSQL数据库通过牺牲部分一致性来换取更高的可扩展性和性能,支持分布式部署,能够有效应对互联网时代的海量数据挑战。 ... [详细]
  • Linux学习精华:程序管理、终端种类与命令帮助获取方法综述 ... [详细]
  • 在处理MySQL递归查询父子节点时,若遇到“此函数未声明为DETERMINISTIC、NOSQL或READS SQL DATA”的错误,可以通过以下方法解决:首先,确保表结构正确设计,包含必要的字段用于存储节点关系。接着,创建两个函数,一个用于根据输入ID查询所有子节点及其ID,另一个用于根据输入ID查询所有父节点及其ID。在创建函数时,需明确声明函数的特性,如是否确定性、是否访问SQL数据等,以避免上述错误。调用这些函数时,确保传递正确的参数,并检查返回结果的完整性。 ... [详细]
  • Storm集成Kakfa
    一、整合说明Storm官方对Kafka的整合分为两个版本,官方说明文档分别如下:StormKafkaIntegratio ... [详细]
  • Redis概念
    Redis概念:redis是一款高性能的NOSQL系列的非关系型数据库什么是NOSQLNOSQL(NoSQLNotOnlySQL),意即不仅仅是SQL,是一项全新的数据库理念, ... [详细]
author-avatar
PHP菜鸟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有