架构设计方法初探

架构设计方法(4A架构)-业务架构 依据企业架构标准组织The Open Group的定义,企业架构描述构成企业的要素和要素之间关系,以及用于管控架构设计和演进的原则和指引。1、价值流是一组端到端的活动集合,能够为外部客户或内部用户创造一个有价值的结果。2、有别于流程,主要描述企业为他的客户创造什么价值以及如何创造价值。1、业务能力定义是业务自身拥有或者从外部获取的特定能力,以实现某一特定目的和结果。2、业务能力的输出本质上是从不同维度对TOBE业务能力的构建设计,需要参考行业趋势和领先实践。 阅读详情

点击上方“芋道源码”,选择“置顶公众号”

技术文章第一时间送达!

源码精品专栏

 

来源: https://www.jianshu.com/p/e30327c9baf3

最近学习了阿里资深技术专家李运华的架构设计教程,颇有收获,总结一下。

1 基本概念和目的

架构设计的基本概念和目的

架构设计的目的是为了解决系统复杂度带来的问题,并不是要面面俱到,不需要每个架构都具备高性能、高可用、高扩展等特点,而是要识别出实际业务实际情况的复杂点,然后有有针对性地解决问题,即:有的放矢,而不是贪大求全。 在实际情况中,不一定每个系统都要做架构设计,需要结合实际情况。有时候最简单的设计开发效率反而是最高的,架构设计毕竟要投入时间和人力,这部分投入如果用来尽早编码,项目也许会更快。

2 架构设计复杂度来源

高性能

高性能

高可用

高可用

可扩展性

可扩展性

低成本、安全、规模

低成本、安全、规模

3 架构设计三原则

架构设计三原则

合适原则

GFS为何在Google诞生,而不是在Microsoft诞生,其中Google有那么庞大的数据是一个主要因素,而不是因为Google的工程师比Microsoft的工程师更加聪明。

真正优秀的架构都是企业在当前人力、条件、业务等各方面约束条件下设计出来的,能够合理地将资源整合一起并发挥出最大功效,并且能迅速落地。这也是很多BAT出来的架构师到了小公司或者创业团队反而做不出成绩的原因,因为没有大公司的平台、资源、积累,只是生搬硬套大公司的做法,失败的效率非常高。

简单原则

软件领域的复杂性

无论是结构的复杂性还是逻辑的复杂性,都会存在各种问题,所以架构设计时如果简单方案和复杂的方案都可以满足需求,最好选择简单的方案。《UNIX编程艺术》总结的KISS(Keep It Simple,Stupid!)原则一样适用于架构设计。

演化原则

对于软件系统来说,变化才是主题。软件架构需要根据业务的发展而不断变化。 如果没有把握“软件架构需要根据业务发展不断变化”这个本质,在做架构设计的时候就很容易陷入一个误区:试图一步到位设计一个软件架构,期望不管业务如何变化,架构都稳如磐石。

为了实现这样的目标,要么照搬业界大公司公开发表的方案;要么投入庞大的资源和时间来做各种各样的预测、分析、设计。无论哪种做法,后果都很明显:投入巨大,落地遥遥无期。更让人沮丧的是,就算跌跌撞撞拼死拼活终于落地,却发现很多预测和分析都是不靠谱的。

实践中,架构师要提醒自己不要贪大求全,遵循演化优于一步到位的原则,因为业务的发展和变化总是很快的,无论多牛的团队,都不可能完美预测所有的业务发展和变化路径。实践中可以参考如下建议:

  • 首先,设计出来的架构要满足当时的业务需要。

  • 其次,架构要不断地在实际应用过程中迭代,保留优秀的设计,修复有缺陷的设计,改正错误的设计,去掉无用的设计,使得架构逐渐完善。

  • 第三,当业务发生变化时,架构要扩展、重构,甚至重写;代码也许会重写,但有价值的经验、教训、逻辑、设计等却可以在新架构中延续。

