Ini adalah urutan umum dari dua komponen terdistribusi dalam aplikasi Java kami:
1 A sends request to B
2 B starts some job J in parallel thread
3 B returns response to A
4 A accepts response
5 Job finishes after some time
6 Job sends information to A
7 A receives response from a Job and updates
Ini adalah skenario yang ideal, dengan asumsi semuanya berfungsi. Tentu saja, kehidupan nyata penuh dengan kegagalan. Misalnya, salah satu kasus terburuk mungkin jika #6
gagal hanya karena jaringan: pekerjaan telah dijalankan dengan benar, tetapi A
tidak tahu apa-apa tentang itu.
Saya mencari pendekatan ringan tentang cara mengelola kesalahan dalam sistem ini. Perhatikan bahwa kami memiliki banyak komponen, jadi mengelompokkannya hanya karena penanganan kesalahan tidak masuk akal. Selanjutnya, saya membuang penggunaan memori / repo yang didistribusikan yang akan diinstal lagi pada setiap komponen dengan alasan yang sama.
Pikiranku menuju ke arah memiliki satu keadaan absolut pada huruf B dan tidak pernah memiliki keadaan yang tetap pada huruf a A
. Ini berarti yang berikut:
- sebelum
#1
kita tandaiA
bahwa unit kerja yaitu perubahan akan segera dimulai - hanya
B
dapat menghapus tanda negara ini. A
dapat mengambil info tentangB
kapan saja, untuk memperbarui keadaan.- tidak ada perubahan baru pada unit yang sama dapat dipanggil
A
.
Bagaimana menurut anda? Apakah ada cara ringan untuk menjinakkan kesalahan dalam sistem semacam ini?