Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Ada dua jenis operasi penerapan: penerapan fase tunggal dan penerapan multi-fase. Operasi penerapan fase tunggal terdiri dari satu pemberitahuan yang harus ditanggapi oleh manajer sumber daya, sementara operasi penerapan multi-fase mencakup pemberitahuan tambahan untuk langkah-langkah persiapan.
Operasi komit satu fase lebih sederhana untuk diterapkan. Hal ini sesuai untuk sistem pemrosesan transaksi (TPSs) yang memiliki salah satu karakteristik berikut:
Satu manajer sumber daya.
Beberapa manajer sumber daya, semuanya kecuali salah satunya baca-saja dan tidak berpartisipasi dalam operasi penerapan.
Operasi penerapan multi-fase diperlukan jika beberapa manajer sumber daya berpartisipasi dalam operasi penerapan.
Operasi Penerapan Single-Phase
Jika Anda ingin TPS Mendukung operasi penerapan fase tunggal, satu (dan hanya satu) manajer sumber daya harus mendaftar untuk menerima pemberitahuan TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT untuk pendaftarannya. Semua pengelola sumber daya lainnya harus hanya-baca.
TPS yang mencakup manajer transaksi utama tidak dapat menggunakan komit satu fase.
Jika manajer sumber daya telah mendaftar untuk menerima pemberitahuan TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT, KTM mengirimkan pemberitahuan semacam ini ketika klien transaksional memanggil ZwCommitTransaction.
Saat manajer sumber daya menerima pemberitahuan TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT untuk transaksi, manajer sumber daya dapat melakukan transaksi atau menolak penerapan fase tunggal.
Untuk melakukan transaksi, resource manager harus melakukan hal berikut:
Buang data apa pun yang disimpannya dalam cache non-permanen (penyimpanan dalam memori), seperti area marshalling CLFS untuk aliran log CLFS.
Manajer sumber daya harus memindahkan data dari cache ke media penyimpanan yang tahan lama. Misalnya, resource manager yang menggunakan CLFS dapat memanggil ClfsFlushBuffers.
Buat semua perubahan data permanen dan publik (yaitu, terlihat di luar cakupan manajer sumber daya).
Hubungi ZwCommitComplete.
Setelah memanggil ZwCommitComplete, manajer sumber daya harus memanggil ZwClose untuk menutup handle pendaftaran.
Untuk menolak operasi penerapan fase tunggal untuk transaksi, manajer sumber daya dapat memanggil ZwSinglePhaseReject. Jika resource manager memanggil ZwSinglePhaseReject, KTM segera mengubah operasi penerapan dari fase tunggal ke multi-fase.
Jika manajer sumber daya lain mendaftar dalam transaksi yang sama, mereka harus hanya-baca. Namun, mereka harus mendaftar untuk menerima pemberitahuan TRANSACTION_NOTIFY_RM_DISCONNECTED, yang akan mereka terima jika pengelola sumber daya yang menangani operasi komitmen fase tunggal menutup handle pendaftaran tanpa menunjukkan bahwa transaksi telah dilakukan atau dibatalkan.
Operasi Komitmen Multi-Fase
Operasi komit multi-fase dimulai ketika salah satu peristiwa berikut terjadi:
Klien transaksional memanggil ZwCommitTransaction, dan tidak ada manajer sumber daya yang telah mendaftar untuk menerima pemberitahuan TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT.
Manajer sumber daya memanggil ZwSinglePhaseReject setelah menerima pemberitahuan TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT.
Manajer transaksi yang unggul memanggil ZwPrepareEnlistment.
Operasi penerapan multi-fase terdiri dari tiga fase berurutan: pra-persiapan, persiapan, dan penerapan.
Fase Pra-Persiapan
Fase pra-persiapan (juga dikenal sebagai fase nol) dari operasi penerapan dimulai ketika KTM mengirim pemberitahuan TRANSACTION_NOTIFY_PREPREPARE ke semua manajer sumber daya. KTM mengirimkan pemberitahuan ini jika tidak ada manajer sumber daya yang mendukung operasi commit fase tunggal untuk transaksi tersebut, atau jika manajer transaksi yang lebih tinggi memanggil ZwPrePrepareEnlistment.
Saat setiap manajer sumber daya menerima pemberitahuan TRANSACTION_NOTIFY_PREPREPARE, manajer sumber daya harus melakukan hal berikut:
Bersihkan data apa pun yang disimpannya dalam cache non-permanen (penyimpanan di dalam memori), seperti area marshalling CLFS untuk aliran log CLFS.
Manajer sumber daya harus memindahkan data dari cache ke media penyimpanan yang tahan lama. Misalnya, resource manager yang menggunakan CLFS dapat memanggil ClfsFlushBuffers.
Panggil ZwPrePrepareComplete.
Setelah manajer sumber daya memanggil ZwPreprepareComplete, manajer sumber daya dapat terus menerima dan melayani permintaan klien. Tetapi manajer sumber daya harus memperlakukan semua modifikasi data sebagai operasi pass-through cache yang segera ditulis ke media penyimpanan yang tahan lama.
Jika manajer sumber daya mengalami kesalahan saat memproses pemberitahuan TRANSACTION_NOTIFY_PREPREPARE, manajer sumber daya harus memanggil ZwRollbackEnlistment untuk mengembalikan transaksi.
Fase Persiapan
Fase persiapan (juga dikenal sebagai fase satu) dari operasi penerapan dimulai ketika KTM mengirim pemberitahuan TRANSACTION_NOTIFY_PREPARE ke semua manajer sumber daya. KTM mengirimkan pemberitahuan ini setelah TRANSACTION_NOTIFY_PREPREPARE jika tidak ada manajer sumber daya yang mendukung komitmen satu fase atau jika manajer transaksi unggul memanggil ZwPrepareEnlistment.
Saat setiap manajer sumber daya menerima pemberitahuan TRANSACTION_NOTIFY_PREPARE, manajer sumber daya harus melakukan hal berikut:
Hentikan pemrosesan permintaan klien dan laporkan permintaan klien berikutnya sebagai kesalahan klien.
Pastikan bahwa semua data telah dipindahkan ke penyimpanan yang tahan lama.
Panggil ZwPrepareComplete.
Jika manajer sumber daya mengalami kesalahan saat memproses pemberitahuan TRANSACTION_NOTIFY_PREPARE, manajer sumber daya harus memanggil ZwRollbackEnlistment untuk mengembalikan transaksi. Namun, manajer sumber daya tidak dapat mengembalikan transaksi setelah memanggil ZwPrepareComplete.
Tahap Komitmen
Fase penerapan (juga dikenal sebagai fase dua) dari operasi penerapan dimulai ketika KTM mengirim pemberitahuan TRANSACTION_NOTIFY_COMMIT ke semua manajer sumber daya. KTM mengirimkan pemberitahuan ini setelah TRANSACTION_NOTIFY_PREPARE jika tidak ada manajer sumber daya yang mendukung komitmen fase tunggal atau jika manajer transaksi superior memanggil ZwCommitEnlistment.
Saat setiap manajer sumber daya menerima pemberitahuan TRANSACTION_NOTIFY_COMMIT, manajer sumber daya harus melakukan hal berikut:
Buat semua perubahan data permanen dan publik (yaitu, terlihat oleh transaksi lain).
Biasanya, manajer sumber daya membuat perubahan permanen dan publik dengan menyalin data transaksi yang disimpan dari aliran log ke penyimpanan publik dan permanen database. Untuk informasi selengkapnya tentang cara menggunakan aliran log, lihat Menggunakan Aliran Log dengan KTM.
Panggil ZwCommitComplete.
Setelah manajer sumber daya memanggil ZwCommitComplete, manajer sumber daya harus memanggil ZwClose untuk menutup handel pendaftaran.
Jika manajer sumber daya mengalami kesalahan saat memproses pemberitahuan TRANSACTION_NOTIFY_COMMIT, ia harus menutup operasinya. Saat berikutnya sistem operasi memuat ulang resource manager, proses pemulihan resource manager harus memulihkan transaksi ke keadaan yang diketahui baik sebelum kesalahan terjadi.