Menerapkan Resource Manager

Setiap sumber daya yang digunakan dalam transaksi dikelola oleh manajer sumber daya, yang tindakannya dikoordinasikan oleh manajer transaksi. Pengelola sumber daya bekerja sama dengan pengelola transaksi untuk memberikan aplikasi jaminan atomicitas dan isolasi. Microsoft SQL Server, antrian pesan yang tahan lama, tabel hash in-memory merupakan contoh dari manajer sumber daya.

Manajer sumber daya mengelola data yang tahan lama atau volatil. Durabilitas (atau sebaliknya volatilitas) manajer sumber daya mengacu pada apakah manajer sumber daya mendukung pemulihan kegagalan. Jika manajer sumber daya mendukung pemulihan dari kegagalan, manajer tersebut menyimpan data ke penyimpanan yang tahan lama selama Fase1 (persiapan) sehingga jika terjadi kegagalan, manajer dapat mendaftarkan kembali diri ke dalam transaksi setelah pemulihan dan melakukan tindakan yang tepat berdasarkan pemberitahuan yang diterima dari manajer transaksi. Secara umum, manajer sumber daya volatil mengelola sumber daya volatil seperti struktur data dalam memori (misalnya, hashtable transaksional dalam memori), sedangkan manajer sumber daya tahan lama mengelola sumber daya yang memiliki penyimpanan yang lebih persisten (misalnya, database yang penyimpanannya berada di atas disk).

Agar sumber daya dapat berpartisipasi dalam transaksi, sumber daya harus mendaftar dalam transaksi. Kelas Transaction mendefinisikan sekumpulan metode yang namanya dimulai dengan Enlist yang menyediakan fungsionalitas ini. Metode yang berbeda Enlist sesuai dengan berbagai jenis pendaftaran yang mungkin dimiliki oleh manajer sumber daya. Secara khusus, Anda menggunakan EnlistVolatile metode untuk sumber daya volatil, dan EnlistDurable metode untuk sumber daya tahan lama. Untuk kesederhanaan, setelah memutuskan apakah akan menggunakan metode EnlistDurable atau EnlistVolatile berdasarkan dukungan durabilitas sumber daya Anda, Anda harus mendaftarkan sumber daya Anda untuk berpartisipasi dalam Two Phase Commit (2PC) dengan menerapkan antarmuka IEnlistmentNotification untuk manajer sumber daya Anda. Untuk informasi selengkapnya tentang 2PC, lihat Melakukan Transaksi dalam Single-Phase dan Multi-Fase.

Dengan mendaftar, resource manager memastikan bahwa ia menerima panggilan balik dari manajer transaksi ketika transaksi disetujui atau dibatalkan. Ada satu unit IEnlistmentNotification per pencatatan. Biasanya, ada satu pendaftaran per transaksi, tetapi manajer sumber daya dapat memilih untuk mendaftar beberapa kali dalam transaksi yang sama.

Setelah pendaftaran, resource manager merespons permintaan transaksi. Manajer sumber daya yang tahan lama menyimpan informasi yang cukup untuk memungkinkannya membatalkan atau mengulangi pekerjaan transaksi pada sumber daya yang dikelolanya. Ada banyak cara untuk melakukan ini; menyimpan versi data atau menyimpan log perubahan adalah dua teknik umum.

Ketika aplikasi melakukan transaksi, manajer transaksi memulai protokol penerapan dua fase. Manajer transaksi pertama-tama bertanya kepada setiap manajer sumber daya yang terdaftar jika siap untuk melakukan transaksi. Manajer sumber daya harus bersiap untuk melakukan komitmen — ia menyiapkan dirinya untuk melakukan atau membatalkan transaksi.

Selama fase persiapan, manajer sumber daya tahan lama mencatat data lama dan baru dalam penyimpanan yang stabil sehingga manajer sumber daya dapat memulihkannya bahkan jika sistem gagal. Jika manajer sumber daya dapat mempersiapkan, manajer transaksi akan menginformasikan suaranya kepada manajer transaksi tentang apakah akan melakukan atau membatalkan transaksi. Jika ada manajer sumber daya yang melaporkan kegagalan mempersiapkan, manajer transaksi mengirimkan perintah putar kembali ke setiap manajer sumber daya dan memberitahukan kegagalan komit ke aplikasi.

Setelah disiapkan, manajer sumber daya harus menunggu hingga mendapatkan panggilan balik commit atau pembatalan dari manajer transaksi pada fase kedua. Biasanya, seluruh protokol persiapan dan penerapan selesai dalam hitungan detik. Jika ada kegagalan sistem atau komunikasi, pemberitahuan penerapan atau batalkan mungkin tidak tiba selama beberapa menit atau jam. Selama periode ini, manajer sumber daya ragu tentang hasil transaksi. Tidak tahu apakah transaksi yang dilakukan atau dibatalkan. Ketika manajer sumber daya meragukan suatu transaksi, ia menjaga data yang telah dimodifikasi dengan mengunci transaksi, sehingga perubahan ini terisolasi dari transaksi lainnya.

Ketika manajer sumber daya gagal, semua transaksi yang telah didaftar dibatalkan kecuali transaksi yang disiapkan atau dikonfirmasi sebelum kegagalan. Ketika manajer sumber daya tahan lama dimulai ulang, ia merekonstruksi status yang telah dikomitmenkan dari sumber daya yang dikelolanya dengan mengambil informasi persiapan transaksi yang ditulis dalam fase persiapan transaksi, dan mengkomitmenkan atau membatalkan transaksi ini sesuai.

Singkatnya, protokol penerapan dua fase dan manajer sumber daya digabungkan untuk membuat transaksi atomik dan tahan lama.

Kelas Transaction juga menyediakan metode EnlistPromotableSinglePhase untuk mendaftarkan Promotable Single Phase Enlistment (PSPE). Ini memungkinkan manajer sumber daya tahan lama (RM) untuk menghosting dan "memiliki" transaksi yang nantinya dapat dieskalasikan untuk dikelola oleh MSDTC jika perlu. Untuk informasi selengkapnya tentang ini, lihat Pengoptimalan menggunakan Komit Fase Tunggal dan Pemberitahuan Fase Tunggal yang Dapat Dipromosikan.

Pada bagian ini

Langkah-langkah yang biasanya diambil oleh manajer sumber daya diuraikan dalam topik berikut.

Mendaftarkan Sumber Daya sebagai Peserta dalam Transaksi

Menjelaskan bagaimana sumber daya tahan lama atau volatil dapat mendaftar dalam transaksi.

Melakukan Transaksi dalam Single-Phase dan Multi-Fase

Menjelaskan bagaimana manajer sumber daya merespons pemberitahuan penerapan dan menyiapkan penerapan.

Melakukan Pemulihan

Menjelaskan bagaimana manajer sumber daya tahan lama pulih dari kegagalan.

Tingkat Kepercayaan Keamanan dalam Mengakses Sumber Daya

Menjelaskan bagaimana tiga tingkat kepercayaan dalam System.Transactions membatasi akses ke jenis-jenis sumber daya yang diungkap oleh System.Transactions.

Pengoptimalan menggunakan Fase Tunggal Komit dan Pemberitahuan Fase Tunggal yang Dapat Dipromosikan

Menjelaskan praktik pengoptimalan yang tersedia untuk implementasi manajer sumber daya.