Gossiper channel的运用

本文详细介绍了在系统中如何实现节点间的高效通知机制,包括注册特定的词汇处理器来处理Gossip协议中的消息,如消化摘要同步和确认。文章还讨论了消息接收过程中的流程管理和任务调度,确保不同阶段的消息能够正确处理。

节点间的通知

注册

 ch.ethz.systems.cloudy2.server.components.gossiper.cassandra.Gossiper.load()

{

...

   CloudyFactory.getMessaging().registerVerbHandler(GOSSIP_DIGEST_SYN_VERB, new GossipDigestSynVerbHandler());
  CloudyFactory.getMessaging().registerVerbHandler(GOSSIP_DIGEST_ACK_VERB, new GossipDigestAckVerbHandler());
  CloudyFactory.getMessaging().registerVerbHandler(GOSSIP_DIGEST_ACK2_VERB, new GossipDigestAck2VerbHandler());
....

}

调用

public static void receive(Message message)  {
  if (CloudyFactory.getTestingComponent().isSleeping())
   return;
     
        Runnable runnable = new MessageDeliveryTask(message);

        ExecutorService stage = StageManager.getStage(message.getStage());
        if (stage == null)
        {
            if (logger_.isDebugEnabled())
                logger_.debug("Running " + message.getStage() + " on default stage");
            messageDeserializerExecutor_.execute(runnable);
        }
        else
        {         
            stage.execute(runnable);
        }
    }

 

public class MessageDeliveryTask implements Runnable
{
    private Message message_;
    
    public MessageDeliveryTask(Message message)
    {
        message_ = message;   
    }
   
    public void run()
    {
        String verb = message_.getVerb();
        IVerbHandler verbHandler = MessagingService.getInstance().getVerbHandler(verb);
        if (verbHandler == null) {
         logger_.warn("Unknown verb " + verb + ". No processing occurs");
        } else {
         verbHandler.doVerb(message_); 
        }     
       // System.out.println("PUT 2"+Thread.currentThread().getName());
    }
}

 

applicationState

 

 