4 架构设计的流程

架构设计的流程

参考资料:

从0开始学架构——李运华

架构蓝图--软件架构 "4+1" 视图模型



如果你对 Dubbo / Netty 等等源码与原理感兴趣,欢迎加入我的知识星球一起交流。长按下方二维码噢:


目前在知识星球更新了《Dubbo 源码解析》目录如下:

01. 调试环境搭建
02. 项目结构一览
03. 配置 Configuration
04. 核心流程一览

05. 拓展机制 SPI

06. 线程池

07. 服务暴露 Export

08. 服务引用 Refer

09. 注册中心 Registry

10. 动态编译 Compile

11. 动态代理 Proxy

12. 服务调用 Invoke

13. 调用特性 

14. 过滤器 Filter

15. NIO 服务器

16. P2P 服务器

17. HTTP 服务器

18. 序列化 Serialization

19. 集群容错 Cluster

20. 优雅停机

21. 日志适配

22. 状态检查

23. 监控中心 Monitor

24. 管理中心 Admin

25. 运维命令 QOS

26. 链路追踪 Tracing

... 一共 69+ 篇

目前在知识星球更新了《Netty 源码解析》目录如下:

01. 调试环境搭建
02. NIO 基础
03. Netty 简介
04. 启动 Bootstrap

05. 事件轮询 EventLoop

06. 通道管道 ChannelPipeline

07. 通道 Channel

08. 字节缓冲区 ByteBuf

09. 通道处理器 ChannelHandler

10. 编解码 Codec

11. 工具类 Util

... 一共 61+ 篇

目前在知识星球更新了《数据库实体设计》目录如下:

01. 商品模块
02. 交易模块
03. 营销模块
04. 公用模块

... 一共 17+ 篇

源码不易↓↓↓↓↓

点赞支持老艿艿↓↓

Transformer从菜鸟到新手(一) 从本文开始回顾一下Transformer的原理与实现细节,包括分词算法BPE的实现。最终利用从零实现的Transformer模型进行英中翻译。 阅读详情

相关推荐

LSTM量化选股实战:从数据清洗到回测归因的工程化闭环

LSTM(长短期记忆网络)是一种专为建模长程依赖而设计的循环神经网络,其门控机制能有效应对金融时序数据的非线性、高噪声与动态演化特性。相比传统统计模型或简单RNN,LSTM在股价趋势建模中展现出更强的鲁棒性与泛化能力,尤其适合处理日频多因子时序信号。其技术价值不仅在于提升预测精度,更在于支撑可归因、可审计的量化策略工程实践——从特征构建、标签定义到滚动回测,每一步都需严防未来信息泄露与过拟合风险。典型应用场景包括A股多因子选股、行业轮动信号生成及Alpha组合优化。本文聚焦LSTM在真实量化场景中的落地难点

weixin_33158887的博客 400

企业架构之业务架构

需求成熟度:对未来感知成果的使用满意度;如果早期没有共识,那么后续开发的满意度是没有基础的。万般需求皆业务,万般业务皆流程;管理无止境,流程出效益。根据TOGAF的ADM开发方法,Phas...

Java架构技术 702

在Cursor中集成Ollama与Qwen2.5‑Coder:零成本本地AI开发环境搭建

本文详细介绍了如何零成本搭建本地AI开发环境,通过将Cursor IDE与本地运行的Ollama及Qwen2.5-Coder模型集成,实现数据不出本地的智能编程辅助。教程涵盖Ollama安装、模型拉取、ngrok内网穿透配置及Cursor设置等核心步骤,并提供了实战测试与常见问题排错指南,为注重隐私与成本的开发者提供安全高效的解决方案。

weixin_29296241的博客 1075

如何做好架构设计

