Tabla de contenido
PalancaPrefacio
Los componentes del sistema son los componentes básicos del diseño del sistema y se pueden combinar para construir sistemas de software complejos. Aquí también revisaremos los conceptos básicos del diseño de sistemas. El diseño de sistemas es un vínculo importante en la ingeniería de software, que involucra la arquitectura y el diseño generales del sistema de software. Un buen diseño de sistema puede hacer que los sistemas de software sean más confiables, escalables y fáciles de mantener.
Por supuesto, si desea utilizar estos componentes para diseñar un sistema, primero debe comprender qué componentes de diseño existen. ¿Qué representa cada elemento de diseño? Este artículo presentará cada componente del sistema y los siguientes capítulos explicarán los detalles y aplicaciones de cada componente en detalle.
¿Por qué utilizar componentes del sistema?
Por lo general, los problemas de diseño del sistema tendrán algunas similitudes, pero los detalles suelen ser diferentes. Por lo tanto, utilizamos componentes del sistema para abordar las similitudes entre estos problemas de diseño entre sistemas. Por ejemplo, un equilibrador de carga es un componente común del sistema. Si encuentra una situación en la que se requiere equilibrio de carga, simplemente utilice este componente directamente.
La razón para separar los componentes del sistema mediante la modularización es que "solo necesitamos discutir sus funciones y no necesitamos discutir su implementación". Este es también el concepto de "abstracción" mencionado en el capítulo anterior. Esto también tiene otra ventaja. Cuando el entrevistador quiere que optimicemos una determinada parte, solo necesitamos explicar cómo optimizar componentes específicos del sistema sin considerar otros componentes del sistema.
Los componentes comunes del sistema en el diseño del sistema también se pueden utilizar en servicios de nube pública conocidos, como Amazon Web Services (AWS), Azure y Google Cloud Platform (GCP). Los conocidos servicios en la nube mencionados anteriormente suelen proporcionar los componentes del sistema correspondientes para que los utilicen los usuarios.
Bloque de construcción del componente de diseño del sistema
En el diseño de sistemas, los componentes del sistema son muy importantes. Además de estimar los recursos y el rendimiento necesarios para el diseño del sistema, lo más importante en el proceso de diseño de un sistema es cómo construir un sistema de software a través de los componentes de diseño del sistema existentes. Aquí también se incluye una introducción a varios componentes del sistema. En artículos futuros, estos componentes del sistema se presentarán en detalle.
Sistema de nombres de dominio (DNS)
El componente del sistema Sistema de nombres de dominio (DNS) se centra en cómo diseñar un sistema de nombres jerárquico y descentralizado para computadoras conectadas a Internet a través de diferentes protocolos de Internet. También necesitamos usar DNS para ayudarnos a lidiar con problemas de IP y nombres de dominio.
Equilibradores de carga
Los equilibradores de carga son componentes del sistema que se utilizan principalmente para distribuir solicitudes de servicios del lado del servidor a solicitudes entrantes de los clientes. También pueden reducir la carga y evitar servidores fallidos. Para decirlo sin rodeos, debemos equilibrar las solicitudes que van y vienen entre el servidor y el cliente para evitar que un servidor en particular quede paralizado por una gran cantidad de solicitudes.
Bases de datos
Las bases de datos son componentes del sistema que son bases de datos relacionales que nos permiten almacenar, buscar, modificar y eliminar datos. En los siguientes capítulos, al explicar la base de datos, también explicaré en detalle las situaciones en las que SQL es adecuado y las situaciones en las que NoSQL es adecuado. También dedicaré algo de espacio a explicar cómo optimizar y realizar copias de seguridad.
Tienda de valor clave
Key-Value Store es una base de datos no asociativa que almacena datos en forma de valores clave. Al explicar esta base de datos, también explicaremos el diseño del almacén de valores clave y los conceptos importantes para lograr escalabilidad, persistencia y configurabilidad... etc.
Red de entrega de contenido (CDN)
Una red de entrega de contenido (CDN) es una red de servidores interconectados que acelera la carga de páginas web para aplicaciones con uso intensivo de datos. Cuando un usuario visita un sitio web, los datos del servidor del sitio web deben transmitirse a la computadora del usuario a través de Internet. Si los usuarios se encuentran más lejos del servidor, la carga de archivos grandes (como vídeos o imágenes de sitios web) puede llevar mucho tiempo. Por el contrario, el contenido del sitio web alojado en un servidor CDN está geográficamente cerca de los usuarios y llega más rápido a sus ordenadores. El uso de una CDN puede entregar contenido de manera efectiva a los usuarios finales y al mismo tiempo reducir la latencia y la carga del servidor.
Secuenciador
Entre los componentes del sistema secuenciador, el enfoque principal es cómo generar generadores con ID únicos, y se dedicará algo de espacio a explicar los principios de estos generadores. Entonces, ¿qué es un generador de identificación? Tome el número de usuario como ejemplo: cuando cualquier usuario se registra, le daremos un número de usuario correspondiente. Este número de usuario esperará que sea único. El número de usuario no se repetirá, por lo que no se puede generar aleatoriamente y debe serlo. transparente. Sólo se puede producir después de un procesamiento especial.
Monitoreo de servicio
Los sistemas de monitoreo son muy útiles en sistemas descentralizados porque pueden ayudar a analizar el sistema y notificar a ingenieros, gerentes de proyectos y clientes cuando surgen problemas. El monitoreo generalmente se usa para alerta temprana, de modo que los administradores del sistema puedan tomar medidas con anticipación antes de volver a encontrar problemas para evitar que los pequeños problemas futuros se conviertan en grandes problemas. Recuerde, ningún sistema en el mundo está libre de errores, por lo que necesitamos un monitoreo del servicio que nos ayude a informar problemas.
Almacenamiento en caché distribuido
El llamado caché optimiza el rendimiento almacenando datos temporalmente. En un sistema de caché descentralizado, habrá múltiples servidores de caché que cooperarán con varios tipos de mecanismos de almacenamiento para devolver datos buscados con frecuencia para optimizar el sistema.
Cola de mensajería distribuida
Una cola de sistema distribuido es un diseño de cola compuesto por múltiples servidores, que permite que diferentes partes del sistema se comuniquen y procesen operaciones de manera asincrónica, logrando escalabilidad del sistema de software y mejorando la confiabilidad.
Sistema de publicación-suscripción
Publicar y suscribirse son como el significado literal. Un editor publicará el mensaje y otros receptores del mensaje se denominan suscriptores. Según esta especificación de publicación-suscripción, el editor no necesita preocuparse por quiénes son los suscriptores, siempre y cuando estén a cargo de la publicación, y los suscriptores solo deben estar a cargo de la suscripción.
Limitador de velocidad
El limitador de velocidad se utiliza principalmente para limitar las solicitudes entrantes del servicio. Si ingresa un gran flujo de solicitudes al sistema, podemos usar este componente del sistema para limitar el flujo y procesar las solicitudes lentamente para evitar la parálisis del sistema. También solemos utilizar limitadores de velocidad como capa de defensa para que los servicios del sistema eviten el acceso de alto tráfico intencional o no.
Tienda de burbujas
"Blob" es la abreviatura de objeto binario grande. Es una gran cantidad de datos en formato binario y no necesariamente se ajusta a ningún formato de archivo. Blob Storage almacena estas enormes cantidades de datos en áreas de almacenamiento no jerárquicas llamadas "lagos de datos". En lengua vernácula, este componente se centra en el método de almacenamiento de datos no estructurados, como archivos multimedia y archivos ejecutables binarios.
Búsqueda distribuida
El sistema de búsqueda toma la cadena de consulta del usuario y devuelve contenido relevante en segundos o menos. Cómo devolver de forma eficaz y rápida miles de datos a los usuarios es lo que está haciendo este componente del sistema.
Registro distribuido
El registro es una operación que requiere mucha E/S, mucho tiempo y es lenta. El trabajo principal de este componente es permitir que los servicios del sistema distribuido registren de manera efectiva los registros de ejecución de sus programas. Si se encuentra un error y es necesario corregirlo, también necesitamos usar este componente de grabación para rastrear el proceso del problema.
Programación de tareas distribuidas
La programación de tareas distribuidas se utiliza principalmente para la coordinación entre tareas y recursos. Asigna recursos de manera eficiente a las tareas para cumplir con los requisitos a nivel de tarea y de sistema. En resumen, a través de este componente del sistema, el sistema puede programar y programar recursos y tareas de manera efectiva.
Contadores fragmentados
Como sugiere el nombre, los contadores se utilizan para contar cantidades, como la cantidad de vistas, comentarios y me gusta de los usuarios. Si es un sistema de pequeña escala, se puede completar con un programa simple, pero si es un sistema de gran escala, necesitamos un sistema de conteo distribuido eficiente para manejar millones de solicitudes.
Conclusión
Este artículo se escribió en marzo de 2024, por lo que los componentes del sistema escritos en este artículo se basan en lo que se sabe actualmente. Los próximos artículos también presentarán estos componentes del sistema.
¡Espero que les guste a todos este contenido!
Cita
Artículos relacionados
Cálculo al reverso del sobre – Diseño del sistema 04
Características no funcionales del diseño de software – Diseño de sistemas 03
Aplicación de la abstracción en el diseño de sistemas – Diseño de sistemas 02
Introducción al diseño de sistemas modernos – Diseño de sistemas 01
Experiencia de entrevista de ingeniero de software de Yahoo! 2023