Cinco arquitecturas de software comunes

Inserte la descripción de la imagen aquí

1. ¿Cuál es el concepto de arquitectura de software y la definición de arquitectura?

1. La arquitectura del software es un bosquejo de un sistema.
2. Los objetos descritos por la arquitectura del software son componentes abstractos que constituyen directamente el sistema.
3. La conexión entre los componentes clara y descripción relativamente detallada de la comunicación entre los componentes.
4. En la fase de implementación, estos componentes abstractos se refinan en componentes reales, como una clase u objeto específico.
5. En el campo orientado a objetos, la conexión entre componentes se realiza normalmente mediante interfaces.

2. Los arquitectos se subdividen, que básicamente se pueden dividir en tres categorías:

Arquitecto del sistema: carga del servidor, confiabilidad, escalabilidad, expansión, segmentación de la base de datos, aplicación de caché, etc.
Arquitecto de aplicaciones: entender negocios, clasificar modelos, patrones de diseño, interfaces, interacción de datos, etc.
Arquitecto de negocios: también se pueden llamar expertos en el dominio de negocios, expertos de la industria, consultores de productos y consultores senior. Por lo general, llamamos arquitectos a una combinación de 1 y 2.

Tres, cinco arquitecturas de software comunes

La arquitectura del software es la estructura básica del software.

La arquitectura adecuada es uno de los factores más importantes para el éxito del software. Las grandes empresas de software suelen tener un puesto de arquitecto dedicado (arquitecto), que solo pueden ocupar los programadores senior.

1. Arquitectura en capas

La arquitectura en capas es la arquitectura de software más común y la arquitectura estándar de facto. Si no sabe qué arquitectura usar, úsela.

Esta arquitectura divide el software en varias capas horizontales, cada capa tiene una función y una división del trabajo claras, y no es necesario conocer los detalles de otras capas. Comunicación entre capas a través de interfaces.

Aunque no existe un acuerdo claro sobre cuántas capas debe dividirse el software, la estructura de cuatro capas es la más común.
Inserte la descripción de la imagen aquí

    表现层(presentation):用户界面,负责视觉和用户互动
    业务层(business):实现业务逻辑
    持久层(persistence):提供数据,SQL 语句就放在这一层
    数据库(database) :保存数据

Algunos software agregan una capa de servicio (servicio) entre la capa lógica y la capa de persistencia para proporcionar algunas interfaces comunes requeridas por diferentes lógicas comerciales.

La solicitud del usuario pasará por estas cuatro capas sucesivamente y no se puede omitir ninguna de ellas.
Inserte la descripción de la imagen aquí

ventaja

    结构简单,容易理解和开发
    不同技能的程序员可以分工,负责不同的层,天然适合大多数软件公司的组织架构
    每一层都可以独立测试,其他层的接口通过模拟解决

Desventaja

    一旦环境变化,需要代码调整或增加功能时,通常比较麻烦和费时
    部署比较麻烦,即使只修改一个小地方,往往需要整个软件重新部署,不容易做持续发布
    软件升级时,可能需要整个服务暂停
    扩展性差。用户请求大量增加时,必须依次扩展每一层,由于每一层内部是耦合的,扩展会很困难

Dos arquitecturas impulsadas por eventos

Un evento es una notificación enviada por el software cuando cambia el estado.

La arquitectura impulsada por eventos es una arquitectura de software que se comunica a través de eventos. Se divide en cuatro partes.
Inserte la descripción de la imagen aquí

    事件队列(event queue):接收事件的入口
    分发器(event mediator):将不同的事件分发到不同的业务逻辑单元
    事件通道(event channel):分发器与处理器之间的联系渠道
    事件处理器(event processor):实现业务逻辑,处理完成后会发出事件,触发下一步操作

Para proyectos simples, se pueden integrar colas de eventos, distribuidores y canales de eventos, y todo el software se divide en dos partes: agente de eventos y procesador de eventos.

ventaja

    分布式的异步架构,事件处理器之间高度解耦,软件的扩展性好
    适用性广,各种类型的项目都可以用
    性能较好,因为事件的异步本质,软件不易产生堵塞
    事件处理器可以独立地加载和卸载,容易部署

Desventaja

    涉及异步编程(要考虑远程通信、失去响应等情况),开发相对复杂
    难以支持原子性操作,因为事件通过会涉及多个处理器,很难回滚
    分布式和异步特性导致这个架构较难测试

Arquitectura de tres micronúcleos

