架构总结记录

1、架构模型解决的共同问题

1.1、高内聚低耦合:解耦外部依赖,分离业务复杂度和技术复杂度等。

1.2、信息孤岛和数据壁垒:单体架构垂直,没有相互调用和复用。逻辑抽象、能力下沉、多系统复用问题

1.3、熵增

2、‌单体架构与分布式架构的核心区别在于

2.1、系统结构与部署

单体架构:一个代码库独立部署,初始开发简单,代码臃肿w维护困难。

分布式架构:拆分为多个独立服务,可独立开发和部署,,

2.2、耦合度

单体架构:耦合程度高,维护困难。

分布式架构:服务拆分降低耦合度,提高开发效率

2.3、扩展性与性能

单体架构:扩展时需整体复制,资源利用率低。

分布式架构:按需扩展特定服务,适合高并发大数据处理。

3、业务系统的复杂性

业务系统的复杂性,可能来自于多个放面:

1、业务复杂性

2、技术复杂性

3、历史负债,代码腐化

无论是哪种情况带来的复杂性,可以从下面几个当面来熟悉复杂的业务系统:

1、梳理架构体系。业务架构、应用架构、数据架构(领域模型)、技术架构、部署架构构成整个系统的架构体系,缺一都会影响对系统的全局性认识个把控。

2、了解业务流程。这个其实在梳理业务系统的时候,核心的业务流程应该就已经覆盖过了。但业务不只有核心流程,一些重要流程也是需要了解和梳理,有助于对系统更细致的了解。

4、屎山代码/技术债

4.1、功能之间隐秘增加的耦合、

4.2、不可避免的代码腐化

不可避免的代码腐化是指在软件开发过程中,由于需求的不断迭代、技术债务的累积以及维护不善等原因,代码质量逐渐下降,变得难以理解和维护的现象。

4.3、熵增

5、业务规模停滞结果(业务复杂度带来的结果)

5.1、不断地拓展产品的边界,创造用户价值

5.2、优化现有系统,提升用户体验。

5.3、好的技术架构和合理的模块划分方案,考虑到可复用性可以减少成本

6、软件开发的增效

6.1、工程效能(业务开发占比和非业务开发占比)

6.2、运营提效

Essential Complexity(本质复杂性)

Accidental Complexity(偶然复杂性)

7、复杂度

7.1、业务复杂度

业务流程复杂,业务模型复杂,业务规则负责

7.2、技术复杂度

高并发,高可用,高性能

8、平台与中台的核心区别

平台侧重技术基础设施的搭建,提供通用能力支撑;

中台则强调业务能力的沉淀复用和新业务孵化,通过组织架构调整实现快速响应和创新支持。‌‌

中台和平台都是某种共性能力,区分两者的重点一是看是否具备业务属性,二是看是否是一种组织。中台是支持多个前台业务且具备业务属性的共性能力组织,平台是支持多个前台或中台业务且不具备业务属性的共性能力。

9、熟悉复杂的业务系统

1、熟悉业务流程

用户是谁,提供的核心功能是什么?产品的边界,产品族有哪些,系统的上下游调用关系。

2、梳理架构体系

业务架构,应用架构,技术架构,数据架构,部署架构。

不可避免的代码腐化是指软件开发过程中,由于需求的不断迭代、技术债务的累积以及架构设计的局限性,代码质量逐渐下降的过程。

当系统变得复杂,功能之间会逐渐产生耦合,它们的关联关系也会变得复杂。这些无意间引入的耦合,会给后续所有的需求开发增加一些额外的负担。

架构设计和模块抽象只能面向当下,它天然是短视的或者说是有局限性的。

腐化除了来自开发者低质量的代码,更核心的是来自于系统架构的腐化。

瀑布式开发:按顺序开发,周期长。

敏捷开发:是部分开发,挑重点开发,因为开发是局部,不能统筹全局,所以当下的架构就会失效,出现代码腐化。需求本身就是零散的,目标也是模糊的。在没有全局视图的情况下,架构自然就是有局限的,只能适应当下。而随着项目的发展,只能适应当下的架构就会失效。

该分离的分离,该提取的提取,进行逻辑抽象,功能封装,能力下沉,多系统复用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/88099.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/88099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python: file: encode: ‘gbk‘ codec can‘t encode character ‘\xe5‘ in position

错误 response requests.get(url, timeout5) # 请求一个网页 with open(‘response.txt’, ‘w’) as file: # 打开一个文件 file.write(response.text) # 向文件写入response 提示错: UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xe5’ in po…

PyTorch深度学习框架60天进阶学习计划 - 第59天模型鲁棒性(一):对抗样本生成机理与PGD攻击详解

PyTorch深度学习框架60天进阶学习计划 - 第59天模型鲁棒性(一):对抗样本生成机理与PGD攻击详解 🎯 第一部分:对抗样本的魔法世界 哈喽各位"反黑客"学员!欢迎来到第59天的课程!今天我…

kibana和elasticsearch安装

1、elasticsearch 6.8.23 安装包下载地址: Elasticsearch 6.8.23 | Elastic 通过网盘分享的文件:elasticsearch-6.8.23.zip 链接: https://pan.baidu.com/s/1D2SrJ8nVBlqC1QNswmMJXg?pwd1234 提取码: 1234 2、kibana 6.8.23 安装包下载地址&#xff…

vue3 el-table row-class-name 行字体颜色失效

在使用 Vue 3 中的 el-table 组件时,如果你遇到了 row-class-name 属性设置的行颜色失效,并被 el-table 的默认样式覆盖的问题,通常是因为 CSS 优先级或者样式冲突导致的。这里有几个方法可以帮助你解决这个问题: 1. 增加 CSS 优…

