Pada hari-hari awal komputasi, tidak ada kebutuhan untuk transaksi terdistribusi. Seiring bertambahnya jumlah aplikasi, sinkronisasi data menjadi isu penting. Perusahaan membayar banyak untuk memelihara sistem yang disinkronkan dalam hal aliran data. Akibatnya, protokol komit 2 fase yang disebut sebagai XA (Arsitektur eXtended) muncul. Protokol ini menyediakan properti seperti ACID untuk pemrosesan transaksi global. Sepanjang artikel ini, saya akan mencoba menjelaskan detail transaksi XA dan penggunaan Transaksi XA dalam kerangka Spring.

Protokol komit 2 fase adalah protokol komitmen atom untuk sistem terdistribusi. Protokol ini sesuai dengan namanya terdiri dari dua fase. Yang pertama adalah fase permintaan-komit di mana manajer transaksi mengoordinasikan semua sumber daya transaksi untuk dikomit atau dibatalkan. Dalam komit-fase, manajer transaksi memutuskan untuk menyelesaikan operasi dengan melakukan atau membatalkan sesuai dengan suara dari setiap sumber daya transaksi. Kami selanjutnya akan beralih ke detail implementasi protokol 2PC.

Lihat di sini untuk sumber daya di Java + .NET Interoperabilitas melalui 2PC.

Transaksi XA memerlukan id transaksi global dan id transaksi lokal (xid) untuk setiap sumber daya XA. Setiap Sumber Daya XA didaftarkan ke Manajer XA dengan metode start(xid). Metode ini memberitahu bahwa XA Resource sedang terlibat dalam transaksi (siap untuk operasi). Setelah itu, fase pertama dari protokol 2PC direalisasikan dengan memanggil metode prepare(xid). Metode ini meminta suara OK atau ABORT dari XA Resource. Setelah menerima suara dari masing-masing Sumber Daya XA, Manajer XA memutuskan untuk menjalankan operasi commit(xid) jika semua Sumber Daya XA mengirim OK atau memutuskan untuk menjalankan rollback(xid) jika Sumber Daya XA mengirim ABORT. Akhirnya, metode end(xid) dipanggil untuk setiap Sumber Daya XA yang memberi tahu bahwa transaksi telah selesai. Lihatlah gambar untuk memahami lebih baik. Saat kita membangun latar belakang dalam implementasi transaksi XA, selanjutnya kita akan masuk lebih dalam dan melihat ketik perintah ini perintah ini perintah kegagalan dan solusi yang mungkin.


Kegagalan dapat terjadi kapan saja karena kehilangan jaringan, mesin mati dan beberapa kesalahan administrator. Dalam transaksi XA, kami akan mengkategorikan kegagalan ini sesuai dengan fase yang terjadi. Fase kegagalan pertama adalah sebelum protokol dimulai. Ini adalah kegagalan sederhana yang sistem tidak perlu rollback atau operasi apapun. Kami hanya tidak melakukan operasi untuk momen tertentu. Kedua ketik perintah ini perintah ini perintah kegagalan ini dapat terjadi pada fase persiapan (permintaan-komit) yang dapat dengan mudah ditangani oleh rollback menggunakan kebijakan batas waktu. Terakhir tetapi tidak kalah pentingnya adalah kegagalan fase komit yang dapat terjadi karena rollback yang tidak lengkap dan masalah apa pun dalam rantai. Dalam semua situasi di atas, manajer transaksi mencoba untuk memulihkan masalah. Selanjutnya kita akan melihat bagaimana manajer transaksi mencoba mengatasi kegagalan.

Pada pemulihan, manajer transaksi memanggil metode pemulihan dari setiap sumber daya XA. XA Resources melacak log dan mencoba membangun kembali kondisi terbarunya. Manajer Transaksi memanggil operasi rollback yang diperlukan dan misi tercapai. Proses ini tampaknya merupakan jalan yang menyenangkan tetapi ada banyak situasi luar biasa di mana log bermasalah seperti rusak. Dalam situasi seperti ini, manajer transaksi mengikuti beberapa heuristik untuk memecahkan masalah. Selain itu, proses pemulihan bergantung pada log tulis di depan tempat Anda menulis log operasi sebelum mendaftar. Pada masalah kinerja, log ini ditulis dalam formatnya sendiri (tidak menggunakan serialisasi apa pun) dan sistem harus mengelompokkannya dengan lebih baik jika memungkinkan. Kami selanjutnya pergi ke bagian yang menyenangkan yaitu dukungan transaksi XA oleh kerangka kerja Spring.

Kerangka kerja pegas menyediakan lingkungan yang luas untuk mengembangkan web dan aplikasi yang berdiri sendiri. Seperti utilitas lain yang disediakannya, transaksi XA juga didukung oleh Spring. Namun, dukungan ini bukan implementasi asli dan memerlukan hibernasi, penampung web, atau kerangka kerja yang menyediakan Manajemen Transaksi XA. Spring memiliki JtaTransactionManager yang menyediakan utilitas manajemen transaksi dan menyembunyikan detailnya. Dengan cara ini, kita dapat memiliki manajemen transaksi untuk beberapa Sumber Data yang diperbarui secara bersamaan. Ketika datang untuk menggunakan Manajemen Transaksi XA, hibernasi dan dukungan wadah web untuk transaksi XA didokumentasikan dengan baik, tidak perlu disebutkan. Namun, bekerja dengan kerangka kerja yang menyediakan transaksi XA dapat membingungkan. Jadi, saya akan melanjutkan posting ini dengan memperkenalkan Manajer Transaksi Bitronix.

Bitronix mudah dikonfigurasi sambil memberikan dukungan yang baik untuk manajemen transaksi. Ini tidak umum digunakan pada aplikasi yang berdiri sendiri tetapi saya akan mencoba memberikan konfigurasi untuk aplikasi yang berdiri sendiri sebagai berikut.

Kami sekarang dapat memiliki beberapa sumber data yang dapat dikonfigurasi sebagai berikut. Setiap sumber data harus memiliki properti uniqueName yang unik. Konfigurasi di bawah ini untuk Oracle, database lain dapat memiliki konfigurasi yang berbeda. Untuk detail lainnya, Anda dapat memeriksa situs web Bitronix.

Singkatnya, kami telah mencoba menjelaskan apa itu Transaksi XA, protokol yang mendasari, dan integrasi Manajemen Transaksi Bitronix dengan Spring dalam aplikasi yang berdiri sendiri. Untuk memperluas, Transaksi XA menyediakan modifikasi sumber data yang berbeda secara bersamaan. Selanjutnya, Transaksi XA didukung oleh wadah web atau kerangka kerja seperti hibernasi. Namun demikian, kita mungkin perlu mengintegrasikan manajemen transaksi ke aplikasi yang berdiri sendiri di mana kita harus mengkonfigurasi manajer transaksi. Akibatnya, transaksi XA menyediakan operasi yang konsisten pada berbagai sumber data dan perusahaan memanfaatkannya.
Kami harap artikel ini membantu Anda dengan Cara Melakukan Transaksi XA (Komit 2 Fase): Panduan Sederhana. Jika Anda memiliki pertanyaan lain, kami akan dengan senang hati menjawab pertanyaan Anda; silahkan hubungi kami di bagian di bawah ini. Jangan lupa untuk berbagi signalfix.net dengan keluarga dan teman-teman Anda!