美文网首页
kmqtt架构

kmqtt架构

作者: kool2017 | 来源:发表于2021-04-26 15:17 被阅读0次
    1. kmqtt
      功能简介
      mqtt服务端程序。属于边缘消息业务域。mqtt网络协议功能基于netty实现,集成在springboot工程中。会话上下文保存在程序内存中,会话状态可保存在程序内存、redis、etcd中。kmqtt除了拥有mqtt协议必须的功能外,还包含扩展功能:权限功能、熔断功能、日志统计分析功能。权限验证功能需要对接kauth服务,http接口实现。日志统计分析功能需要对接kafka,并由kmetrics消费分析日志。
      部署说明
      可单机部署、负载均衡部署。单机部署时,会话状态配置不限制。负载均衡部署时,会话状态不能保存在内存中。
      推荐部署方案:nginx+keepalive作为负载均衡服务,部署2个nginx;部署n(>1)个kmqtt构成kmqtt集群;会话状态保存在redis中,redis主从方式部署,部署1主redis+2从redis+3哨兵;部署kafka集群,kafka节点数>=3。
      2.kauth
      功能简介
      为kmqtt提供权限验证服务。属于边缘计算业务域。服务的mqtt用户和用户主题权限数据是kadmin推送过来的,并存储在redis中,不设置超时时间。redis的数据发生错误时,可由kadmin发起数据同步,覆盖redis。
      部署说明
      当kmqtt开启权限验证功能时,kauth需要配套部署,且必须具有高稳定性。kauth的redis与kmqtt的redis在逻辑上是不同的库,但是物理上可以共用。
      推荐部署方案:nginx作为负载均衡服务,部署2个nginx;部署n(>1)个kauth构成kauth集群;redis主从方式部署,部署1主redis+2从redis+3哨兵。
      3.kmetrics
      功能简介
      日志统计分析程序。属于边缘计算业务域。对接kafka,消费kmqtt的日志。统计的指标会保存在redis中,也会保存在mysql中,还会对接prometheus存储时序数据。
      部署说明
      当kmqtt开启日志统计分析功能时,kmetrics需要配套部署。kmetrics是消费者,其消费能力要大于kmqtt的生产能力,不然会造成kafka消息堆积。如果有实时指标统计的需求,kmetrics消费者必须实现kafka 无消息堆积。kmetrics的redis与kauth的redis逻辑上是同一个库。
      推荐部署方案:部署n(>=1)个kmetrics构成kmetrics集群;redis主从方式部署,部署1主redis+2从redis+3哨兵。部署mysql。
      4.kreport
      功能简介
      报表统计程序。属于边缘计算业务域。与kmetrics共用redis和mysql。统计日报表、月报表。为kadmin提供报表查询服务。
      部署说明
      kreport的redis和kmetrics的redis逻辑上是同一个库。mysql也是同一个库。
      推荐部署方案:部署1个kreport。
      5.kadmin+kadminweb
      功能简介
      后台管理程序前后端。属于边缘管控业务域。kamdin与kreport、kmetrics通过http接口单向交互。kadmin与kadminweb通过http接口给前端提供服务,通过websocket给前端推送通知。功能包括:mqtt用户管理、客户端设备管理、用户主题权限管理、dashboard、统计报表。
      部署说明
      kadmin与kreport的redis、mysql逻辑上是不同的库。
      推荐部署方案:部署1个nginx;部署1个kadmin;部署1个kadminweb;单机部署redis;单机部署mysql。
      6.kbi
      功能简介
      数据大屏前端。属于边缘管理业务域。kbi与kreport、kmetrics通过http接口单向交互。用于展现kmqtt指标监控数据大屏。
      部署说明
      kbi的nginx和kadminweb的nginx可以共用。
      推荐部署方案:部署1个kbi。
      7.prometheus+grafana
      功能简介
      指标监控服务的前后端。属于边缘管控业务域。用于展示kmqtt运行情况的指标,给运维人员提供监控视图,也能配置告警规则对异常情况进行告警通知。
      部署说明
      prometheus单机部署,采用直连kmetrics的pull模式。注意prometheus的主机硬盘大小,定期清理数据的配置要符合实际情况。如果需要对环境中的kmqtt、kauth、kmetrics、kreport的jvm进行监控,可以部署jmx-exporter。如果需要对redis进行监控,可以部署redis-exporter。如果要对kafka进行监控,可以部署kafka-exporter。如果需要对nginx进行监控,可以部署nginx-exporter。如果要对mysql进行监控,可以部署mysqld-exporter。
      推荐部署方案:部署1个prometheus;部署1个grafana。
      8.cmak
      功能简介
      kafka后台管理工具。可管理topic。可查看kafka 消费者情况。可查看broker情况。
      部署说明
      推荐部署方案:单机部署cmak
      9.展望
      AIOT方向
      接入ASR/TTS/NLP,实现语音交互
      IOT+图数据库方向
      接入开源图数据库、NLP,做数据分析。

    相关文章

      网友评论

          本文标题:kmqtt架构

          本文链接:https://www.haomeiwen.com/subject/tykdrltx.html