【跨界新视野】信号处理遇上VR/AR:下一代沉浸体验的核心技术与您的发表蓝海

导语: 元宇宙概念虽经历起伏,但其底层支撑技术——信号处理(Signal Processing)与虚拟/增强现实(VR/AR) 的融合创新正蓬勃发展。从高保真音效定位、脑机接口信号解析,到实时三维重建与交互渲染&…

VMware 2025安装教程(附安装包)VMware 2025下载详细安装图文教程

文章目录 引言第A部分:vmware虚拟机安装包的获取与准备第1步:下载VMware虚拟机安装程序 第B部分:VMware虚拟机安装步骤第3步:启动安装向导第4步:同意软件许可协议第5步:设定程序安装路径第6步:配…

wsl2 用桥接方式连网

安装 Hyper-V windows 家庭版怎么安装 Hyper-V-CSDN博客 用管理员打开 PowerShell 执行 Get-NetAdapter 出系统所有的网卡,记住想要桥接的网卡名称 无线网名称一般为 WLAN,有线网名称一般为 以太网,我的是 以太网 2 执行 Get-VMSwitch 查…

<tauri><threejs><rust><GUI>基于tauri和threejs,实现一个3D图形浏览程序

前言 本专栏是基于rust和tauri,由于tauri是前、后端结合的GUI框架,既可以直接生成包含前端代码的文件,也可以在已有的前端项目上集成tauri框架,将前端页面化为桌面GUI。 发文平台 CSDN 环境配置 系统:windows 10 …

C++基础之指针

文章目录 指针介绍 C指针的定义与用法指针的定义指针的基本操作指针的常见用法1. 动态内存分配2. 指针与数组3. 指针作为函数参数(传址调用)4. 函数返回指针 特殊指针类型智能指针(C11起)2.入门代码3.总结 指针介绍 C指针的定义与…

基于存储过程的MySQL自动化DDL同步系统设计

在现代SaaS与微服务架构中,数据库结构的自动化管理成为保障系统迭代效率与数据一致性的关键一环。本文将围绕如何通过 MySQL 存储过程构建一个自动建表、字段同步、索引维护、错误日志记录于一体的 DDL 自动同步系统,提供一套完整的工程化实现方案。 一…

【cmake学习】添加库文件

文章目录 目的一、原理二、步骤1.修改CMakeList2.main函数如下3.编译运行 目的 上一篇 学习了使用cmake 构建多源文件工程在项目开发工程中,一般都会生成库文件或者调用其它的一些库文件,所以我们要学习一下简单生成和使用库文件这里主要介绍 add_libra…

Docker容器化部署实战:Spring Boot + MySQL + Nginx 一键部署完整指南

📖 前言 容器化技术已经成为现代软件部署的标准实践。作为一名DevOps工程师,我在过去几年中参与了数十个项目的容器化改造,深刻体会到Docker在提升部署效率、环境一致性和运维便利性方面的巨大价值。 今天我将通过一个完整的实战案例,详细展示如何使用Docker部署一个包含…

分布式选举算法<一> Bully算法

分布式选举算法详解:Bully算法 引言 在分布式系统中,节点故障是不可避免的。当主节点(Leader)发生故障时,系统需要快速选举出新的主节点来保证服务的连续性。Bully算法是一种经典的分布式选举算法,以其简…

高效调试 AI 大模型 API:用 Apipost 实现 SSE 流式解析与可视化

借助 AI 大模型的实时接口(如 OpenAI GPT 或其他第三方模型 API),开发者可以通过 SSE(Server-Sent Events)流式处理数据,实时获取模型的逐步输出。这一技术已广泛应用于实时问答、代码生成等领域。本文将基…

【网络产品经营】园区网络

园区网络的产品经营逻辑发生显著变化,从传统的“连接功能”导向转向“业务体验驱动”,并结合行业场景化需求、技术架构革新及智能化能力提升,形成多维度的产品策略升级。 一、技术架构变革:从多层复杂到极简全光 传统架构的瓶颈与…

EasyExcel 4.X 读写数据

文章目录 EasyExcel与SpringBoot集成读数据读取数据的流程定义实体类简单读取自定义监听器 读取指定sheet和所有sheet多行头读取数据格式转换列表数据实体类自定义转换器自定义监听器数据读取 写数据简单数据写出存储到磁盘返回前端下载 写出指定列宽,和数值精度丢失…

JVM内存管理<一>:Java内存异常问题排查

一、 内存溢出问题的排查 1. 使用工具 - jdk自带 jmapvisualvm 2. 流程 堆转储: (1) 方法一:程序运行时,采用:jmap -dump:formatb,filed:\\data\\xxlJob.hprof 23300 进行堆文件的转储 (2) 方法二:在内存溢出的时候…

Android中Glide.with().load().into() 应付面试源码解析

1. with(this):生命周期绑定 Glide.with(Activity/Fragment/Context) 核心机制:创建与 UI 生命周期绑定的 RequestManager 底层实现: 通过 RequestManagerRetriever 获取单例 非 Application 上下文: 向 Activity/Fragment 添加…

#### es相关内容的索引 ####

倒排索引 结构 #### es倒排索引的结构 ####-CSDN博客 向量索引 结构应用 #### es向量检索 的 结构及应用_es 向量 文本检索-CSDN博客 ann算法 ann算法的种类有哪些,之间的区别,各自的适用场景-CSDN博客 地理信息索引 es地理信息索引的类型以及geo_po…

小飞电视:智能电视与移动设备的娱乐新选择

在数字娱乐时代,人们对于影视内容的需求日益增长,不仅追求丰富多样的节目选择,还希望获得便捷、个性化的观看体验。小飞电视正是这样一款专为智能电视和移动设备设计的视频娱乐应用,它凭借海量的影视资源、高清流畅的播放效果以及…