架构设计
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
存储模型
存储高性能
单机
集群
高性能架构
1)增加“任务分配器”节点,可以是独立的服务器,也可以是SDK
2)任务分配器需要管理所有的服务器,可以通过配置文件,也可以通过配置服务器(例如ZooKeeper)
3)任务分配器需要根据不同的需求采用不同的算法分配
复杂度分析
任务分配器本身也是集群,需要上一级的分配器。题
任务分配器集群
SDK
服务器
运行形态
配置文件
配置中心
配置获取
随机/轮询/权重
Hash/负载
算法
设计关键点
任务分配
1)增加“任务分解器”节点,可以是独立的服务器,也可以是SDK
2)任务分解器需要管理所有的服务器,可以通过配置文件,也可以通过配置服务器(例如ZooKeeper)
3)需要设计任务拆分的方式,任务分解器需要记录“任务”和“服务器”的映射关系
4)任务分解器需要根据不同的需求采用不同的算法分配
例如读写分离
任务分类
例如数据库分表
任务分段
任务拆分
路由/sharding
任务分解
汇总
计算高可用
命令
数据
文件
复制格式
同步
异步
半同步
多数同步
复制方式
数据复制
决策者高可用实现复杂
独裁式
双主问题,用双通道解决
协商式
脑裂问题,用quotation解决
民生式
状态决策
存储高可用
高可用架构
三高架构设计
1. 业务理解力
2. 技术能力
3. 沟通能力
判断
1. 技术深度
2. 技术宽度
3. 技术广度
拆解
1. 设计理念
2. 说服能力
3. 决断能力
取舍
架构师的三个核心能力
澄清不确定性
识别复杂性
任务
与业务交流
与利益干系人交流
方式
业务架构图
核心场景流程
输出
架构设计前期
设备备选方案
选择备选方案
架构小组讨论
写文档
汇报备选方案
备选方案
方案评估
方案汇报
架构设计中期
细化架构
完善架构
架构宣讲
最终的架构文档
架构设计后期
主要职责
解决什么问题?带来什么价值
业务背景
成本
质量
约束&限制
第一部分
总体架构设计
详细架构设计
第二部分
可测试性设计
可维护性设计
架构质量设计
架构分期落地规划
架构演进规划
第三部分
架构设计文档
架构师职责与输出
技术深度 + 技术宽度 + 技术广度
级别越高,业务理解要求越高
团队管理 + 业务管理
管理
架构师能力模型
架构师能力
1. 数据库添加索引,优化索引;
2. 增加负载均衡服务数量;
对部分业务或者功能进行优化,不影响系统架构。
局部优化
1. 引入消息队列
3. 将 Memcached 改为 Redis
优化系统架构,整体提升质量,架构重构会影响架构的4R定义
架构重构
先局部优化后架构重构
不要试图解决所有的问题,抓住关键问题。
1. 明确目标
要有明确的时间点和里程碑,不要说“慢慢优化”。
2. 明确时间
需要有量化的指标来衡量,不能说“提升xxx质量”。
3. 明确结果
有的放矢
说服业务方和老板
合纵
说服其它团队
连横
合纵连横
问题分类
问题排序
逐一攻破
运筹帷幄
架构重构技巧
业务规模:量变带来质变,一般10倍量级变化才考虑架构演进
业务多样性:业务规模可能没有变化,但是系统支持的业务类型越来越多。
主动演进
业务方向:业务调整方向,例如从图文转为短视频。
被动演进
架构演进模式
预判
布局
快速响应
拿来主义
业务驱动
降成
增效
提质
新瓶旧酒原则
新技术带来典型的价值才考虑演进
价值原则
谈钱,别谈感情(适合成熟技术)
谈竞争对手(适合全新技术)
谈大环境(适合法律政策相关)
技巧
技术驱动
架构演进技巧
架构重构和演进
数据库读写分离
数据库分库分表
数据库分布式事务算法
数据库存储架构
高可用关键指标
主备&主从架构
双机切换架构
集群选举架构
复制架构
本质:通过叠加更多服务器来提升写性能和存储性能
分片架构
本质:通过冗余 IDC 来避免城市级别的灾难,并提供就近访问
分区架构
分片架构和分区架构
估算性能需求
选择存储系统
设计存储方案
存储架构设计
存储架构模式
分布式事务
全局幂等
多版本接口
接口兼容
接口循环调用
4大挑战
微服务架构
有眼光:有深度的业务理解,看到好的机会
擅思考:有足够的技术视野,找到正确的技术和组织设计
有良知:为人正直,做正确的事情
能感召:有技术影响力,能推动正确的设计最终落地,并创造长期增值
架构师素质
架构师的价值创造来自于独立且理性的思考
一个值得尊敬的架构是一个发现过程,考的是高质量的洞察和对真理的逼近
架构师的成长靠科学方法不断验证逼近真理
有眼光+善思考+有良知+能感召
架构师成长
架构设计
理性思维、逻辑至上
领袖:发现真理,引领变革
独立思考
0 条评论
下一页