Pico del principio y ejecución

¿Cuál es el pico

 

escenas pico por lo general llevan a cabo una serie de actividades en el sitio web de negocios de electricidad o de los votos de fiesta encuentros de agarre en la página web 12306. Desde hace algún sitio web del proveedor de electricidad escasa o especiales, el sitio web de General Electric será ventas limitado a la hora señalada, debido a la naturaleza especial de estos productos, atraerá a muchos clientes vienen a comprar, y lo hará al mismo tiempo en el punto acordado en el tiempo páginas pico punta.

sistema de pico cuenta con escenas

  • Un gran número de usuarios tiene lugar al mismo tiempo pico de compra al mismo tiempo, el sitio aumento de tráfico instantáneo.
  • Spike es generalmente mucho mayor que el número de acceso solicita el número de inventario, sólo unos pocos usuarios del éxito pico.
  • Pico de procesos de negocio es relativamente simple, el general está bajo las órdenes de reducción de inventario.

pico Análisis de Negocios

  1. flujo normal del comercio electrónico

    (1) Producto consulta; (2) crear órdenes; (3) la deducción de inventario; (4) actualizar la orden; (5) Pago; (6) el vendedor envía

  2. negocio pico característico

    (1) bajo precio; (2) una promoción significativa; (3) vendido instantáneamente; (4) es generalmente una estantes de temporización; (5) veces cortos, alta concurrencia instantánea;

 

diseño de la arquitectura pico

La limitación: Teniendo en cuenta que sólo un pequeño número de usuarios a pico de éxito, por lo que la mayor parte de las restricciones de tráfico, permitiendo que sólo una pequeña parte del flujo en el servicio de back-end.

Clipping: sistema de pico de afluencia instantánea de un gran número de usuarios han, por lo que empezar habrá una carrera para comprar alto pico instantáneo. sistema de flujo máximo es abrumado razón muy importante, por lo que tan alto flujo se convierte instantáneamente en la fluidez con el tiempo es también muy importantes sistema de ideas de diseño de aguja. Un método implementado usando un tampón convencional se recortan y mensajería tecnología middleware.

el procesamiento asincrónico: sistema de pico es un sistema altamente concurrentes, el uso del modo de procesamiento asincrónico puede mejorar en gran medida la concurrencia sistema, de hecho, es una implementación del procesamiento asíncrono de recorte.

La memoria caché: el mayor cuello de botella en el sistema son generalmente pico de la base de datos de lectura y escritura, ya que el disco de base de datos de lectura y escritura pertenece a IO, de bajo rendimiento, si podemos poner algunos datos o lógica de negocio en la memoria caché, el rendimiento se verá muy mejorado.

Puede ampliar: Por supuesto, si queremos apoyar a más usuarios y una mayor concurrencia, será el mejor sistema está diseñado para expandir elásticamente, si el tráfico viene, ampliar la máquina muy bien. Se aumentará cuando un gran número de máquinas para hacer frente alta transacción como Taobao, Jingdong doble once actividades.

Soluciones de infraestructura

Arquitectura del Sistema General de pico

Escribir imágenes describen aquí

 

Los desafíos técnicos pico

