1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Simba-Distributed-Mutex分布式鎖服務(wù)

        聯(lián)合創(chuàng)作 · 2023-10-01 07:26

        Simba 旨在提供易用、靈活的分布式鎖服務(wù),支持多種存儲后端實現(xiàn):關(guān)系型數(shù)據(jù)庫、Redis、Zookeeper。

        安裝

        Gradle

        Kotlin DSL

            val simbaVersion = "0.3.2";
            implementation("me.ahoo.simba:simba-spring-boot-starter:${simbaVersion}")
         

        Maven

        <?xml version="1.0" encoding="UTF-8"?>
        
        <project xmlns="http://maven.apache.org/POM/4.0.0"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        
            <modelVersion>4.0.0</modelVersion>
            <artifactId>demo</artifactId>
            <properties>
                <simba.version>0.3.2</simba.version>
            </properties>
        
            <dependencies>
                <dependency>
                    <groupId>me.ahoo.simba</groupId>
                    <artifactId>simba-spring-boot-starter</artifactId>
                    <version>${simba.version}</version>
                </dependency>
            </dependencies>
            
        </project>
         

        application.yaml

        simba:
          jdbc:
            enabled: true
        #  redis:
        #    enabled: true
        
        spring:
          datasource:
            url: jdbc:mysql://localhost:3306/simba_db
            username: root
            password: root
         

        Optional-1: JdbcMutexContendService

        JdbcMutexContendService

        Kotlin DSL

            val simbaVersion = "0.3.2";
            implementation("me.ahoo.simba:simba-jdbc:${simbaVersion}")
         
        create table simba_mutex
        (
            mutex             varchar(66)     not null primary key comment 'mutex name',
            acquired_at       bigint unsigned not null,
            ttl_at         bigint unsigned not null,
            transition_at bigint unsigned not null,
            owner_id          char(32)        not null,
            version           int unsigned    not null
        );
         

        Optional-2: RedisMutexContendService

        Kotlin DSL

            val simbaVersion = "0.3.2";
            implementation("me.ahoo.simba:simba-redis:${simbaVersion}")
        

        Optional-3: ZookeeperMutexContendService

        Kotlin DSL

            val simbaVersion = "0.3.2";
            implementation("me.ahoo.simba:simba-zookeeper:${simbaVersion}")
         

        Examples

        Simba-Examples

        使用入門

        MutexContender

                MutexContendService contendService = contendServiceFactory.createMutexContendService(new AbstractMutexContender(mutex) {
                    @Override
                    public void onAcquired(MutexState mutexState) {
                            log.info("onAcquired");
                    }
                    
                    @Override
                    public void onReleased(MutexState mutexState) {
                            log.info("onReleased");
                    }
                });
                contendService.start();
         

        SimbaLocker

                try (Locker locker = new SimbaLocker("mutex-locker", this.mutexContendServiceFactory)) {
                    locker.acquire(Duration.ofSeconds(1));
                /**
                 * doSomething
                 */
                } catch (Exception e) {
                    log.error(e.getMessage(), e);
                }
         

        Scheduler

        public class ExampleScheduler extends AbstractScheduler implements SmartLifecycle {
        
            public ExampleScheduler(MutexContendServiceFactory contendServiceFactory) {
                super("example-scheduler", ScheduleConfig.ofDelay(Duration.ofSeconds(0), Duration.ofSeconds(10)), contendServiceFactory);
            }
        
            @Override
            protected String getWorker() {
                return "ExampleScheduler";
            }
        
            @Override
            protected void work() {
                if (log.isInfoEnabled()) {
                    log.info("do some work!");
                }
            }
        }
        

        Use Cases

         

        瀏覽 22
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        編輯 分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        編輯 分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            AV天堂偷拍亂伦 | 高黄无码 | 黄黄黄污污污网站 | 国产小黄片在线播放 | 大胆韩国少妇裸体艺术 | 吃奶高潮上60分免费视频 | 欧美抽插网| 亚洲中文字幕在线无码 | 悠悠色综合 | 香蕉丝瓜草莓樱桃草莓榴莲绿巨人 |