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 a
lockAtMostForeltelt 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.


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/"