Supongamos que un sitio web acaba de lanzar una actividad pico de materias primas, se espera que atraiga a 10.000 personas para participar en las actividades, también dijo que el número máximo de solicitudes simultáneas es 10000, los desafíos técnicos que enfrentan las necesidades del sistema a tener un pico

  1. Impacto en el sitio web de negocio existente

    actividad pico es sólo un sitio web adicional campaña de marketing, este evento tiene un corto tiempo, el acceso simultáneo a una gran cantidad de características, si juntos, inevitablemente impacto en lugar de despliegue negocio y de aplicaciones heredadas existentes, el más mínimo error podría hacer que todo el sitio parálisis.

    解决方案:将秒杀系统独立部署,甚至使用独立域名,使其与网站完全隔离。

     

  2. Aplicación, la carga de base de datos bajo alta concurrencia

    Usuarios pico antes del inicio, constantemente actualizar la página del navegador para asegurarse de que la espiga no se pierda, si estas solicitudes de acuerdo con la arquitectura general de las aplicaciones web, el acceso al servidor de aplicaciones, conecte a la base de datos, servidor de aplicaciones y el servidor de base de datos hará que la presión de carga.

    解决方案:重新设计秒杀商品页面,不使用网站原来的商品详细页面,页面内容静态化,用户请求不需要经过应用服务。

     

  3. aumento repentino de ancho de banda de red y el servidor

    Suponiendo que el tamaño de página de los productos básicos 200K (tamaño de imagen sobre todo el comercio), entonces necesita el ancho de banda de la red y del servidor 2G (200K × 10000), el ancho de banda de red, ya que la nueva actividad pico sobre el sitio por lo general utiliza el ancho de banda.

    解决方案:因为秒杀新增的网络带宽,必须和运营商重新购买或者租借。为了减轻网站服务器的压力,需要将秒杀商品页面缓存在CDN,同样需要和CDN服务商临时租借新增的出口带宽。

     

  4. Las órdenes directas

    Las reglas del juego es para clavar un clavo para comenzar la siguiente órdenes de compra de los productos básicos antes de este punto en el tiempo, una información del producto explorar, no órdenes. La única página es una URL normal, si obtener esta URL, no se puede iniciar hasta que el siguiente single pico hacia arriba.

    解决方案:为了避免用户直接访问下单页面URL,需要将改URL动态化,即使秒杀系统的开发者也无法在秒杀开始前访问下单页面的URL。办法是在下单页面URL加入由服务器端生成的随机数作为参数,在秒杀开始的时候才能得到。

     

  5. ¿Cómo controlar el botón de página de compra de mercancía pico se ilumina

    Comprar botón sólo se ilumina cuando el pico principio, antes de que esto es gris. Si se genera dinámicamente a la página, por supuesto, la salida de la respuesta de página en la configuración del servidor, el botón de control está encendido o gris, pero a fin de reducir lado del servidor presión de carga, una mejor utilización de la CDN, y otra optimización del rendimiento de medios proxy inverso, las página está diseñada para ser páginas estáticas, CDN caché, el servidor proxy inverso, o incluso en el navegador del usuario. Cuando el inicio pico, el usuario actualiza la página, la solicitud no llegará al servidor de aplicaciones.

    解决方案:使用JavaScript脚本控制,在秒杀商品静态页面中加入一个JavaScript文件引用,该JavaScript文件中包含 秒杀开始标志为否;当秒杀开始的时候生成一个新的JavaScript文件(文件名保持不变,只是内容不一样),更新秒杀开始标志为是,加入下单页面的URL及随机数参数(这个随机数只会产生一个,即所有人看到的URL都是同一个,服务器端可以用redis这种分布式缓存服务器来保存随机数),并被用户浏览器加载,控制秒杀商品页面的展示。这个JavaScript文件的加载可以加上随机版本号(例如xx.js?v=32353823),这样就不会被浏览器、CDN和反向代理服务器缓存。
    
    这个JavaScript文件非常小,即使每次浏览器刷新都访问JavaScript文件服务器也不会对服务器集群和网络带宽造成太大压力。

     

  6. Cómo permitir sólo la primera presentación de la orden se envía al subsistema de orden

    Porque en última instancia el éxito de los productos básicos pico a un solo usuario, es necesario cuando el usuario envía el fin de comprobar si el pedido ha sido enviado. Si ya ha enviado correctamente una orden, es necesario actualizar el archivo JavaScript, indicador de inicio de actualización hay pico, botón de compra aparece en gris. De hecho, ya que el usuario final puede presentar con éxito un fin único, con el fin de reducir la presión de carga del servidor en una sola página se puede controlar la entrada en la página siguiente sencillo, los usuarios pueden entrar sólo unos pocos de una sola página, otros usuarios pueden ir directamente al pico al final de la página.

    解决方案:假设下单服务器集群有10台服务器,每台服务器只接受最多10个下单请求。在还没有人提交订单成功之前,如果一台服务器已经有十单了,而有的一单都没处理,可能出现的用户体验不佳的场景是用户第一次点击购买按钮进入已结束页面,再刷新一下页面,有可能被一单都没有处理的服务器处理,进入了填写订单的页面,可以考虑通过cookie的方式来应对,符合一致性原则。当然可以采用最少连接的负载均衡算法,出现上述情况的概率大大降低。

     

  7. Cómo hacer un pedido previa a la inspección

    controles de servidor único nativos procesados ​​número de solicitud individual:

            1) Si hay más de 10, han sido devueltos directamente al final de la página para el usuario;

            2) Si usted no es mayor de 10, el usuario puede entrar en la página de confirmación y rellene el formulario de pedido;

 

         Compruebe el número total de pedidos se han presentado:

           1) ha excedido el número total de las mercancías Spike, devuelve la página al usuario final;

           2) pico no exceda el número total de elementos presentados al sistema de sub-orden;

    8. El momento de la espiga se añade típicamente a

       Esta función se consigue de muchas maneras. Pero ahora es una mejor manera: Conjunto de avance del producto se añadió a tiempo, el usuario puede ver la mercancía en el primer plano, pero no puede hacer clic en el botón "Cómpralo ya!'. Pero la necesidad de tener en cuenta es que 有人可以绕过前端的限制,直接通过URL的方式发起购买, lo que requiere las páginas de back-end de productos de base de datos en la recepción, así como la página de errores, cada sincronización de reloj. En el control de back-end, mayor es la seguridad.

