首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

一文搞懂应用架构的3个核心概念

编程知识
2024年08月13日 19:21

如果你是一名业务开发,你可能要说,我整天就是做CRUD(增删改查),哪里需要了解什么应用架构设计?

经常有人说,程序员 35 岁之后很容易陷入瓶颈,被行业淘汰,我觉得原因其实就在此。

有些朋友在写代码的时候,可能没有太多考虑非功能性的需求、扩展性,只是完成功能,觉得能用就好。做事情的时候,也没有长远的规划,只是把眼前的事情做好就满足了。

我面试过很多大龄候选人,他们的简历长达十几页,项目经历有几十个。然而,细看之下,每个项目只是重复堆砌业务逻辑,缺乏难度递进,能力提升不明显。

这样的人,十年的积累可能与一年的积累无异。这样的人,怎么不会被行业淘汰呢?

随着年龄增长,互联网大环境也越来越卷,架构思维和设计知识是必须要掌握的。

应用架构是什么?

应用架构定义了企业中的应用系统的结构和行为。它不仅仅是搭建几个系统那么简单,更重要的是要考虑这些系统之间的关系,以及它们如何协同工作,以满足业务需要。

通过应用架构,我们可以清晰地识别出支持业务和数据处理所需的应用系统,并实现从业务需求到IT系统的转化。

一个优秀的应用架构,能让系统既稳定,又能灵活扩展和升级,快速应对市场需求变化。

应用架构的设计步骤一般包括:

  • 基于业务架构,完成业务到IT系统的转换,识别核心应用服务。
  • 划分应用结构,设计应用结构与业务流程,数据的关系。
  • 设计应用结构间的交互、集成关系。

应用服务

应用服务在应用架构中起着至关重要的作用,它将系统的核心功能打包,并提供给外部使用,可以视为系统对外的“门面”,用户或其他系统通过调用应用服务来实现特定的业务功能。

从外部视角来看,应用服务通常是带有明确的业务含义,比如下单、支付、查询库存等。这些服务的设计必须紧密围绕业务需求,确保能够高效地支撑业务流程的执行。

应用服务的概念源于SOA和微服务架构的兴起。通过将系统功能拆分为多个独立的服务,可以提高系统的可维护性、可扩展性和灵活性。

应用服务的概念源自于面向服务的架构(SOA)和微服务架构的兴起。通过将系统的功能模块化为多个独立的服务,不仅提升了系统的可维护性,还增强了系统的扩展性和灵活性。每个服务可以独立开发、部署和升级,这样即使业务需求发生变化,也只需调整相关服务,而无需大幅修改整个系统。

面向服务的架构最大的价值就在于它的敏捷性和灵活性。

敏捷性体现在服务可以快速调整,独立演化。灵活性则体现在每个服务都有清晰的业务边界,功能内聚性强,能够单独管理生命周期。

通过服务的组合和编排,系统可以快速响应业务的变化,支持复杂的业务流程,构建起一个既稳固又灵活的技术基础设施。

应用结构

应用结构描述了应用系统内部的层次结构和组织关系,它决定了系统的模块化程度,以及后续的开发和维护难度。

在应用结构设计中,我们通常会把系统抽象为不同的层次。比如,将系统划分为系统级、应用级、模块级和代码级。

这种抽象级别的划分帮助我们在不同层面处理复杂性,确保系统结构清晰且易于维护。如图所示:

  • 系统级:关注的是各个系统的整体布局和治理方式,比如各个系统之间的关系,以及它们如何协同工作。
  • 应用级:聚焦于各个应用的整体架构,包括应用与其他应用的交互方式,以及各个应用在整个系统中的角色。
  • 模块级:对应用内部的进一步细化,它涉及到代码的模块化设计、数据和状态的管理等。通过合理的模块划分,可以提高代码的可维护性、可重用性,减少重复劳动。
  • 代码级:关注的是代码本身的结构和实现方式。这一层级的设计直接影响到代码的质量和实现细节。

image.png

抽象级别的存在,主要是为了帮助我们更好地管理系统的复杂性。

1.分解复杂度

如果将所有的细节混杂在一起,整个系统将变得难以理解、维护和扩展。通过设置不同的抽象级别,我们可以将系统的复杂性分解到各个层次,每个层次只需关注特定的功能和职责。

这种分层处理方式使开发人员在专注于系统某一部分时,无需过多关注其他部分的细节,从而大大简化了系统的设计和开发过程。

2.团队协作边界清晰

在大型项目中,通常会有多个团队并行开发。如果系统没有明确的边界,各团队之间很容易产生冲突和重复劳动。

通过清晰的抽象级别划分,不同团队可以专注于系统的不同层次或模块,互不干扰。

3.扩展性强

随着业务需求的变化,系统往往需要不断地扩展和升级。如果系统的架构设计没有合理的抽象级别,扩展和升级就会变得异常困难,甚至可能引发系统的全面重构。

而在有抽象级别的系统中,变更往往只需要聚焦在特定的层次上进行,而不会影响整个系统。例如,一次业务改造只影响模块级别,我们可以在不改变系统整体架构的情况下,替换或新增某个模块,以满足新的业务需求。

应用交互

应用交互是指不同应用系统或组件之间的数据交换和通信方式。

在一个复杂的系统中,各个应用并不是孤立存在的,它们往往需要相互协作,才能完成更复杂的业务流程。

应用交互的设计就是为了确保这些系统和组件能够顺畅地“对话”,实现系统整体功能。

应用交互的形式有多种,包括同步调用、异步消息传递、事件驱动等。每种交互方式都有其特定的应用场景和优缺点。

例如,同步调用通常用于那些需要即时响应的场景,用户在前端提交订单后,系统会立即调用订单服务创建订单,这种方式的优点是可以保证请求的实时性,但也要求系统的各个部分在调用时都能正常工作。