两个容器都挂掉了,node1的日志最后一段如下 INFO [main] 2025-08-29 09:49:59,843 StorageService.java:3281 - Node /172.18.0.2:7000 state jump to NORMAL INFO [main] 2025-08-29 09:49:59,844 Gossiper.java:2443 - Waiting for gossip to settle... INFO [main] 2025-08-29 09:50:07,845 Gossiper.java:2474 - No gossip backlog; proceeding INFO [main] 2025-08-29 09:50:07,867 CassandraDaemon.java:450 - Prewarming of auth caches is disabled INFO [CompactionExecutor:1] 2025-08-29 09:50:07,872 CompactionTask.java:167 - Compacting (8bdcbcb0-84bd-11f0-b3a1-d3927c21a65e) [/var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-7-big-Data.db:level=0, /var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-5-big-Data.db:level=0, /var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-6-big-Data.db:level=0, /var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-3-big-Data.db:level=0, /var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-4-big-Data.db:level=0, /var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-1-big-Data.db:level=0, /var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-2-big-Data.db:level=0, ] INFO [main] 2025-08-29 09:50:07,874 NativeTransportService.java:132 - Using Netty Version: [netty-all=netty-all-4.1.119.Final.fb7c786f2d, netty-buffer=netty-buffer-4.1.119.Final.fb7c786f2d, netty-codec=netty-codec-4.1.119.Final.fb7c786f2d, netty-common=netty-common-4.1.119.Final.fb7c786f2d, netty-handler=netty-handler-4.1.119.Final.fb7c786f2d, netty-handler-proxy=netty-handler-proxy-4.1.119.Final.fb7c786 (repository: dirty), netty-handler-ssl-ocsp=netty-handler-ssl-ocsp-4.1.119.Final.fb7c786 (repository: dirty), netty-resolver=netty-resolver-4.1.119.Final.fb7c786f2d, netty-transport=netty-transport-4.1.119.Final.fb7c786f2d, netty-transport-classes-epoll=netty-transport-classes-epoll-4.1.119.Final.fb7c786 (repository: dirty), netty-transport-classes-kqueue=netty-transport-classes-kqueue-4.1.119.Final.fb7c786f2d, netty-transport-native-epoll=netty-transport-native-epoll-4.1.119.Final.fb7c786 (repository: dirty), netty-transport-native-unix-common=netty-transport-native-unix-common-4.1.119.Final.fb7c786f2d] INFO [main] 2025-08-29 09:50:07,875 NativeTransportService.java:70 - Netty using native Epoll event loop INFO [main] 2025-08-29 09:50:07,894 PipelineConfigurator.java:147 - Using Netty Version: [netty-all=netty-all-4.1.119.Final.fb7c786f2d, netty-buffer=netty-buffer-4.1.119.Final.fb7c786f2d, netty-codec=netty-codec-4.1.119.Final.fb7c786f2d, netty-common=netty-common-4.1.119.Final.fb7c786f2d, netty-handler=netty-handler-4.1.119.Final.fb7c786f2d, netty-handler-proxy=netty-handler-proxy-4.1.119.Final.fb7c786 (repository: dirty), netty-handler-ssl-ocsp=netty-handler-ssl-ocsp-4.1.119.Final.fb7c786 (repository: dirty), netty-resolver=netty-resolver-4.1.119.Final.fb7c786f2d, netty-transport=netty-transport-4.1.119.Final.fb7c786f2d, netty-transport-classes-epoll=netty-transport-classes-epoll-4.1.119.Final.fb7c786 (repository: dirty), netty-transport-classes-kqueue=netty-transport-classes-kqueue-4.1.119.Final.fb7c786f2d, netty-transport-native-epoll=netty-transport-native-epoll-4.1.119.Final.fb7c786 (repository: dirty), netty-transport-native-unix-common=netty-transport-native-unix-common-4.1.119.Final.fb7c786f2d] INFO [main] 2025-08-29 09:50:07,894 PipelineConfigurator.java:148 - Starting listening for CQL clients on /0.0.0.0:9042 (unencrypted)... INFO [main] 2025-08-29 09:50:07,896 CassandraDaemon.java:744 - Startup complete INFO [CompactionExecutor:1] 2025-08-29 09:50:07,909 CompactionTask.java:258 - Compacted (8bdcbcb0-84bd-11f0-b3a1-d3927c21a65e) 7 sstables to [/opt/cassandra/data/data/system/local-7ad54392bcdd35a684174e047860b377/nb-8-big,] to level=0. 849B to 657B (~77% of original) in 34ms. Read Throughput = 23.897KiB/s, Write Throughput = 18.492KiB/s, Row Throughput = ~2/s. 7 total partitions merged to 1. Partition merge counts were {7:1, }. Time spent writing keys = 20ms INFO [NonPeriodicTasks:1] 2025-08-29 09:50:07,913 BigFormat.java:231 - Deleting sstable: /opt/cassandra/data/data/system/local-7ad54392bcdd35a684174e047860b377/nb-7-big INFO [NonPeriodicTasks:1] 2025-08-29 09:50:07,914 BigFormat.java:231 - Deleting sstable: /opt/cassandra/data/data/system/local-7ad54392bcdd35a684174e047860b377/nb-5-big INFO [NonPeriodicTasks:1] 2025-08-29 09:50:07,917 BigFormat.java:231 - Deleting sstable: /opt/cassandra/data/data/system/local-7ad54392bcdd35a684174e047860b377/nb-6-big INFO [NonPeriodicTasks:1] 2025-08-29 09:50:07,919 BigFormat.java:231 - Deleting sstable: /opt/cassandra/data/data/system/local-7ad54392bcdd35a684174e047860b377/nb-3-big INFO [NonPeriodicTasks:1] 2025-08-29 09:50:07,920 BigFormat.java:231 - Deleting sstable: /opt/cassandra/data/data/system/local-7ad54392bcdd35a684174e047860b377/nb-4-big INFO [NonPeriodicTasks:1] 2025-08-29 09:50:07,922 BigFormat.java:231 - Deleting sstable: /opt/cassandra/data/data/system/local-7ad54392bcdd35a684174e047860b377/nb-1-big INFO [NonPeriodicTasks:1] 2025-08-29 09:50:07,924 BigFormat.java:231 - Deleting sstable: /opt/cassandra/data/data/system/local-7ad54392bcdd35a684174e047860b377/nb-2-big INFO [OptionalTasks:1] 2025-08-29 09:50:17,934 CassandraRoleManager.java:429 - Created default superuser role 'cassandra'
08-30
基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的Koopman算子的递归神经网络模型线性化”展开,旨在研究纳米定位系统的预测控制问题,并提供完整的Matlab代码实现。文章结合数据驱动方法与Koopman算子理论,利用递归神经网络(RNN)对非线性系统进行建模与线性化处理,从而提升纳米级定位系统的精度与动态响应性能。该方法通过提取系统隐含动态特征,构建近似线性模型,便于后续模型预测控制(MPC)的设计与优化,适用于高精度自动化控制场景。文中还展示了相关实验验证与仿真结果,证明了该方法的有效性和先进性。; 适合人群:具备一定控制理论基础和Matlab编程能力,从事精密控制、智能制造、自动化或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于纳米级精密定位系统(如原子力显微镜、半导体制造设备)中的高性能控制设计;②为非线性系统建模与线性化提供一种结合深度学习与现代控制理论的新思路;③帮助读者掌握Koopman算子、RNN建模与模型预测控制的综合应用。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现流程,重点关注数据预处理、RNN结构设计、Koopman观测矩阵构建及MPC控制器集成等关键环节,并可通过更换实际系统数据进行迁移验证,深化对方法泛化能力的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值