Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 13217|Відповідь: 1

Проблеми ідемпотентності інтерфейсу

[Копіювати посилання]
Опубліковано 04.12.2018 13:29:37 | | |
【Опис проблеми】
Коли користувачі користуються додатком, сторінка дуже застрягає, і вони клікають випадково, оскільки інтерфейс не робить повторні надсилання, у сервісному рівні буде кілька однакових запитів: один потік не вставляється як завершений, а інший — порожній. Тож я також вставив одну. Спочатку у всіх була одна, але у продавця було три, що призводило до помилок бізнес-логіки. Для обробки шкідливих подань це може здійснюватися на фронтенді, а також існують зрілі рішення у бек-енді.

【Solution】1. Використовуйте обмеження на унікальність для розв'язання проблеми ідемпотентності транзакцій, встановлюйте обмеження унікальності, і якщо існує сценарій повторних комітів, винятки з обмежень унікальності будуть кинуті на рівні бази даних, і бізнес-логіка не буде знищена. Обмеження на унікальність композиції кількох полів також є прийнятними.
Вхід за гіперпосиланням видно.

Вищезазначене призначене для створення налаштувань проти дублювання на рівні бази даних.

2. Реалізувати налаштування проти дублювання на рівні коду. Часто кажуть, що обмеження на унікальність бази даних впливає на ефективність вставки даних, оскільки кожна вставка вимагає оцінки на рівні бази даних. Отже, судячи з рівня коду, на рівні коду загальна практика — спочатку вибирати, а потім вставляти, але якщо є сценарій високої паралелності, повторювані коміти все одно відбуваються. Ви можете додати синхронізоване до логічного коду, щоб у сценаріях з високим рівнем часу спочатку вибрати, а потім вставити — діяти. Але ефективність не висока, і паралель стає послідовною. Можна використовувати механізм замка DCL. (Чи помітили ви, що метод створення одного об'єкта в режимі копіювання дуже схожий — спочатку оцінюйте, чи існує об'єкт, якщо його немає — створіть його, інакше не створюйте), природний механізм блокування DCL є ефективнішим.

#分布式锁
Для вирішення проблеми також можна використовувати розподілені замки, які часто застосовують Redis та Zookeeper. У цьому розділі пояснюється, як реалізувати розподілені блокування за допомогою Redis.
У Redis є операція setNx: якщо її немає, це встановлене значення, і повертається 1. Якщо він існує, він не встановлюється і повертає 0.
Використовуючи функцію однопоточності Redis, сцена з високою паралелізацією перетворюється на серіал через чергу повідомлень.
Однак у розподілених замках є свої недоліки, тому потрібно бути уважним.
Вхід за гіперпосиланням видно.
3. Механізм MVCC?

3.1 Що таке механізм MVCC?
MVCC — це багатоверсійний механізм керування конкурентністю.

3.2 Які проблеми можна вирішити?
Механізм блокування може керувати одночасними операціями, але накладні витрати на систему значні, і MVCC у більшості випадків може замінити блокування рівня рядів, що зменшує накладні витрати системи та покращує продуктивність.

Вхід за гіперпосиланням видно.

4. Існує також проблема ідемпотентності у повідомленнях

Наприклад, як запобігти повторному споживанню повідомлень?

У повідомленому проміжному програмному забезпеченні в MQ це потрібно розуміти і розуміти.




Попередній:Перукарство. Вивчіть перукарство, заходьте і подивіться
Наступний:Відео про батьківську історію Аудіо про батьківство Історія про батьківство Книга з картинками Колекція знань про батьківство
 Орендодавець| Опубліковано 17.03.2021 10:27:09 |
ПовноваженняУ програмуванні ідемпотентна операція характеризується тим, що її довільні множинні виконання мають такий самий ефект, як і одне виконання.
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com