El pico de tiempo, entonces debe evitar los vendedores de edición trae impacto inesperado sobre el producto antes de la espiga. Este cambio en particular que necesita la evaluación. prohibición de edición general, los cambios adicionales pueden tomar más proceso de revisión de datos.

  1. Menos operaciones de inventario

    Hay dos opciones, una es 拍下减库存 la otra es 付款减库存, que se utiliza actualmente en “拍下减库存”una forma que capturó la cosa momento, la experiencia del usuario será mejor.

  2. Inventario traerá "sobreventa" problema: más que el número de inventario vendido

    Como el problema de inventario de actualización simultánea, lo que resulta en el caso de inventario físico ha sido insuficiente, y las existencias son todavía bajo reducida, lo que lleva a los vendedores de bienes vendidos se espera que supere el número de piezas pico. programa:采用乐观锁

    update auction_auctions set
    
    quantity = #inQuantity#
    
    where auction_id = #itemId# and quantity = #dbQuantity#

    Otra forma sería mejor, llamado el intento de deducción de inventarios, la deducción de las acciones con éxito estará bajo una sola lógica

    update auction_auctions set
    
    quantity = quantity-#count#
    
    where auction_id = #itemId# and quantity >= #count#

    El acuerdo de espiga con

    Típicamente bajo un único pico y rápidamente más tarde, se puede cribar de acuerdo con una parte de la registro de compra. El método se puede conseguir mediante un cierto código de verificación, que requiere un código de comprobación de seguridad suficiente, no grietas, los métodos utilizados son: 秒杀专用验证码,电视公布验证码,秒杀答题.

    ideas de diseño

    El sistema de solicitud de interceptor en el sentido ascendente, bajando aguas abajo de presión : Sistema de pico se caracteriza por una gran cantidad de concurrencia, pero el aumento real en el número de solicitudes han tenido éxito, por lo que si la intervención no es probable que cause la base de datos front-end para leer y conflictos de bloqueo de escritura, e incluso conducir a un punto muerto, la última petición Tiempo de espera agotado. 
    pleno uso de almacenamiento en caché : el almacenamiento en caché puede mejorar en gran medida el sistema con velocidades de lectura y escritura. 
    Las colas de mensajes : una cola de mensajes pueden ser pico recorte, se interceptar un gran número de solicitudes simultáneas, este es un proceso asíncrono, de acuerdo con su capacidad de manejo de tráfico de fondo a partir de la cola de mensajes del servicio de tracción mensaje de petición de procesamiento activo.

    Front-end de soluciones

    Browser (JS):

    Las páginas estáticas: todos pueden ser elementos estáticos en la página del evento de todos los elementos estáticos y dinámicos para reducir al mínimo. Para resistir el pico por CDN. 
    no volver a presentarse a: botón de envío después de que el usuario gris y volver a ejecutar la prohíben 
    a los usuarios limitar: En sólo permiten a los usuarios enviar una solicitud de un cierto período de tiempo, como reductor de flujo IP puede tomar

    programa de back-end

    La capa de controlador de servidor (capa Gateway)

    UID límite (identificación de usuario) la frecuencia de acceso : por encima de Estados Unidos bloqueó el acceso a la solicitud del navegador, pero para algunos plug-ins u otros ataques maliciosos, la capa de control del lado del servidor con una necesidad de un acceso fluido, limitamos la frecuencia de acceso.

      módulo de solicitud de límite de nginx

      ngx_http_limit_conn_module 

限制连接数模块

通常用来限制同一IP地址的可并发连接数

指令说明:http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html

需要注意的是$binary_remote_addr而不是$remote_addr,$remote_addr的长度为7到15个字节,它的会话信息的长度为32或64 bytes,$binary_remote_addr的长度为4字节,会话信息的长度为32字节,这样设置1M的一个zone时,用$binary_remote_addr方式,该zone将会存放32000个会话。

     ngx_http_limit_req_module

限制请求数模块

通常用来限制同一IP地址单位时间可完成的请求数,限制的方法是采用漏桶算法(Leaky Bucket),每秒处理固定请求数量,推迟过多请求,超过桶的阀值,请求直接终止返回503。

指令说明:http://nginx.org/en/docs/http/ngx_http_limit_req_module.html

   rama basada en Nginx de Tengine ngx_http_limit_req_module

nginx类似,不过支持多个变量,并且支持多个limit_req_zone及forbid_action的设置。

指令说明:http://tengine.taobao.org/document_cn/http_limit_req_cn.html

   rama basada en nginx Ngx_http_limit_req_module de Senginx

指令说明:http://www.senginx.org/cn/index.php/%E5%9F%BA%E4%BA%8E%E6%9D%A1%E4%BB%B6%E7%9A%84%E9%99%90%E9%80%9F%E5%8A%9F%E8%83%BD

