Hogyan konfigurálható a Shed Lock magas rendelkezésre állású rendszerekhez?

Jan 12, 2026

Hagyjon üzenetet

John Lee
John Lee
Én vagyok a Hunan Lianhu Hardware Co. technológiai vezérigazgatója, amely vezeti az innovációs stratégiánkat. A hangsúlyom a legmodernebb hardver megoldások kidolgozására összpontosít, amelyek megfelelnek a modern igényeknek.

A magas rendelkezésre állású rendszerek területén rendkívül fontos annak biztosítása, hogy bizonyos kritikus feladatok megfelelő szinkronizálással és versenyfeltételek nélkül történjenek. Itt jön képbe a Shed Lock. Shed Lock beszállítóként azért vagyok itt, hogy végigvezessem Önt a Shed Lock magas rendelkezésre állású környezetekhez való konfigurálásának folyamatán.

A Shed Lock megértése

A Shed Lock egy olyan könyvtár, amely elosztott zárakat biztosít a Java alkalmazások ütemezett feladataihoz. Magas rendelkezésre állású rendszerekben egy alkalmazás több példánya is megpróbálhatja ugyanazt az ütemezett feladatot egyszerre végrehajtani. Ez adatintegritási problémákhoz, duplikált feldolgozáshoz és egyéb problémákhoz vezethet. A Shed Lock megoldja ezt a problémát azáltal, hogy megosztott tárolót (például adatbázist) használ a zárolások kezelésére. Egyszerre csak egy példány szerezheti be a zárolást, biztosítva, hogy a feladat csak egyszer kerüljön végrehajtásra.

Előfeltételek

Mielőtt elkezdené a Shed Lock konfigurálását, győződjön meg arról, hogy rendelkezik a következőkkel:

  • Magas rendelkezésre állású infrastruktúrán futó Java alkalmazás. Ez lehet egy fürtben lévő szerverkészlet, amelyet felhőkörnyezetben, például AWS-ben vagy Google Cloudban telepítenek.
  • Egy adatbázis, amely a zárak megosztott tárolójaként használható. A népszerű választások közé tartozik a MySQL, a PostgreSQL és a H2.
  • A függőségek kezelésére konfigurált Maven vagy Gradle.

1. lépés: Adjon hozzá függőséget

Az első lépés a Shed Lock függőségek hozzáadása a projekthez. Ha Maven-t használ, adja hozzá a következőketpom.xml:

<dependency> <groupId>net.javacrumbs.shedlock</groupId> <artifactId>shedlock-spring</artifactId> <version>4.42.0</version> </dependency> <dependency> <groupId>net.javacrumbs.shedlock</groupId> <artifactId>shedlock-provider-jdbc-template</artifactId> <version>4.42.0</version> </dependency>

Gradle esetén adja hozzá ezeket a sorokat a sajátjáhozbuild.gradle:

megvalósítás 'net.javacrumbs.shedlock:shedlock-spring:4.42.0' megvalósítás 'net.javacrumbs.shedlock:shedlock-provider-jdbc-template:4.42.0'

2. lépés: Konfigurálja a zárolási szolgáltatót

A zárszolgáltató felelős a megosztott tárolóval (esetünkben az adatbázissal) való interakcióért a zárak kezeléséhez. Íme egy példa arra, hogyan konfigurálhat zárszolgáltatót a Spring's segítségévelJdbcSablon:

import net.javacrumbs.shedlock.core.LockProvider; import net.javacrumbs.shedlock.provider.jdbc.template.JdbcTemplateLockProvider; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.core.JdbcTemplate; import javax.sql.DataSource; @Configuration public class ShedLockConfig { @Bean public LockProvider lockProvider(DataSource dataSource) { return new JdbcTemplateLockProvider( JdbcTemplateLockProvider.Configuration.builder() .withJdbcTemplate(new JdbcTemplate(dataing)Db)T(dime)Db)); } }

Ebben a példában létrehozunk aJdbcTemplateLockProviderbabot, amely a biztosítottat használjaDataSourcekölcsönhatásba lépni az adatbázissal. ADbTime() használatametódus azt jelzi, hogy az adatbázis rendszeridejét szeretnénk használni a zárkezeléshez.

3. lépés: A Shed Lock konfigurálása tavasszal

Ezután engedélyeznünk kell a Shed Lock-ot a tavaszi alkalmazásunkban. Ezt úgy tehetjük meg, ha hozzáadjuk a@EnableSchedulerLockmegjegyzés a fő konfigurációs osztályunkhoz:

import net.javacrumbs.shedlock.spring.annotation.EnableSchedulerLock; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; @Konfiguráció @EnableScheduling @EnableSchedulerLock(defaultLockAtMostFor = "PT30S") nyilvános osztály AppConfig { // Konfigurációs kód itt }

A@Ütemezés engedélyezéseaz annotáció lehetővé teszi a tavaszi ütemezési képességeket, és@EnableSchedulerLockengedélyezi a Shed Lock funkciót. AdefaultLockAtMostForAz attribútum megadja, hogy a zár legfeljebb mennyi ideig tartható fenn. Ebben az esetben a zár 30 másodperc után automatikusan feloldódik.

4. lépés: Alkalmazzon zárakat az ütemezett feladatokra

Mostantól zárolást alkalmazhatunk ütemezett feladatainkra. Íme egy példa:

import net.javacrumbs.shedlock.spring.annotation.SchedulerLock; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; @Service public class ScheduledTaskService { @Scheduled(fixedRate = 60000) @SchedulerLock(name = "myScheduledTask", lockAtMostFor = "PT10M", lockAtLeastFor = "PT1M") public void myScheduledTask() itt található myScheduledTask() logic /"Task. ütemezett feladat..."); } }

A@SchedulerLockaz annotációt arra használják, hogy zárolást alkalmazzanak amyScheduledTaskmódszer. Anévattribútum a zár egyedi azonosítója. AlockAtMostForattribútum megadja, hogy a zár legfeljebb mennyi ideig tartható, éslockAtLeastFormegadja a zárolás minimális időtartamát.

5. lépés: Adatbázis beállítása

Létre kell hoznunk egy táblázatot az adatbázisban a zárolási információk tárolására. MySQL adatbázis esetén a tábla létrehozásához szükséges SQL utasítás a következő:

TÁBLÁZAT LÉTREHOZÁSA shedlock( név VARCHAR(64) NOT NULL, lock_amíg IDŐBÉLYEG(3) NOT NULL, zárva_at TIMESTAMP(3) NOT NULL, zárva_a VARCHAR(255) NOT NULL, PRIMARY KEY (név) );

Más adatbázisok, például a PostgreSQL esetében az SQL utasítás hasonló, de előfordulhat, hogy az adattípusokat módosítani kell az adatbázis specifikációi szerint.

További szempontok a magas rendelkezésre álláshoz

A magas rendelkezésre állású rendszerekben néhány további tényezőt is figyelembe kell vennünk:

  • Adatbázis replikáció: Ha replikált adatbázist használ, győződjön meg arról, hogy a zárolási tábla megfelelően replikálódik. A replikáció bármely késése ahhoz vezethet, hogy egyszerre több példány is megszerezze a zárolást.
  • Hálózati késleltetés: Az alkalmazáspéldányok és az adatbázis közötti magas hálózati késleltetés hatással lehet a zárolás megszerzésére és feloldására. Fontolja meg olyan adatbázis használatát, amely földrajzilag közel van az alkalmazáskiszolgálókhoz.
  • Hibahelyreállítás: Megfelelő hiba-helyreállítási mechanizmusok végrehajtása. Ha egy példány meghibásodik, miközben zárolást tart, a zárat automatikusan fel kell oldani, miután alockAtMostForeltelt az idő.

Kapcsolódó terméklinkek

Ha kiváló minőségű zárakat keres más alkalmazásokhoz, akkor felkeltheti érdeklődésétNyomja meg a zárat,Fa ajtózár, ésKerek ajtózár.

Beszerzésért forduljon hozzánk

Megértjük a megbízható zármegoldások fontosságát a magas rendelkezésre állású rendszerekben. Shed Lock beszállítóként elkötelezettek vagyunk amellett, hogy a legjobb termékeket és támogatást nyújtsuk Önnek. Ha a Shed Lock beszerzése iránt érdeklődik magas rendelkezésre állású projektjeihez, vagy bármilyen kérdése van a konfigurációjával kapcsolatban, kérjük, forduljon hozzánk. Kezdjen el velünk egy beszélgetést, hogy megvitassa egyedi igényeit, és fedezze fel, hogyan javíthatja a Shed Lock rendszere teljesítményét és megbízhatóságát.

19-61-5

Hivatkozások

  • A Shed Lock hivatalos dokumentációja: "https://www.javacrumbs.net/shedlock/"
  • Spring Framework dokumentáció, "https://docs.spring.io/spring-framework/docs/current/reference/html/"
A szálláslekérdezés elküldése