我在这重新定义架构(见仁见智):软件架构指软件系统顶层结构设计。架构是经过系统性地思考,权衡利弊之后在现有资源约束下的最合理决策,最终明确的系统骨架:包括子系统、模块、组件,以及他们之间协作关系、约束规范、指导原则,并由它来指导系统各方面的设计和指导团队中的每个人思想层面上的一致。

顺其自然~专栏 1453

流媒体弱网优化之路(NACK)——纯NACK方案的优化探索

流媒体学习之路(NACK)——纯NACK方案的最高性能 文章目录流媒体学习之路(NACK)——纯NACK方案的最高性能一、NACK简介二、Nack的理解2.1 一种补救策略2.2 什么时候要?2.3 要多少?2.4 怎么要?三、计算分析3.1 rtt强相关3.2 补包次数计算3.3 Nack的定时发送3.4 nack重传限制四、实验   近期在针对纯丢包场景做一些简单的探索实验,一个让我困扰的问题就是:不使用FEC而只是通过纯NACK进行补偿,到底能在实验环境下抵抗多少的丢包呢?每一次丢包补偿的最大时长

qw225967的博客 1万+

单相PWM整流器四象限运行原理

简述单相PWM整流器四象限运行原理。

m0_75208156的博客 8306

架构师之路四架构师常用的架构设计方法

第一种:TOGAF[开放组架构设计]此种架构设计方法适用于体系庞大且复杂的项目,比如航空航天,中化盈科等第二种: 五视图法当前互联网多使用五视图法,具体是哪五种视图,包括:逻辑视图,开发视图,运行视图,物理视图,数据视图逻辑视图: 逻辑功能,关注功能需求开发视图: 开发进程,关注开发质量,jar,或者是war包等运行视图: 运行过程,关注开发中的进程,线程,通信等功能物理视图:包括安装与部署,比如虚拟机配置,云桌面等信息。...

无名 482

手把手教你为RK3588开发板适配RTL8211F网卡:设备树配置与PHY驱动匹配全流程

本文详细介绍了在RK3588开发板上适配RTL8211F千兆以太网PHY芯片的全流程,包括硬件原理图确认、设备树配置与PHY驱动匹配。通过实战案例和调试技巧,帮助开发者解决常见问题并优化网络性能,适用于嵌入式Linux开发中的Ethernet网络功能实现。

weixin_29184075的博客 527

船舶航向自适应控制:切线型障碍Lyapunov函数与协同制导

自适应控制作为现代控制理论的重要分支,通过实时调整控制器参数来应对系统不确定性,在工业自动化领域具有广泛应用。其核心原理是构建Lyapunov函数保证系统稳定性,并结合参数估计技术实现动态调节。在船舶运动控制中,传统PID难以处理强非线性和环境干扰,而基于障碍Lyapunov函数的自适应方案能有效解决这一问题。切线型障碍函数通过改进的数学构造,避免了控制量突变问题,配合协同制导机制可优化舵效与推进力的动态配比。该技术特别适用于大型船舶自动舵系统改造,实测显示能降低62%超调量和15%转向能耗,在PLC/DC

weixin_34203832的博客 249

【NLG】(六)文本生成评价指标—— ROUGE原理及代码示例

前奏: 【NLG】(一)文本生成评价指标——BLEU原理及代码示例 【NLG】(二)文本生成评价指标—— METEOR原理及代码示例 【NLG】(三)文本生成评价指标—— ENTROPY原理及代码示例 【NLG】(四)文本生成评价指标—— diversity原理及代码示例 【NLG】(五)文本生成评价指标—— kl_divergence原理及代码示例 1.ROUGE原理 2.优缺点 3.如何算ROUGE ...

凝眸伏笔的博客 1万+

量化交易 米筐 多因子合成(回测中使用)