称之为基于条件的限速功能,在Tenginer的limit_req模块基础上,增加condition参数,在条件为真时执行限制动作。

   rama basada en nginx Ngx_http_ip_behavior de Senginx

指令说明:http://www.senginx.org/cn/index.php/%E8%AE%BF%E9%97%AE%E8%A1%8C%E4%B8%BA%E8%AF%86%E5%88%AB%E6%A8%A1%E5%9D%97

称之为行为识别模块,访问行为识别模块的作用是对用户访问网站的行为进行监控

   ngx_http_robot_mitigation rama Senginx base de nginx

指令说明:http://www.senginx.org/cn/index.php/Robot_Mitigation%E6%A8%A1%E5%9D%97

称之为HTTP机器人缓解,Robot Mitigation模块采用了一种基于“挑战”的验证方法,即向客户端发送特定的、浏览器能解析的应答,如果客户端是真实的浏览器,则会重新触发请求, 并带有一个特定的Cookie值,Robot Mitigation模块会依据此Cookie的信息来决定是否放行此请求。

       capa de servicio

Las intersecciones anteriores sólo una parte de la solicitud de acceso, cuando el número de usuarios es grande pico, incluso si cada usuario tiene una sola solicitud a la capa de servicio sigue siendo muy gran número de solicitudes. Por ejemplo, tenemos 100 conjuntos de 100W usuarios para agarrar simultáneamente el teléfono, la capa de servicios concurrentes solicitudes presión de al menos 100W.

      1, la necesidad de una importante mercancía espiga y la información de inventario para inicializar los Redis caché

      2, hacer comprobar la legalidad de la solicitud (por ejemplo, si para iniciar la sesión), correspondiente indicador de si la solicitud es ilegal, un código de error se devuelve directamente a la parte delantera, eran

      3, la determinación de la memoria de identificación (true pico ha terminado, no termina pico a falso), si la identificación de memoria es verdadero, se devuelve directamente al final de la espiga

      . 4, decr de operación stock pre-resta, se determina si la cantidad de la acción es de menos de 0 decr, poner el indicador de memoria se establece en true (spike ha terminado), el extremo de la espiga y la espalda

      5, se determina si la espiga para evitar que el pico se repite, punto si se repite la espiga, los códigos de error directamente repiten

      6, se envía al mensaje MQ pico a los extremos correspondientes de procesamiento de servicio y vuelve a la cola del cliente, si el cliente recibe una cola de mensajes, la consulta de sondeo de forma automática, hasta que el éxito o el fracaso vuelve pico hasta que el pico

      7, el correspondiente procesamiento de negocios del extremo: la relación real de la parte comercial de la espiga, verificar (por ejemplo, si el extremo de la espiga, la adecuación de inventario, etc.) de nuevo, y el identificador de usuario de los bienes almacenados en Redis como una clave para identificar al usuario del éxito pico de los productos básicos (paso 5 anterior será utilizado), reducir el inventario, generar órdenes de pico, pico de retorno éxito

           Nota: Incluso si la solicitud llega al final de este proceso el verdadero negocio, también es posible falla pico, tales como fines de pico, la falta de inventario, verdadero fracaso reducción del inventario, no logró generar un único pico y así sucesivamente, si no, se devuelve al final de la espiga

Optimización: Las pieles de interfaz de pico : pico usuario hace clic en el botón cuando el identificador de usuario en caché para generar una cadena de cifrado única bajo y devuelve al cliente, y luego de nuevo cuando las solicitudes de los clientes vienen con una cadena de encriptación, comprobación de back-end si legal, si no es legal, solicitud directa para volver ilegal;

           Una interfaz con frecuencia limitan el acceso : Se puede usar interceptores con anotaciones personalizadas para lograr, se puede hacer la separación de las operaciones concretas de modo y para reducir la invasión, también es muy fácil de usar
 

capa de base de datos


capa de base de datos es la capa más vulnerables, diseño de la aplicación, en general, cuando es necesario solicitar la interceptación aguas arriba fuera, el oso capa de base de datos sólo las solicitudes de acceso "en el rango de capacidad". Por lo tanto, mediante la introducción de las colas y tampones anteriores en la capa de servicio, de modo que la parte inferior de la base de datos de la paz de la mente

Para evitar la aparición de un mayor pico negativo que el número de pedidos para el inventario de bienes, por lo que la reducción real del inventario, el inventario cuando se debe agregar la actualización de ubicación de las existencias> 0, y la necesidad de vaciar en la tabla Pedidos además de un único identificador de usuario y producto identificador de índice de articulación
 

Publicado 72 artículos originales · ganado elogios 7 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/qq_39399966/article/details/105007927
Recomendado
Clasificación