Mati pucuk secara amnya bermaksud kaedah tersebut tidak mengubah status perniagaan, jadi ia boleh memastikan kesan panggilan berulang adalah sama dengan kesan panggilan tunggal.
Melihat pada huraian anda, tugas berjadual dan pemprosesan tak segerak anda berkemungkinan mengubah status perniagaan (seperti memasukkan data Berkemungkinan kaedah anda sendiri bukan a kuasa Tunggu. Jika ini berlaku, pada dasarnya tiada penyelesaian.
Saya rasa idea sebenar di sebalik soalan anda mungkin: Dalam persekitaran yang diedarkan, bagaimana untuk memastikan bahawa apabila menghantar permintaan berulang untuk tugas berjadual dan pemprosesan tak segerak, logik perniagaan sebenar dilaksanakan sahaja sekali?
Jika ya, anda boleh menggunakan storan terpusat (seperti redis) untuk menyimpan rekod permintaan pemanggil Selepas menerima permintaan, pelayan menggunakan pertanyaan atom dan menyimpan operasi (seperti perintah
setnx redis) , untuk memastikan bahawa hanya satu permintaan akan berjaya disimpan Ini boleh mencapai kesan hanya melaksanakan perniagaan sebenar sekali.
Saya tidak mempunyai sebarang pengalaman dalam bidang ini, tetapi pendekatan syarikat adalah menggunakan IP untuk membuat pertimbangan, dan hanya IP yang ditetapkan boleh melaksanakan tugas yang dijadualkan ini.
Berikut ialah fantasi peribadi tanpa pengalaman praktikal: Bina aplikasi awam khusus untuk mengendalikan tugas yang dijadualkan, dan kemudian sediakan antara muka mesej untuk aplikasi tertentu untuk dipanggil.
Anda boleh mempertimbangkan baris gilir mesej dengan mekanisme ack, seperti RabbitMQ, dsb., yang bukan sahaja memastikan tugasan hanya diberikan kepada seorang pekerja, tetapi juga memastikan integriti kejayaan tugasan
Kami mencapai ini melalui penjadualan zk Dalam persekitaran yang diedarkan, tugas hanya boleh dilaksanakan oleh satu mesin paling banyak ZK dapat merealisasikan fungsi ini dengan baik
Semua jawapan setakat ini adalah salah, termasuk yang diterima. Sebabnya ialah tugas berjadual atau pemprosesan tak segerak tiada kaitan dengan mati pucuk.
Mati pucuk secara amnya bermaksud kaedah tersebut tidak mengubah status perniagaan, jadi ia boleh memastikan kesan panggilan berulang adalah sama dengan kesan panggilan tunggal.
Melihat pada huraian anda, tugas berjadual dan pemprosesan tak segerak anda berkemungkinan mengubah status perniagaan (seperti memasukkan data Berkemungkinan kaedah anda sendiri bukan a kuasa Tunggu. Jika ini berlaku, pada dasarnya tiada penyelesaian.
Saya rasa idea sebenar di sebalik soalan anda mungkin: Dalam persekitaran yang diedarkan, bagaimana untuk memastikan bahawa apabila menghantar permintaan berulang untuk tugas berjadual dan pemprosesan tak segerak, logik perniagaan sebenar dilaksanakan sahaja sekali?
Jika ya, anda boleh menggunakan storan terpusat (seperti redis) untuk menyimpan rekod permintaan pemanggil Selepas menerima permintaan, pelayan menggunakan pertanyaan atom dan menyimpan operasi (seperti perintahsetnx redis) , untuk memastikan bahawa hanya satu permintaan akan berjaya disimpan Ini boleh mencapai kesan hanya melaksanakan perniagaan sebenar sekali.
Saya tidak mempunyai sebarang pengalaman dalam bidang ini, tetapi pendekatan syarikat adalah menggunakan IP untuk membuat pertimbangan, dan hanya IP yang ditetapkan boleh melaksanakan tugas yang dijadualkan ini.
Berikut ialah fantasi peribadi tanpa pengalaman praktikal:
Bina aplikasi awam khusus untuk mengendalikan tugas yang dijadualkan, dan kemudian sediakan antara muka mesej untuk aplikasi tertentu untuk dipanggil.
Gunakan transaksi untuk melaksanakannya, transaksi yang diedarkan atau baris gilir mesej
Jadikan operasi itu sendiri idempoten, seperti menukar operasi +1 kepada operasi =
Beri setiap operasi ID dan rekod setiap pelaksanaan Sebelum pelaksanaan, semak sama ada operasi dengan ID ini telah dilaksanakan sebelum ini
Anda boleh mempertimbangkan baris gilir mesej dengan mekanisme ack, seperti RabbitMQ, dsb., yang bukan sahaja memastikan tugasan hanya diberikan kepada seorang pekerja, tetapi juga memastikan integriti kejayaan tugasan
Kami mencapai ini melalui penjadualan zk Dalam persekitaran yang diedarkan, tugas hanya boleh dilaksanakan oleh satu mesin paling banyak ZK dapat merealisasikan fungsi ini dengan baik
Semua jawapan setakat ini adalah salah, termasuk yang diterima. Sebabnya ialah tugas berjadual atau pemprosesan tak segerak tiada kaitan dengan mati pucuk.
redis + token sudah memadai
Gunakan baris gilir setelah anda mengambilnya, ia hanya akan dilaksanakan sekali sahaja.