zoukankan      html  css  js  c++  java
  • MQTT---HiveMQ源代码具体解释(十四)Persistence-LocalPersistence

    源博客地址:http://blog.csdn.net/pipinet123


    MQTT交流群:221405150


    简单介绍

    HiveMQ的Persistence提供配置包含File和Memory,以解决不同场景的不同需求,使用者能够自行配置六种信息的PersistenceMode

    就代码来讲。又分为LocalPersistence和Cluster/SinglePersistence。LocalPersistence主要是作本地的Persistence;Cluster/SinglePersistence主要是依据用户是否Cluster来决定不同的Persistence业务处理。

    本节我们先讲LocalPersistence


    类图

    LocalPersistence

    • 每一个LocalPersistence都是由相应的Provider依据用户的配置来提供相应的LocalPersistence。

    • LocalPersistence主要分为这几这么几类QueuedMessage、ClientSessionSubscriptions、IncomingMessageFlow、OutgoingMessageFlow、ClientSession、RetainedMessage、LWT(这个是local的,不须要Cluster),主要持久队列消息、客户订阅、Incoming消息流水、Outgoing消息流水、client session、保留消息。

    • -

    bucket应用

    因为这些Persistence的信息。都是跟client强相关的,那么通过bucket,通过clientid与bucket count计算出相应存储的bucket,这样能够数量级降低查找速度。每一个Persistence信息的bucket数量都是能够通过配置文件进行自由定义配置

    bucket计算

    public static int bucket(@NotNull String clientId, int bucketCount) {
            return Math.abs(clientId.hashCode() % bucketCount);
        }

    PersistenceExecutor

    因为持久化的处理也都是通过所有异步处理。相似于CallbackExecutor,Persistence的任务也都是通过统一的Executor进行调度,以达到提高效率,降低不是必需的cpu竞争以及线程泛滥的问题。

  • 相关阅读:
    android引入百度地图之最简单的例子-HelloBaiDuMap
    WebView之js调用Android类的方法传递数据
    eclipse项目中丢失的R包找回方法
    画竖线的4种方法
    CSS清除浮动的三种方法
    css简写
    使用CSS设置行间距,字间距
    PHP面试题及答案解析(5)—数据结构与算法
    PHP面试题及答案解析(6)—PHP网络编程
    PHP面试题及答案解析(3)—MySQL数据库
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7397224.html
Copyright © 2011-2022 走看看