码迷,mamicode.com
首页 > 其他好文 > 详细

MQTT---HiveMQ源码详解(十四)Persistence-LocalPersistence

时间:2017-04-01 17:59:45      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:用户   配置   message   tco   jsb   源码   消息   span   for   

简介

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

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

本节我们先讲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竞争以及线程泛滥的问题。


MQTT交流群:221405150


MQTT---HiveMQ源码详解(十四)Persistence-LocalPersistence

标签:用户   配置   message   tco   jsb   源码   消息   span   for   

原文地址:http://blog.csdn.net/pipinet123/article/details/61732885

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!