相对的,异步消息传递则适用于那些不需要即时响应的场景,比如订单创建后,订单服务可以将订单创建的消息发送到消息队列,而履约服务可以在适当的时候处理这条消息。这种方式的优势在于能够提高系统的解耦性,避免系统在高负载时,因为同步调用导致性能瓶颈。

通过合理的交互设计,系统中的各个部分能够高效协同,减少耦合度,增加系统的灵活性。同时,良好的交互设计还能显著提升系统的性能和容错能力,即使在大流量访问、业务需求复杂的情况下,也依然保持稳定运行。

写在最后

应用架构定义了企业应用系统的结构和行为,强调系统间的关系和协同工作。

通过应用架构,可以识别支持业务和数据处理的系统,实现从业务需求到IT系统的转化。设计步骤包括业务到IT系统的转换、应用结构设计及其交互关系。

应用服务是系统的核心功能模块,源于SOA和微服务架构,提升了系统的可维护性和灵活性。

应用结构则描述了系统的层次结构,帮助管理复杂性,促进团队协作和系统扩展。应用交互设计确保系统组件间的数据交换和通信方式高效,提升系统性能和容错能力。

From:https://www.cnblogs.com/tangshiye/p/18357630
本文地址: http://shuzixingkong.net/article/1069
0评论
提交 加载更多评论
其他文章 Avnet ZUBoard 1CG开发板上手—深度学习新选择
本文主要介绍了Avnet ZUBoard 1CG开发板的特性、架构、硬件单元等概念,并对如何使用以太网接口和串口连接开发板进行基本介绍,同时辅以两个应用例程演示其功能。
Avnet ZUBoard 1CG开发板上手—深度学习新选择 Avnet ZUBoard 1CG开发板上手—深度学习新选择 Avnet ZUBoard 1CG开发板上手—深度学习新选择
【Azure Developer】使用Python SDK去Azure Container Instance服务的Execute命令的疑问解释
Azure 容器实例(Azure Container Instances,简称 ACI)是一个无服务器容器解决方案,允许用户在 Azure 云环境中运行 Docker 容器,而无需设置虚拟机、集群或编排器。ACI 适用于任何可以在隔离容器中操作的场景,包括事件驱动的应用程序、从容器开发管道快速部署、
【Azure Developer】使用Python SDK去Azure Container Instance服务的Execute命令的疑问解释 【Azure Developer】使用Python SDK去Azure Container Instance服务的Execute命令的疑问解释 【Azure Developer】使用Python SDK去Azure Container Instance服务的Execute命令的疑问解释
一键搞定!轻松更改远程桌面3389端口,提升安全性!
哈喽大家好,欢迎来到虚拟化时代君(XNHCYL)。 “ 大家好,我是虚拟化时代君,一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…(每天更新不间断,福利不见不散) 第一章、3389的作用 修改微软的3389端口(远程桌面协议,RDP的默认端口)是一个常见的安全
.NET周刊【8月第1期 2024-08-04】
国内文章 EF Core性能优化技巧 https://www.cnblogs.com/baibaomen-org/p/18338447 这篇文章介绍了在代码层面上优化EF Core实例池和拆分查询的方法。首先,文章建议使用DbContext实例池来重复利用实例,避免资源浪费,并提供相关使用示例。其次
.NET周刊【8月第1期 2024-08-04】 .NET周刊【8月第1期 2024-08-04】 .NET周刊【8月第1期 2024-08-04】
秒懂全文:盘点13个各具特色的AI智能阅读助手工具
在当今信息爆炸的时代,AI阅读工具正在革新我们的阅读方式,成为了提高效率、优化阅读体验的关键。 这类AI阅读辅助工具,只需要上传文件或者输入链接,便可以直接以聊天对话的形式进行一键总结和智能问答,满足用户AI PDF 阅读、AI文档问答分析、AI音视频总结等多种实用需求,高效提炼信息要点精华,建立
秒懂全文:盘点13个各具特色的AI智能阅读助手工具 秒懂全文:盘点13个各具特色的AI智能阅读助手工具 秒懂全文:盘点13个各具特色的AI智能阅读助手工具
新版的Django Docker部署方案,多阶段构建、自动处理前端依赖
前言 前几天的文章中,我们已经把使用 pdm 的项目用 docker 搞定了,那么下一步就是把完整的 DjangoStarter v3 版本用 docker 部署。 现在不像之前那么简单直接一把梭了,因为项目用了 npm, gulp 之类的工具来管理前端依赖,又使用 pdm 管理 python 依赖
精读代码,实战进阶&实践Task2
背景 从零入门AI生图原理&实践 是 Datawhale 2024 年 AI 夏令营第四期的学习活动(“AIGC”方向),基于魔搭社区“可图Kolors-LoRA风格故事挑战赛”开展的实践学习—— 适合想 入门并实践 AIGC文生图、工作流搭建、LoRA微调 的学习者参与 学习内容提要:从文
精读代码,实战进阶&实践Task2 精读代码,实战进阶&实践Task2 精读代码,实战进阶&实践Task2
万字长文带你了解Java日志框架使用Java日志框架
大家好,我是晓凡 一、日志概念 日志的重要性不用我多说了,日志,简单来说就是记录。 用来记录程序运行时发生的事情。比如,程序启动了、执行了某个操作、遇到了问题等等,这些都可以通过日志记录下来。 想象一下,你开了一家店,每天的营业额、顾客的反馈、商品的进出、库存等等,你都会记录下来。这就像是程序的日志
万字长文带你了解Java日志框架使用Java日志框架 万字长文带你了解Java日志框架使用Java日志框架 万字长文带你了解Java日志框架使用Java日志框架