Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 13217|Respuesta: 1

Problemas de idempotencia de la interfaz

[Copiar enlace]
Publicado en 4/12/2018 13:29:37 | | |
【Descripción del problema】
Cuando los usuarios usan la APP, la página está muy atascada y harán clic aleatoriamente, porque la interfaz no realiza envíos repetidos, habrá varias solicitudes idénticas; en la capa de servicio, un hilo no inserta completo y el otro hilo se comprueba, vacío. Así que también inserté uno. Originalmente, todos tenían uno, pero un vendedor tenía tres, lo que resultaba en errores de lógica de negocio. Para el procesamiento de envíos maliciosos, puede hacerse en la parte frontal, y también puede haber soluciones maduras en la parte posterior.

【Solución】1. Utilizar restricciones de unicidad para resolver el problema de idempotencia de las transacciones, establecer restricciones de unicidad y, si hay un escenario de commits repetidos, se lanzarán excepciones a las restricciones de unicidad a nivel de base de datos y la lógica de negocio no se destruirá. También son aceptables restricciones de unicidad en la composición de múltiples campos.
El inicio de sesión del hipervínculo es visible.

Lo anterior es para establecer ajustes antiduplicado a nivel de base de datos.

2. Realizar ajustes anti-duplicación a nivel de código. Muchas veces se dice que la restricción de unicidad de la base de datos afectará la eficiencia de la inserción de datos, porque cada inserción requiere un juicio a nivel de base de datos. Por lo tanto, a juzgar por el nivel de código, la práctica común a nivel de código es seleccionar primero y luego insertar, pero si hay un escenario de alta concurrencia, seguirán habiendo commits repetidos. Puedes añadir sincronizado al código lógico, de modo que en escenarios de alta concurrencia, seleccionar primero y luego insertar hará efecto. Pero la eficiencia no es alta, y el paralelo se convierte en serial. Se puede usar un mecanismo de bloqueo DCL. (¿Has comprobado que el método para crear un solo objeto en modo de copia de caso es muy similar, primero juzga si el objeto existe, si no existe, créalo; si no, no lo crees?), el mecanismo natural de bloqueo DCL es más eficiente.

#分布式锁
También se pueden usar cerraduras distribuidas para resolver el problema, como se usan comúnmente por Redis y Zookeeper. Esta sección explica cómo implementar bloqueos distribuidos usando Redis.
Existe una operación de comandos setNx en Redis, si no existe, es un valor fijo, y se devuelve 1. Si existe, no se establece y devuelve 0.
Utilizando la función de hilo único de Redis, la escena de alta concurrencia se convierte en una serie a través de la cola de mensajes.
Sin embargo, hay inconvenientes en las cerraduras distribuidas, así que debes prestar atención.
El inicio de sesión del hipervínculo es visible.
3. ¿Mecanismo MVCC?

3.1 ¿Qué es el mecanismo MVCC?
MVCC es un mecanismo de control de concurrencia que abarca múltiples versiones.

3.2 ¿Qué problemas se pueden resolver?
El mecanismo de bloqueo puede controlar operaciones concurrentes, pero su sobrecarga del sistema es grande, y el MVCC puede reemplazar los bloqueos a nivel de fila en la mayoría de los casos, lo que puede reducir la sobrecarga del sistema y mejorar el rendimiento.

El inicio de sesión del hipervínculo es visible.

4. También existe un problema de idempotencia en los mensajes

Por ejemplo, ¿cómo evitar el consumo repetido de mensajes?

En el middleware de mensajes en MQ, estos deben entenderse y entenderse.




Anterior:Peluquería Aprende peluquería, ven y echa un vistazo
Próximo:Vídeo de historias de crianza Historia de crianza Audio Libro ilustrado de historias de crianza Colección de conocimientos sobre crianza
 Propietario| Publicado en 17/3/2021 10:27:09 |
PoderesEn programación, una operación idempotente se caracteriza por el hecho de que sus múltiples ejecuciones arbitrarias tienen el mismo efecto que una sola ejecución.
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com