美文网首页java高级开发
thingsboard actor消息处理流程

thingsboard actor消息处理流程

作者: 老鼠AI大米_Java全栈 | 来源:发表于2022-05-24 09:55 被阅读0次

Actor模型在异步处理中使用广泛,尤其是scala语言中actor框架的使用。本篇主要介绍thingsboard中其自主实现的actor模型,及在数据传输中的使用。

Actor模型简介

Actor由状态(state)、行为(Behavior)和邮箱(mailBox)三部分组成

  • 状态:Actor中的状态指的是Actor对象的变量信息,状态由Actor自己管理,避免了并发环境下的锁和内存原子性等问题
  • 行为:行为指定的是Actor中计算逻辑,通过Actor接收到消息来改变Actor的状态
  • 邮箱:邮箱是Actor和Actor之间的通信桥梁,邮箱内部通过FIFO消息队列来存储发送方Actor消息,接受方Actor从邮箱队列中获取消息

TB Actor实现

通过测试类来跟踪源码,是学习源码非常有效的方式。我们也从测试类ActorSystemTest开始跟踪actor实现的过程。首先运行测试方法test1actorsAnd100KMessages(),体验一下actor模型处理的速度。


image.png

模型本身用到的类比较少,下面对每个类的的功能做一个描述:


image.png

与经典的Actor模型对应关系为:

  • TbActor-->Actor
  • Dispatcher --> Behavior
  • TbActorRef --> mailBox,TbActorRef对应的实现类为TbActorMailbox。

Actor在TB中的应用

Actor对象

如下图所示,tb针对不同场景实现了不同的actor对象,actor对象里通过processor来处理业务逻辑。

image.png
注:idea默认快捷键(Ctrl+H)可显示抽象类或接口的所有实现子类

actor与queue打通

DefaultTbRuleEngineConsumerService在消费队列时,如果存在actorMsg,就执行ActorSystemContext.tellWithHighPriority()处理。执行流程如图:


image.png

下面分析一下AbstractConsumerService类,其在spring初始化完成后会启动线程来消费actor的队列数据,具体的实现在rule-engine中分析。


image.png

Actor模型使用的优点

tb是使用actor模型处理接收到的message,有效的隔离了消息的接收和处理过程。并且actor对消息处理的过程进行了隔离,不用考虑资源的并发处理问题。Mailbox中的actor对象处理消息的速度是非常快的,处理完后直接tell给下游childActor。

thingsboard actor消息处理流程

image.png

相关文章

  • thingsboard actor消息处理流程

    Actor模型在异步处理中使用广泛,尤其是scala[https://so.csdn.net/so/search?...

  • IOT开源数据平台Thingsboard源码分析(三)-Acto

    Actor模型在异步处理中使用广泛,尤其是scala语言中actor框架的使用。本篇主要介绍thingsboard...

  • Akka Routing

    A Router Actor 有时, 需要把相同类型的消息发给一个 actor 集合, 以便消息可以并行处理 - ...

  • Akka 2.5.11 路由 Routing

    当处理到来的消息流时,我们需要一个actor来引导消息路由到目标actor,从而提高消息的分配效率。在Akka中这...

  • skynet原理解析

    一、消息队列 上图摘自Actor模型解析,每个Actor都有一个专用的MailBox来接收消息,这也是Actor实...

  • [翻译]squbs官网之13 消息指南

    消息指南 Akka actor通过不可变的消息通信。可以在代码的任何地方定义。当squbs处理跨cube的消息通信...

  • Actor模型合CSP模型

    Actor模型 在Actor模型中,主角是Actor,类似一种Worker。Actor彼此之间直接发送消息,不需要...

  • Android 消息循环机制详解

    “发送消息-处理消息” 是最基础的消息处理流程。在Android系统中,这一流程是通过Handler+Messag...

  • iOS 消息处理流程、消息转发流程

    我们知道将源代码转化为可执行的文件要经过三个阶段:编译、链接、运行。不同的编译语言有有所不同。 在iOS中函数的调...

  • akka(1)

    akka 处理并发的基于actor

网友评论

    本文标题:thingsboard actor消息处理流程

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