MasterSlave方式中,master提供服务,slave备份master的数据。当master挂掉后,slave会变成master继续工作。

Shared File System Master Slave

基于共享文件系统,第一个获取文件上的独占锁的broker,就是master,如果这个broker挂了,其他broker获取文件上的独占锁,就从slave变成master。
broker61616、broker61618、broker61619的persistenceAdapter配置如下:

<persistenceAdapter>
    <kahaDB directory="H:\soft\developer\apache\apache-activemq-1\data\kahadb"/>
</persistenceAdapter>

启动

依次启动broker,61616由于先启动,此时是master,61618、61619的启动结果如下,由于没抢到文件的独占锁,变成slave:
image.png
此时结构图如下:
Startup.png

master关闭

关闭后,其中一个slave抢到文件的独占锁,变成master:
image.png
此时结构图如下:
MasterFailed.png

重启原master

由于此时文件的独占锁已经被抢了,所以就算原master重启,也只能是slave了:
image.png
此时结构图如下:
MasterRestarted.png

JDBC Master Slave

基于JDBC作为数据源,配置参考JDBC的持久化,不同的是,jdbcPersistenceAdapter要加个locker标签和lockKeepAlivePeriod的值。

<persistenceAdapter>
    <jdbcPersistenceAdapter  dataSource="#mysql-ds" lockKeepAlivePeriod="5000">
        <locker>
            <lease-database-locker lockAcquireSleepInterval="10000"/>
        </locker>
    </jdbcPersistenceAdapter>
</persistenceAdapter>

启动

依次启动broker,61616由于先启动,此时是master,61618、61619的启动结果如下,由于没抢到锁,在等待:
数据库值:
image.png
61618:
image.png
61619:
image.png

master关闭

此时61619变成master
image.png

重启原master

在等待中
image.png


大军
847 声望183 粉丝

学而不思则罔,思而不学则殆


引用和评论

1 篇内容引用
0 条评论