Apache Ignite membolehkan mengekalkan konsistensi data dalam persekitaran yang diedarkan melalui enjin transaksi yang diedarkan. Aplikasi perbankan Java menunjukkan cara melaksanakan urus niaga menggunakan Ignite: nod induk mencipta transaksi dengan konkurensi pesimis dan tahap pengasingan bacaan berulang, mendapatkan akaun daripada cache, mendebitkan jumlah, menyimpan akaun dan melakukan transaksi. Buat konkurensi optimistik dan transaksi peringkat pengasingan bersiri daripada nod, dapatkan akaun, semak baki, tolak amaun, simpan akaun dan lakukan transaksi. Jalankan aplikasi dan tonton konsol memaparkan output bahawa pemindahan itu berjaya.
Cara menggunakan Apache Ignite untuk melaksanakan transaksi yang diedarkan Java
Pengenalan
Apache Ignite ialah platform pengkomputeran teragih dengan prestasi dan skalabiliti yang sangat baik. Ia menyediakan enjin pemprosesan transaksi yang membolehkan pembangun membina aplikasi yang sangat konsisten dan berprestasi dalam persekitaran yang diedarkan.
Kes Praktikal
Untuk menunjukkan cara menggunakan Apache Ignite untuk melaksanakan transaksi yang diedarkan, kami mencipta aplikasi perbankan yang mudah. Aplikasi ini akan terdiri daripada dua nod, nod induk dan nod hamba.
pom.xml
<dependency> <groupId>org.apache.ignite</groupId> <artifactId>ignite-core</artifactId> <version>2.15.0</version> </dependency>
Nod induk
import org.apache.ignite.Ignite; import org.apache.ignite.IgniteCache; import org.apache.ignite.Ignition; import org.apache.ignite.transactions.Transaction; import org.apache.ignite.transactions.TransactionConcurrency; import org.apache.ignite.transactions.TransactionIsolation; public class MainNode { public static void main(String[] args) { // 初始化 Ignite 实例 Ignite ignite = Ignition.start(); // 获取账户缓存 IgniteCache<Long, Account> accountCache = ignite.cache("Account"); // 创建主事务 try (Transaction tx = ignite.transactions().txStart(TransactionConcurrency.PESSIMISTIC, TransactionIsolation.REPEATABLE_READ)) { // 从缓存中加载账户 Account account = accountCache.get(1L); // 提取 100 美元 account.setBalance(account.getBalance() - 100); // 保存账户 accountCache.put(1L, account); // 提交事务 tx.commit(); System.out.println("转账成功!"); } catch (Exception e) { e.printStackTrace(); } } }
Nod hamba
import org.apache.ignite.Ignite; import org.apache.ignite.Ignition; import org.apache.ignite.transactions.Transaction; import org.apache.ignite.transactions.TransactionConcurrency; import org.apache.ignite.transactions.TransactionIsolation; public class SlaveNode { public static void main(String[] args) { // 初始化 Ignite 实例 Ignite ignite = Ignition.start(); // 获取账户缓存 IgniteCache<Long, Account> accountCache = ignite.cache("Account"); // 创建从事务 try (Transaction tx = ignite.transactions().txStart(TransactionConcurrency.OPTIMISTIC, TransactionIsolation.SERIALIZABLE)) { // 从缓存中加载账户 Account account = accountCache.get(1L); // 检查账户余额是否足够 if (account.getBalance() < 100) { tx.rollback(); // 余额不足,回滚事务 } // 提取 100 美元 account.setBalance(account.getBalance() - 100); // 保存账户 accountCache.put(1L, account); // 提交事务 tx.commit(); System.out.println("转账成功!"); } catch (Exception e) { e.printStackTrace(); } } }
Kelas akaun
Kelas akaunRreee
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan transaksi diedarkan Java menggunakan Apache Ignite. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!