El término «sistemas distribuidos» se refiere a un grupo de varios componentes situados en varias máquinas que interactúan y coordinan acciones para que el usuario final lo vea como un solo sistema. Este artículo analizará en detalle el concepto de cómo podemos optimizar el rendimiento de los sistemas distribuidos.
Optimización del Rendimiento de Sistemas Distribuidos:
Los siguientes son los parámetros que se deben cuidar para optimizar el rendimiento en Sistemas Distribuidos:
- Atender múltiples requests simultáneamente: mientras un servidor espera un recurso momentáneamente no disponible, el problema principal es un retraso. Un servidor invoca una función remota que requiere muchos cálculos o tiene una latencia de transmisión significativa. Para evitar esto, los subprocesos múltiples pueden aceptar y procesar otras requests.
- Reducción de la carga de trabajo de los servidores por llamada: el rendimiento de un servidor puede verse afectado rápidamente por una gran cantidad de requests de clientes. Cada solicitud requiere una cantidad significativa de procesamiento por parte del servidor. Por lo tanto, mantenga las requests breves y reduzca al mínimo la cantidad de trabajo que un servidor tiene que hacer para cada solicitud. Utilice servidores que no estén vinculados a ningún estado, es decir, utilice servidores sin estado.
- Almacenamiento en caché de respuestas de procedimientos remotos idempotentes: si un servidor no puede manejar las requests de los clientes debido a la diferencia de ritmo entre ellos. Las requests llegan a una velocidad superior a la que el servidor puede abordar. Como resultado, comienza a acumularse una acumulación debido a las requests de los clientes no atendidas al mismo ritmo. Entonces, en este caso, el servidor usa su caché de respuesta para enviar la respuesta.
- Los valores de tiempo de espera deben elegirse cuidadosamente: un tiempo de espera que es «demasiado pequeño» puede expirar con demasiada frecuencia, lo que resulta en retransmisiones innecesarias. Si realmente se pierde la comunicación, una configuración de tiempo de espera «demasiado grande» provocará un retraso innecesariamente largo.
- Diseño apropiado de las especificaciones del protocolo RPC: las especificaciones del protocolo deben estar bien diseñadas para reducir la cantidad de transferencia de datos a través de la red y también la tasa (frecuencia) con la que se envían.
- Uso de LRPC (llamada a procedimiento remoto ligero) para mensajería entre dominios: la función LRPC (llamada a procedimiento remoto ligero) se utiliza en los sistemas operativos de microkernel para proporcionar comunicación entre dominios (los procesos que llaman y llamados están en la misma máquina). Emplea los siguientes enfoques para mejorar el rendimiento de los sistemas antiguos que emplean Llamada a procedimiento remoto:
- Transferencia de control simple: en este enfoque, se utiliza un procedimiento de transferencia de control que se refiere a la ejecución del procedimiento solicitado por el subproceso del cliente en el dominio del servidor. Emplea la programación de transferencia en la que se produce un cambio de contexto directo desde el subproceso del cliente al subproceso del servidor. Antes de realizar la primera llamada al servidor, el cliente se vincula a su interfaz y, posteriormente, proporciona al servidor la pila de argumentos y su hilo de ejecución para atrapar el kernel. Ahora, el kernel verifica a la persona que llama y crea un enlace de llamada, y envía el hilo del cliente directamente al servidor, que a su vez activa el servidor para su ejecución. Después de completar el procedimiento llamado, el control y los resultados regresan a través del kernel desde donde se llama.
- Transferencia de datos simple: en este enfoque, se emplea una pila de argumentos compartidos para evitar la copia de datos duplicados. Compartido simplemente se refiere al uso tanto por parte del cliente como del servidor. Entonces, en LRPC, los mismos argumentos se copian solo una vez desde la pila del cliente a la pila de argumentos compartidos. Conduce a la rentabilidad ya que la transferencia de datos crea pocas copias de los datos cuando se mueve de un dominio a otro.
- Stub simple: debido a los mecanismos anteriores, la generación de stubs altamente optimizados es posible utilizando LRPC. El stub de llamada se asocia con el dominio del cliente y el stub de entrada se asocia con el dominio del servidor teniendo un stub de entrada en cada procedimiento. La interfaz LRPC para cada procedimiento sigue un protocolo de comunicación de tres capas:
- De extremo a extremo: la comunicación se lleva a cabo según lo definido por las convenciones de llamada
- stub to stub: requiere el uso de stubs
- dominio a dominio: requiere la implementación del kernel
- El beneficio de usar stubs LRPC es que el costo de la capa intermedia se reduce ya que hace que los límites sean borrosos. El único requisito en un LRPC simple es que se debe realizar una llamada de procedimiento formal al stub del cliente y una devolución desde el procedimiento del servidor y el stub del cliente.
- Diseño para la simultaneidad: para lograr un alto rendimiento en términos de alto rendimiento de llamadas y baja latencia de llamadas, se utilizan varios procesadores con memoria compartida. Además, el rendimiento se puede aumentar eliminando la contención de bloqueo innecesaria y reduciendo la utilización de estructuras de datos compartidos, mientras que la latencia se reduce al disminuir la sobrecarga del cambio de contexto. El rendimiento de factor por 3 se logra utilizando LRPC. El costo involucrado en la comunicación entre dominios también se reduce.
Publicación traducida automáticamente
Artículo escrito por annieahujaweb2020 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA