Bagaimana untuk melaksanakan pemprosesan transaksi teragih dalam ThinkPHP6?

王林
Lepaskan: 2023-06-12 09:39:59
asal
1978 orang telah melayarinya

Dengan pembangunan Internet dan pengembangan berterusan senario aplikasi, keperluan untuk prestasi dan kebolehpercayaan sistem menjadi lebih tinggi dan lebih tinggi. Dalam senario perniagaan yang kompleks, berbilang perkhidmatan selalunya perlu diselesaikan secara kolaboratif, yang memerlukan transaksi yang diedarkan untuk diproses. Artikel ini akan memperkenalkan cara melaksanakan pemprosesan transaksi teragih dalam ThinkPHP6.

1. Konsep asas transaksi teragih

1. Urus niaga teragih

Sistem teragih merujuk kepada program dan sumber data pada berbilang komputer, yang dijalankan melalui rangkaian Sambung dan berkomunikasi , dan bekerjasama untuk menyelesaikan tugas. Dalam kes ini, jika berbilang transaksi perlu melibatkan berbilang sumber, penyelarasan transaksi teragih diperlukan. Urus niaga teragih merujuk kepada urus niaga yang diselesaikan secara kolaboratif oleh berbilang transaksi dan perlu memenuhi sifat ACID.

2. Atribut ACID

Dalam pangkalan data, ACID merujuk kepada empat sifat atomicity, konsistensi, pengasingan dan ketahanan.

Atomicity: Merujuk kepada fakta bahawa urus niaga ialah unit kerja yang tidak boleh dibahagikan, sama ada siap sepenuhnya atau tidak selesai sama sekali, dan tidak ada penyelesaian separa.

Ketekalan: merujuk kepada keadaan pangkalan data mesti kekal konsisten sebelum dan selepas urus niaga dilaksanakan Contohnya, dalam transaksi pemindahan, jumlah baki akaun kekal tidak berubah sebelum dan selepas pemindahan dilaksanakan.

Pengasingan: Apabila berbilang transaksi dilaksanakan secara selari, pelaksanaan satu transaksi tidak boleh diganggu oleh transaksi lain.

Ketahanan: bermakna setelah transaksi diserahkan, keputusannya hendaklah disimpan secara kekal dalam pangkalan data.

2. Pelaksanaan transaksi teragih dalam ThinkPHP6

1 Masalah dengan transaksi teragih

Dalam pangkalan data hubungan tradisional, pelaksanaan transaksi teragih memerlukan penggunaan dua Fasa Komit ( 2PC), tetapi kaedah ini mempunyai beberapa masalah, seperti titik kegagalan tunggal, kesesakan prestasi, dll. Oleh itu, dalam data besar dan senario aplikasi konkurensi tinggi, kaedah lain perlu digunakan untuk melaksanakan transaksi teragih.

2. Penyelesaian transaksi teragih

Untuk melaksanakan pemprosesan transaksi teragih dalam ThinkPHP6, anda boleh menggunakan perisian tengah seata sumber terbuka membahagikan aplikasi kepada tiga peranan, iaitu TC ( Transaction Coordinator), TM (Pengurus Urus Niaga) dan RM (Pengurus Sumber):

TC (Penyelaras Urus Niaga): Penyelaras Transaksi, bertanggungjawab untuk menyelaraskan sumber modul transaksi yang diedarkan dan mencapai konsistensi transaksi.

TM (Pengurus Urus Niaga): Pengurus urus niaga, bertanggungjawab untuk operasi berkaitan transaksi seperti pembukaan transaksi, penyerahan, pengembalian, dsb.

RM (Pengurus Sumber): Pengurus sumber, bertanggungjawab mengurus sumber, seperti operasi pangkalan data, operasi MQ, dsb.

3. Penggunaan seata

Sebelum menggunakan seata, anda perlu memasang dan mengkonfigurasi seata, termasuk mencipta TC, RM dan sumber lain. Selepas pemasangan dan konfigurasi selesai, anda boleh menggunakan seata untuk memproses transaksi yang diedarkan.

Dalam modul yang memerlukan transaksi teragih, anda perlu menambah konfigurasi berikut dalam application.properties:

  io.seata seata-all ${seata.version} 
Salin selepas log masuk

(3) Pada permulaan transaksi, dayakannya secara global

Pada permulaan transaksi, anda perlu mendayakannya secara global:

# 配置seata的全局事务ID生成器 seata.tx-service-group=my_group # type,AT表示AT模式,XA表示XA模式 seata.tx-type=AT # 自动代理数据源 seata.autoproxy.datasource=true
Salin selepas log masuk

(4) Menggunakan RM dalam transaksi

Apabila menggunakan RM dalam transaksi (seperti pangkalan data RDMS), anda perlu menggunakan ejen yang disediakan oleh seata , uruskan sumber:

// 开启全局事务 GlobalTransactionContext.begin(transactionName);
Salin selepas log masuk

(5) Pada akhir transaksi, lakukan komitmen global

Pada akhir transaksi, komitmen global diperlukan:

// 使用代理获取connection conn = ((DataSourceProxy) dataSource).getConnection();
Salin selepas log masuk

kerana seata akan Kandungan transaksi yang diedarkan terkandung dalam middleware, jadi apabila menggunakan seata, logik perniagaan dan pemprosesan transaksi yang diedarkan boleh diasingkan untuk memudahkan pengurusan dan penyelenggaraan.

3. Ringkasan

Artikel ini menggabungkan ThinkPHP6 dan middleware seata untuk memperkenalkan proses pemprosesan transaksi teragih dalam sistem teragih dan penggunaan perisian tengah seata. Dalam aplikasi sebenar, adalah perlu untuk memilih antara prestasi dan kebolehpercayaan mengikut senario perniagaan tertentu untuk pemprosesan transaksi teragih.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pemprosesan transaksi teragih dalam ThinkPHP6?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!