Deskripsi Masalah】 Saat pengguna menggunakan APP, halaman sangat macet, dan mereka akan mengklik secara acak, karena antarmuka tidak melakukan pengiriman berulang, akan ada beberapa permintaan yang identik, di lapisan layanan, satu utas tidak menyisipkan lengkap, dan pemeriksaan utas lainnya, kosong. Jadi saya juga memasukkannya. Awalnya, setiap orang memiliki satu, tetapi seorang penjual memiliki tiga, menghasilkan kesalahan logika bisnis. Untuk pemrosesan pengiriman berbahaya, dapat dilakukan di bagian front-end, dan juga dapat ada solusi yang matang di bagian back-end.
【Solusi】1. Gunakan batasan keunikan untuk memecahkan masalah idempotensi transaksi, tetapkan batasan keunikan, dan jika ada skenario penerapan berulang, pengecualian terhadap batasan keunikan akan dilemparkan ke tingkat database, dan logika bisnis tidak akan dihancurkan. Kendala keunikan pada komposisi beberapa bidang juga dapat diterima.
Login hyperlink terlihat.
Di atas adalah untuk membuat pengaturan anti-duplikat di tingkat database.
2. Wujudkan pengaturan anti-duplikasi di tingkat kode. Sering kali, dikatakan bahwa kendala keunikan database akan mempengaruhi efisiensi penyisipan data, karena setiap penyisipan membutuhkan penilaian di tingkat database. Oleh karena itu, dilihat dari tingkat kode, praktik umum di tingkat kode adalah memilih terlebih dahulu dan kemudian menyisipkan, tetapi jika ada skenario konkurensi yang tinggi, masih akan ada penerapan berulang. Anda dapat menambahkan disinkronkan ke kode logika, sehingga dalam skenario konkurensi tinggi, pilih terlebih dahulu lalu sisipkan akan diterapkan. Tetapi efisiensinya tidak tinggi, dan paralelnya menjadi serial. Mekanisme kunci DCL dapat digunakan. (Pernahkah Anda menemukan bahwa metode pembuatan satu objek dalam mode kasus penyalinan sangat mirip, pertama-tama menilai apakah objek itu ada, jika tidak ada, buatlah, jika tidak jangan buat), mekanisme kunci DCL alami lebih efisien.
#分布式锁 Kunci terdistribusi juga dapat digunakan untuk memecahkan masalah, yang biasa digunakan oleh Redis dan Zookeeper. Bagian ini menjelaskan cara menerapkan kunci terdistribusi menggunakan Redis. Ada operasi perintah setNx di Redis, jika tidak ada, itu adalah nilai yang ditetapkan, dan 1 dikembalikan. Jika ada, itu tidak ditetapkan, dan mengembalikan 0. Memanfaatkan fitur single-threading Redis, adegan konkurensi tinggi diubah menjadi serial melalui antrean pesan. Namun, ada jebakan dalam kunci terdistribusi, jadi Anda perlu memperhatikan.
Login hyperlink terlihat. 3. Mekanisme MVCC?
3.1 Apa itu mekanisme MVCC? MVCC adalah mekanisme kontrol konkurensi multi-versi.
3.2 Masalah apa yang bisa diselesaikan? Mekanisme penguncian dapat mengontrol operasi bersamaan, tetapi overhead sistemnya besar, dan MVCC dapat mengganti kunci tingkat baris dalam banyak kasus, yang dapat mengurangi overhead sistemnya dan meningkatkan kinerja.
Login hyperlink terlihat.
4. Ada juga masalah idempotensi dalam pesan
Misalnya, bagaimana cara mencegah konsumsi pesan berulang?
Dalam middleware pesan di MQ, ini harus dipahami dan dipahami.
|