La arquitectura de microkernel también se denomina "arquitectura de complemento", que se refiere al núcleo relativamente pequeño del software, y las funciones principales y la lógica empresarial se implementan a través de complementos.

El núcleo generalmente contiene solo las funciones más pequeñas que ejecuta el sistema. Los complementos son independientes entre sí, y la comunicación entre complementos debe reducirse al mínimo para evitar la interdependencia.
Inserte la descripción de la imagen aquí

ventaja

    良好的功能延伸性(extensibility),需要什么功能,开发一个插件即可
    功能之间是隔离的,插件可以独立的加载和卸载,使得它比较容易部署,
    可定制性高,适应不同的开发需要
    可以渐进式地开发,逐步增加功能

Desventaja

    扩展性(scalability)差,内核通常是一个独立单元,不容易做成分布式
    开发难度相对较高,因为涉及到插件与内核的通信,以及内部的插件登记机制

Cuatro, arquitectura de microservicio

La arquitectura de microservicios (arquitectura de microservicios) es una actualización de la arquitectura orientada a servicios (SOA).

Cada servicio es una unidad de implementación independiente (unidad implementada por separado). Estas unidades se distribuyen, desacoplan entre sí y se conectan mediante protocolos de comunicación remota (como REST, SOAP).
Inserte la descripción de la imagen aquí

La arquitectura de microservicio se divide en tres modos de implementación.

    RESTful API 模式:服务通过 API 提供,云服务就属于这一类
    RESTful 应用模式:服务通过传统的网络协议或者应用协议提供,背后通常是一个多功能的应用程序,常见于企业内部
    集中消息模式:采用消息代理(message broker),可以实现消息队列、负载均衡、统一日志和异常处理,缺点是会出现单点失败,消息代理可能要做成集群

ventaja

    扩展性好,各个服务之间低耦合
    容易部署,软件从单一可部署单元,被拆成了多个服务,每个服务都是可部署单元
    容易开发,每个组件都可以进行持续集成式的开发,可以做到实时部署,不间断地升级
    易于测试,可以单独测试每一个服务

Desventaja

    由于强调互相独立和低耦合,服务可能会拆分得很细。这导致系统依赖大量的微服务,变得很凌乱和笨重,性能也会不佳。
    一旦服务之间需要通信(即一个服务要用到另一个服务),整个架构就会变得复杂。典型的例子就是一些通用的 Utility 类,一种解决方案是把它们拷贝到每一个服务中去,用冗余换取架构的简单性。
    分布式的本质使得这种架构很难实现原子性操作,交易回滚会比较困难。

Cinco, arquitectura en la nube

La arquitectura en la nube resuelve principalmente los problemas de escalabilidad y concurrencia, y es la arquitectura más fácil de expandir.

Su alta escalabilidad se debe principalmente al hecho de que no utiliza la base de datos central, sino que copia todos los datos en la memoria para convertirse en una unidad de datos de memoria reproducible. Luego, las capacidades de procesamiento comercial se empaquetan en una unidad de procesamiento (unidad de procesamiento). Cuando aumenta el número de visitas, se crea una nueva unidad de procesamiento; cuando disminuye el número de visitas, se cierra la unidad de procesamiento. Dado que no existe una base de datos central, desaparece el mayor cuello de botella de escalabilidad. Dado que los datos de cada unidad de procesamiento están en la memoria, es mejor realizar la persistencia de datos.

Este modelo se divide principalmente en dos partes: unidad de procesamiento y middleware virtualizado.

    处理单元:实现业务逻辑
    虚拟中间件:负责通信、保持sessions、数据复制、分布式处理、处理单元的部署。

Inserte la descripción de la imagen aquí

El middleware virtual también contiene cuatro componentes.

    消息中间件(Messaging Grid):管理用户请求和session,当一个请求进来以后,决定分配给哪一个处理单元。
    数据中间件(Data Grid):将数据复制到每一个处理单元,即数据同步。保证某个处理单元都得到同样的数据。
    处理中间件(Processing Grid):可选,如果一个请求涉及不同类型的处理单元,该中间件负责协调处理单元
    部署中间件(Deployment Manager):负责处理单元的启动和关闭,监控负载和响应时间,当负载增加,就新启动处理单元,负载减少,就关闭处理单元。

ventaja

    高负载,高扩展性
    动态部署

Desventaja

    实现复杂,成本较高
    主要适合网站类应用,不合适大量数据吞吐的大型数据库应用
    较难测试

Supongo que te gusta

Origin blog.csdn.net/m0_46864744/article/details/111945149
Recomendado
Clasificación