多因子合成 1、因子合成 将一些相关(高、低)的因子合成一个因子 方法: 使用PCA方式(使用于较强相关性) 2、核心代码 将因子 inc_revenue_ttm 和 operating_revenue_growth_ratio_ttm 合成为一个因子 inc_operating from sklearn.decomposition import PCA pca = PCA(n_components=1) # 因子合并 fund['inc_operating'] = pca.fit_transform(fu

廷益_飞鸟的博客 1064

RuoYi Cloud项目解读【二、项目上手技巧】

这些项目可能是由个人、小团队或组织开发,其开发方式和治理模式可能与传统的标准开源项目有所不同。标准开源项目,都是有一个README.md这种文档,这个文档是项目的简介,一般会用大白话方式讲清楚项目背景,项目技术点,项目具体使用等。没有使用Maven/Gradle传统项目,比如Java SE/JavaWeb项目,Jar依赖一般放置在lib文件夹,优先找它。没有文档的帮助,只能借助代码结构名称大体推测项目可能具有模块,拥有的功能。要求:结合技术栈,想象一下代码可能的结构,后续项目解读时有参照蓝本。

DolphinHome的博客 1213

selenium绕过检测,规避检测

现在不少大网站有对selenium采取了监测机制。比如正常情况下我们用浏览器访问淘宝等网站的 window.navigator.webdriver的值为 undefined或者为false。而使用selenium访问则该值为true。那么如何解决这个问题呢?我们正常浏览器登录查看,window.navigator.webdriver的值为false我们通过selenium打开的网页,测试,可见window.navigator.webdriver的值为true。

景天科技苑 1万+

Unity与C#游戏开发:从核心技巧到性能优化的实战指南

在游戏开发领域,Unity引擎与C#语言的组合因其在性能、开发效率和生态成熟度之间的平衡而广受欢迎。C#作为一门强类型、面向对象的现代编程语言,语法清晰且学习曲线平缓,配合强大的IDE工具,能显著提升开发体验。Unity引擎则通过封装底层复杂的图形渲染、物理模拟等细节,提供了直观的编辑器与组件系统,使开发者能够高效构建游戏逻辑。这种协作机制的核心价值在于其基于组件的架构,极大地促进了代码的复用与解耦,对于构建和维护中大型项目至关重要。在实际应用中,开发者常需处理如“unity程序打开黑屏无响应”等常见问题,

weixin_30540691的博客 325

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Dify实时翻译系统架构设计初探

借助Dify平台,结合RAG与AI Agent技术,可快速搭建高效、可控的多语言实时翻译系统。通过可视化编排,实现术语统一、上下文理解与流程自动化,显著降低开发门槛与维护成本,让非技术人员也能参与AI应用构建。

weixin_31961675的博客 794

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

架构设计文档_老周讲堂:软件系统架构设计

架构设计初探盖楼什么最重要?设计图纸!盖楼从什么开始?设计图纸!生产汽车需要图纸、制造机械需要图纸......图纸无处不在!同样,系统架构如图纸,复杂、大型软件系统没有架构设计就像盖写字楼没有设计图纸一样!如何做好一个复杂工程的架构设计,特别是一个陌生领域的架构设计,只需回答三个问题,即:Who、What、How。第一,Who,为谁设计?架构设计的终极目标是在复杂局面中绘制一组大家看得懂...

weixin_39752157的博客 299

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

AI智能体架构设计演进之路:从初探到成熟的三阶段!

企业AI智能体架构将经历三个演进阶段:1)单一智能体处理专业任务;2)多智能体协作完成复杂业务流程;3)跨组织智能体协作实现商业生态协同。每个阶段都需建立信任机制和责任框架,包括精确性控制、决策透明度、安全协议等核心要素。随着技术发展,企业需要构建新型AI治理体系,平衡自主性与可控性,最终实现人机协同的智能商业新范式。

m0_63171455的博客 864
上一篇: 算法与面试之-如何准备算法面试
下一篇: 浅谈高性能数据库集群 —— 分库分表
公众号-芋道源码
博客等级 码龄10年 1636粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值