沐鸣娱乐


        软件架构全面详解(万字图文总结)(软件架构百科)

        软件架构全面详解(万字图文总结)(软件架构百科)

        大家好,我是mikechen。

        软件架构对于软件开发是非常重要的,是整个软件的大脑,也是架构的必备技能,下面我就全面来详解软件架构@mikechen

        软件架构

        软件架构是指软件系统的设计方案,它决定了软件系统中各个组件之间的关系、功能分配、和架构方式。

        这个与建筑设计架构类似,建筑设计架构师负责设计建筑物的整体结构、布局和功能分配。

        软件架构全面详解(万字图文总结)(软件架构百科)

        软件架构师,负责设计软件系统的整体组织结构  、模块划分 、和功能分配。

        两者都需要考虑到业务功能、性能、可扩展性、安全性、以及用户体验等方面 。

        软件架构模式

        学习软件架构,可以提高你的系统设计能力 ,了解不同的架构模式和设计原则 ,能够帮助你更好地组织和规划软件系统 。

        下面,我接着详解主流的软件架构模式 :

        1.分层架构

        分层架构是一种常见的软件架构模式 ,它将软件系统划分为:若干个层次,每个层次负责特定的功能。

        如下图所示  :

        软件架构全面详解(万字图文总结)(软件架构百科)

        这种设计方式,使得系统的结构更加清晰,便于开发人员理解和交流。

        主要分为3层:

        • 表示层(Presentation Layer) :也称为用户界面层,负责与用户进行交互,包括 :用户界面的设计 、和实现;
        • 业务逻辑层(Business Logic Layer):也称为服务层 、或应用层 ,负责:处理业务规则、数据处理、和逻辑运算等任务;
        • 数据访问层(Data Access Layer):也称为持久化层,负责 :与数据存储系统进行交互,使业务逻辑层可以专注于业务逻辑的处理。

        总之,分层架构 :是一种常见且灵活的软件架构模式,适用于大多数中小型软件系统的设计和开发 。

        2.事件驱动架构

        事件驱动架构(Event-Driven Architecture,EDA) ,是一种软件架构模式,它基于事件、和消息的传递来实现系统的组织和通信。

        如下图所示 :

        软件架构全面详解(万字图文总结)(软件架构百科)

        主要会包含 ,4大组件:

        1 、事件(Event)

        事件是系统中发生的某种事情 、或状态的表示,例如 :用户操作、系统错误、数据更新等 ,这些都是事件。

        2、发布者(Publisher)

        发布者是产生事件的组件 ,负责:将事件发布到系统中的事件总线、或消息队列中,使订阅者可以接收到这些事件。

        3 、订阅者(Subscriber)

        订阅者是接收事件的组件,负责 :订阅感兴趣的事件,并在事件发生时进行相应的处理。

        4、事件总线(Event Bus

        事件总线:是连接发布者和订阅者的中间件,负责:事件的传递和分发。

        事件驱动架构中事件的发布和订阅是异步的 ,发布者无需等待订阅者的响应即可继续执行,提高了系统的并发性和响应速度。

        事件驱动架构的应用场景:

        1.消息队列

        事件驱动架构,常常与消息队列系统结合使用  ,用于实现可靠的消息传递和异步处理。

        例如:用于构建高可靠性的分布式任务调度系统、日志处理系统…等。

        2.实时通知和推送

        当需要向用户发送实时通知、或推送时 ,事件驱动架构可以帮助实现消息的即时传递和处理。

        例如:社交网络应用中的消息通知、电子商务应用中的订单状态更新通知…等,这些都可以用事件驱动架构来解决。

        3.复杂业务流程

        当需要处理复杂的业务流程 ,事件驱动架构可以帮助实现业务流程的自动化和灵活性,例如:工作流系统…等。

        3.微服务架构

        微服务架构 :是一种将软件系统架构,主要是把单体拆分为多个小型、自治的服务的架构模式。

        每个服务都独立部署 、独立运行 ,并通过轻量级的通信机制进行交互。

        如下图所示:

        软件架构全面详解(万字图文总结)(软件架构百科)

        主要会包含 ,如下6大特点  :

        1、服务拆分

        微服务架构,一般是将传统的单体应用拆分为多个小型的服务 ,并且 ,每个服务负责一个特定的业务功能。

        微服务架构这种拆分,使得每个服务更加专注、易于理解 、和维护 。

        2 、自治性

        每个微服务都是独立部署、独立运行的,具有自己的数据库和代码库 。

        都可以独立进行开发,并且测试、和部署 ,极大的降低了系统之间的耦合度。

        3、技术多样性

        每个微服务可以使用不同的技术栈和编程语言,根据业务需求选择最适合的技术,提高了开发团队的灵活性和自由度。

        比如:你可以使用自己熟悉的Java ,也可以使用自己熟悉的Go 、或者别的开发语言来实现。

        4、可扩展性

        微服务架构:允许每个服务根据需要进行独立的水平扩展,从而提高了系统的整体扩展性 、和性能。

        5、独立部署

        每个微服务都可以独立进行部署 、和升级,无需影响其他服务,使得系统更加灵活 、和可靠 。

        6、团队自治

        每个微服务都有自己的团队负责开发和维护 ,使得团队更加独立、责任更加明确 。

        微服务架构组件 ,如下图所示:

        软件架构全面详解(万字图文总结)(软件架构百科)

        通常包括以下几个核心组件:

        1. 分布式通信:这是最基本的功能,都会涉及到分布式通信,比如 :Dubbo来实现RPC通信等。
        2. 服务注册与发现: 服务注册与发现组件,用于管理和维护微服务的注册信息,常见的有:Consul 、Etcd 、ZooKeeper…等实现方式 。
        3. 负载均衡: 负载均衡组件,用于在多个服务实例之间分配请求,以实现负载均衡和高可用性,比如:可以使用Ribbon来结合使用 。
        4. 消息队列 : 消息队列用于实现微服务之间的异步通信 ,比如:SpringCloudAlibaba微服务,就包含了 :RocketMQ消息队列 。
        5. 分布式追踪 : 分布式追踪组件,用于跟踪、和监控微服务架构中的请求流程和性能指标,帮助发现和解决潜在的性能瓶颈、和故障 。
        6. 配置管理: 配置管理组件:用于集中管理微服务的配置信息,包括 :环境变量、数据库连接 、日志级别……等。

        本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面  。

        软件架构全面详解(万字图文总结)(软件架构百科)

        4 、云原生架构

        云原生架构是一种基于云计算、和容器化技术的应用架构模式。

        云原生架构 ,主要会包含 :Docker容器、K8S容器编排、和服务网格等 。

        如下图所示:

        软件架构全面详解(万字图文总结)(软件架构百科)

        Docker容器

        Docker容器技术使得应用程序及其依赖可以被打包成一个独立的容器 ,包含了:运行时环境、代码、依赖库等 。

        Docker容器就像集装箱一样,可以将应用程序及其所有依赖项打包成一个独立的单元 。

        软件架构全面详解(万字图文总结)(软件架构百科)

        集装箱和Docker容器都提供了一种隔离的环境 ,使得内部的货物、或应用程序不受外部环境的影响 。

        并且 ,集装箱和Docker容器都是相对轻量级的 ,可以在短时间内进行加载、卸载和运输,因此运行效率非常高。

        Kubernetes容器编排

        有了容器来解决部署,后续就需要涉及到 :容器部署后的编排 ,这就是Kubernetes。

        Kubernetes是一个开源的容器编排引擎,是Google开发的,用于自动化部署、扩展和管理容器化应用程序。

        提供了丰富的功能,如 :自动化部署、负载均衡、故障恢复、自动扩展 。。。等,使得应用程序能够更加灵活地运行在各种环境中 。

        服务网格

        服务网格是一种用于管理微服务之间通信的基础设施层,它通过透明地注入网络代理来实现微服务之间的通信 、监控和安全控制。

        服务网格可以帮助开发人员解决微服务架构中的通信问题,提高系统的可观察性 、可靠性和安全性。

        5.云架构

        云计算架构 :是指基于云计算技术实现的系统架构 。

        云架构,主要利用云计算资源 ,比如 :计算 、存储、网络…..等,来构建和部署应用程序 ,提供各种服务和功能。

        整体架构,如下图所示:

        软件架构全面详解(万字图文总结)(软件架构百科)

        主要会包含:

        1、IaaS(基础设施即服务)

        IaaS, 主要提供基础的计算、存储、和网络资源。

        如下图所示:

        软件架构全面详解(万字图文总结)(软件架构百科)

        主要会包含,如下3大组件:

        1. 虚拟机VM) : 虚拟机是IaaS的基础组件,它将物理服务器虚拟化为多个虚拟服务器,每个虚拟机都拥有自己的操作系统 、和应用程序环境 。
        2. 存储服务 : IaaS提供了各种类型的存储服务,包括:块存储 、文件存储和对象存储等,用于存储用户的数据和应用程序。
        3. 网络服务: IaaS提供了网络服务和功能 ,包括:虚拟网络、负载均衡 、防火墙等 ,用于构建和管理用户的网络环境。

        以上

        本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

        软件架构全面详解(万字图文总结)(软件架构百科)

        相关新闻

        联系我们
        联系我们
        分享本页
        返回顶部

          XML地图