架构设计
2024-03-22 09:56:46 0 举报
AI智能生成
架构设计
作者其他创作
大纲/内容
架构设计原则
4R架构
定义
顶层结构
架构是分层的
组成角色
系统包含哪些角色
角色关系
角色之间的关系
运作规则
角色如何协作完成系统功能
应用
架构师职责
确定层级
拆解角色
定义关系
设计规则
架构文档内容
指明层级
描述角色
定义关系
展现规则
如何学习架构
自顶向下学习
角色有哪些
角色关系如何
运作规则是什么
面向复杂度的架构设计
本质
架构设计是为了降低软件系统的复杂度
思路
通过分析系统需求找到系统复杂的地方,然后设计方案
模式
复杂度来源:高性能、高可用、可扩展、安全、成本……
套路
分库分表、缓存、集群、分片、微服务、DDD、异地多活……
架构设计三原则
定义
合适原则
资源
时间
业务
简单原则
可靠性
越复杂越不可靠
可扩展
越复杂越难扩展
故障处理效率
越复杂越难处理
演化原则
创造
满足当前业务需求
迭代优化
修、改、去、留
重构、重写
量变引起质变
应用
1. 设计出来的架构要满足当时的业务需要,符合团队和技术的能力水平(合适原则)
2. 先按照简单的方式来设计架构,然后不断地在实际应用过程中迭代优化(简单原则)
3.当业务发生变化时,架构要扩展、重构,甚至重写(演化原则)
判断维度
业务
业务当前的量级
业务的发展速度
业务的发展形态
团队
团队规模
团队的能力水平
投入的资源
技术
已有的技术体系
当前的技术能力
技术成熟度
三高架构设计
可扩展架构
可扩展
可扩展
系统适应变化的能力,包含可理解和可复用两个部分
可伸缩
系统通过添加更多资源来提升性能的能力
高性能架构
单机
计算高性能
进程模型
多进程
C/C++,进程间通信
多线程
Java,线程互斥(锁)
网络模型
PPC/TPC
常量连接,海量请求
Reactor
海量连接,海量请求
缓存模型
本地缓存
EHCache/OSCache
独立缓存
Redis/MC
存储高性能
存储模型
B+tree
读多写少,可变
LSM
写多读少,不可变
集群
计算高性能
存储高性能
高可用架构
计算高可用
任务分解
存储高可用
数据复制
复制格式
命令
数据
文件
复制方式
同步
异步
半同步
多数同步
状态决策
独裁式
决策者高可用实现复杂
协商式
双主问题,用双通道解决
民生式
脑裂问题,用quotation解决
架构师职责与输出
架构师的三个核心能力
判断
1. 业务理解力
2. 技术能力
3. 沟通能力
拆解
1. 技术深度
2. 技术宽度
3. 技术广度
取舍
1. 设计理念
2. 说服能力
3. 决断能力
主要职责
架构设计前期
任务
澄清不确定性
识别复杂性
方式
与业务交流
与利益干系人交流
输出
业务架构图
核心场景流程
架构设计中期
任务
设备备选方案
选择备选方案
方式
架构小组讨论
写文档
汇报备选方案
输出
备选方案
方案评估
方案汇报
架构设计后期
任务
细化架构
完善架构
方式
写文档
架构宣讲
输出
最终的架构文档
架构设计文档
第一部分
业务背景
解决什么问题?带来什么价值
约束&限制
成本
时间
技术
质量
第二部分
总体架构设计
详细架构设计
第三部分
架构质量设计
可测试性设计
可维护性设计
架构演进规划
架构分期落地规划
架构师能力
架构师能力模型
技术
技术深度 + 技术宽度 + 技术广度
业务
级别越高,业务理解要求越高
管理
团队管理 + 业务管理
架构重构和演进
架构重构技巧
先局部优化后架构重构
局部优化
对部分业务或者功能进行优化,不影响系统架构。
1. 数据库添加索引,优化索引;
2. 增加负载均衡服务数量;
架构重构
优化系统架构,整体提升质量,架构重构会影响架构的4R定义
1. 引入消息队列
3. 将 Memcached 改为 Redis
有的放矢
1. 明确目标
不要试图解决所有的问题,抓住关键问题。
2. 明确时间
要有明确的时间点和里程碑,不要说“慢慢优化”。
3. 明确结果
需要有量化的指标来衡量,不能说“提升xxx质量”。
合纵连横
合纵
说服业务方和老板
连横
说服其它团队
运筹帷幄
问题分类
问题排序
逐一攻破
架构演进技巧
架构演进模式
主动演进
业务规模:量变带来质变,一般10倍量级变化才考虑架构演进
业务多样性:业务规模可能没有变化,但是系统支持的业务类型越来越多。
被动演进
业务方向:业务调整方向,例如从图文转为短视频。
业务驱动
主动演进
预判
布局
被动演进
快速响应
拿来主义
技术驱动
新瓶旧酒原则
降成
增效
提质
价值原则
新技术带来典型的价值才考虑演进
技巧
谈钱,别谈感情(适合成熟技术)
谈竞争对手(适合全新技术)
谈大环境(适合法律政策相关)
存储架构模式
数据库存储架构
数据库读写分离
数据库分库分表
数据库分布式事务算法
复制架构
高可用关键指标
主备&主从架构
双机切换架构
集群选举架构
分片架构和分区架构
分片架构
本质:通过叠加更多服务器来提升写性能和存储性能
分区架构
本质:通过冗余 IDC 来避免城市级别的灾难,并提供就近访问
存储架构设计
估算性能需求
选择存储系统
设计存储方案
微服务架构
4大挑战
分布式事务
全局幂等
接口兼容
多版本接口
接口循环调用
架构师素质
有眼光:有深度的业务理解,看到好的机会
擅思考:有足够的技术视野,找到正确的技术和组织设计
有良知:为人正直,做正确的事情
能感召:有技术影响力,能推动正确的设计最终落地,并创造长期增值
架构师成长
有眼光+善思考+有良知+能感召
架构师的价值创造来自于独立且理性的思考
一个值得尊敬的架构是一个发现过程,考的是高质量的洞察和对真理的逼近
架构师的成长靠科学方法不断验证逼近真理
0 条评论
下一页